Skip to main content
PulseScanner.io

Address

0xc9de1037206eea07fdeb010f144b87ccd0b8674b
Current Holdings
$0.00
TXs sent
not counted
First Active
2026-06-06
block 26,716,931
Last Active
102 days ago
block 26,719,793
Funded By
not identified

Net worth historyi

No net-worth snapshots recorded yet
exact matchGoblinDegenzsolc 0.8.34+commit.80d5c536runtime exact · creation exact
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract GoblinDegenz {
    string public name = "Goblin Degenz";
    string public symbol = "GODE";
    string private _baseTokenURI;
    string private _contractURI;
    uint256 private _nextTokenId;
    address private _owner;
    address private _royaltyReceiver;
    uint96  private _royaltyBps;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    modifier onlyOwner() { require(msg.sender == _owner, "Not owner"); _; }
    constructor(string memory baseURI, string memory contractURI_, address royaltyReceiver, uint96 royaltyBps_) {
        _owner           = msg.sender;
        _baseTokenURI    = baseURI;
        _contractURI     = contractURI_;
        _royaltyReceiver = royaltyReceiver;
        _royaltyBps      = royaltyBps_;
    }
    function contractURI() external view returns (string memory) { return _contractURI; }
    function setContractURI(string memory uri) external onlyOwner { _contractURI = uri; }
    function royaltyInfo(uint256, uint256 salePrice) external view returns (address, uint256) {
        return (_royaltyReceiver, (salePrice * _royaltyBps) / 10000);
    }
    function setRoyalty(address receiver, uint96 bps) external onlyOwner { _royaltyReceiver = receiver; _royaltyBps = bps; }
    function supportsInterface(bytes4 id) public pure returns (bool) {
        return id == 0x80ac58cd || id == 0x5b5e139f || id == 0x01ffc9a7 || id == 0x2a55205a;
    }
    function tokenURI(uint256 tokenId) public view returns (string memory) {
        require(_owners[tokenId] != address(0), "Token does not exist");
        return string(abi.encodePacked(_baseTokenURI, _toString(tokenId), ".json"));
    }
    function setBaseURI(string memory baseURI) external onlyOwner { _baseTokenURI = baseURI; }
    function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; }
    function ownerOf(uint256 tokenId) public view returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "Token does not exist");
        return owner;
    }
    function approve(address to, uint256 tokenId) public {
        require(msg.sender == ownerOf(tokenId), "Not token owner");
        _tokenApprovals[tokenId] = to; emit Approval(msg.sender, to, tokenId);
    }
    function getApproved(uint256 tokenId) public view returns (address) { return _tokenApprovals[tokenId]; }
    function setApprovalForAll(address operator, bool approved) public {
        _operatorApprovals[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved);
    }
    function isApprovedForAll(address owner, address operator) public view returns (bool) { return _operatorApprovals[owner][operator]; }
    function transferFrom(address from, address to, uint256 tokenId) public {
        require(ownerOf(tokenId) == from, "Wrong owner");
        require(to != address(0), "Zero address");
        require(msg.sender == from || msg.sender == getApproved(tokenId) || isApprovedForAll(from, msg.sender), "Not approved");
        _balances[from]--; _balances[to]++; _owners[tokenId] = to;
        delete _tokenApprovals[tokenId]; emit Transfer(from, to, tokenId);
    }
    function safeTransferFrom(address from, address to, uint256 tokenId) public { transferFrom(from, to, tokenId); }
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory) public { transferFrom(from, to, tokenId); }
    function batchMint(address to, uint256 quantity) external onlyOwner {
        for (uint256 i = 0; i < quantity; i++) {
            uint256 tokenId = _nextTokenId++;
            _owners[tokenId] = to; _balances[to]++;
            emit Transfer(address(0), to, tokenId);
        }
    }
    function totalSupply() external view returns (uint256) { return _nextTokenId; }
    function contractOwner() external view returns (address) { return _owner; }
    function _toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) return "0";
        uint256 temp = value; uint256 digits;
        while (temp != 0) { digits++; temp /= 10; }
        bytes memory buffer = new bytes(digits);
        while (value != 0) { digits--; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; }
        return string(buffer);
    }
}