ETH Price: $2,885.16 (+7.23%)
 

Overview

TokenID

6476

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
VoterID

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
File 1 of 3 : VoterID.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity 0.8.9;

import "IERC721Receiver.sol";
import "IVoterID.sol";

// ERC 721
contract VoterID is IVoterID {

    mapping (uint => address) public owners;
    mapping (address => uint) public balances;

    // Mapping from owner to operator approvals
    mapping (address => mapping (address => bool)) public operatorApprovals;
    mapping (uint => address) public tokenApprovals;

    // owner -> array of tokens owned...  ownershipMap[owner][index] = tokenNumber
    mapping (address => mapping (uint => uint)) public ownershipMap;

    // array of all tokens in existence #enumeration
    mapping (uint => uint) public allTokens;

    // tokenId -> uri ... typically ipfs://...
    mapping (uint => string) public uriMap;

    // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
    // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`
    bytes4 private constant ERC721_RECEIVED = 0x150b7a02;

    /*
     *     bytes4(keccak256('balanceOf(address)')) == 0x70a08231
     *     bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e
     *     bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3
     *     bytes4(keccak256('getApproved(uint256)')) == 0x081812fc
     *     bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465
     *     bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5
     *     bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd
     *     bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e
     *     bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde
     *
     *     => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^
     *        0xa22cb465 ^ 0xe985e9c5 ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd
     */
    bytes4 private constant INTERFACE_ID_ERC721 = 0x80ac58cd;

    /*
     * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7
     */
    bytes4 private constant INTERFACE_ID_ERC165 = 0x01ffc9a7;

    bytes4 private constant INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;
    bytes4 private constant INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;
    string _name;
    string _symbol;

    uint public numIdentities = 0;

    // owner is a special name in the OpenZeppelin standard that opensea annoyingly expects for their management page
    address public _owner_;
    // minter has the sole, permanent authority to mint identities, in practice this will be a contract
    address public _minter;

    event OwnerUpdated(address oldOwner, address newOwner);
    event IdentityCreated(address indexed owner, uint indexed token);


    /// @dev This emits when ownership of any NFT changes by any mechanism.
    ///  This event emits when NFTs are created (`from` == 0) and destroyed
    ///  (`to` == 0). Exception: during contract creation, any number of NFTs
    ///  may be created and assigned without emitting Transfer. At the time of
    ///  any transfer, the approved address for that NFT (if any) is reset to none.
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /// @dev This emits when the approved address for an NFT is changed or
    ///  reaffirmed. The zero address indicates there is no approved address.
    ///  When a Transfer event emits, this also indicates that the approved
    ///  address for that NFT (if any) is reset to none.
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /// @dev This emits when an operator is enabled or disabled for an owner.
    ///  The operator can manage all NFTs of the owner.
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    modifier ownerOnly() {
        require (msg.sender == _owner_, 'Identity: Only owner may call this');
        _;
    }

    constructor(address ooner, address minter, string memory nomen, string memory symbowl) {
        _owner_ = ooner;
        // we set it here with no resetting allowed so we cannot commit to NFTs and then reset
        _minter = minter;
        _name = nomen;
        _symbol = symbowl;
    }

    // this function creates an identity for free. Only minter can call it.
    function createIdentityFor(address thisOwner, uint thisToken, string memory uri) public override {
        require(msg.sender == _minter, 'Only minter may create identity');
        require(owners[thisToken] == address(0), 'Token already exists');

        // for getTokenByIndex below, 0 based index so we do it before incrementing numIdentities
        allTokens[numIdentities] = thisToken;

        // increment the number of identities
        numIdentities = numIdentities + 1;

        // set owner of new token
        owners[thisToken] = thisOwner;

        // append token to tokens owned
        ownershipMap[thisOwner][balances[thisOwner]] = thisToken;

        // increment balances for owner
        balances[thisOwner] = balances[thisOwner] + 1;
        uriMap[thisToken] = uri;
        emit Transfer(address(0), thisOwner, thisToken);
        emit IdentityCreated(thisOwner, thisToken);
    }

    /// ================= SETTERS =======================================

    // change the owner key
    function setOwner(address newOwner) external ownerOnly {
        address oldOwner = _owner_;
        _owner_ = newOwner;
        emit OwnerUpdated(oldOwner, newOwner);
    }

    // manually set the token URI
    function setTokenURI(uint token, string memory uri) external ownerOnly {
        uriMap[token] = uri;
    }

    /// ================= ERC 721 FUNCTIONS =============================================

    /// @notice Count all NFTs assigned to an owner
    /// @dev NFTs assigned to the zero address are considered invalid, and this
    ///  function throws for queries about the zero address.
    /// @param _address An address for whom to query the balance
    /// @return The number of NFTs owned by `owner`, possibly zero
    function balanceOf(address _address) external view returns (uint256) {
        return balances[_address];
    }

    /// @notice Find the owner of an NFT
    /// @dev NFTs assigned to zero address are considered invalid, and queries
    ///  about them do throw.
    /// @param tokenId The identifier for an NFT
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 tokenId) external view returns (address)  {
        address ooner = owners[tokenId];
        require(ooner != address(0), 'No such token');
        return ooner;
    }

    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `from` is
    ///  not the current owner. Throws if `to` is the zero address. Throws if
    ///  `tokenId` is not a valid NFT.
    /// @param from The current owner of the NFT
    /// @param to The new owner
    /// @param tokenId The NFT to transfer
    function transferFrom(address from, address to, uint256 tokenId) public {
        require(isApproved(msg.sender, tokenId), 'Identity: Unapproved transfer');
        transfer(from, to, tokenId);
    }

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `from` is
    ///  not the current owner. Throws if `to` is the zero address. Throws if
    ///  `tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
    /// @param from The current owner of the NFT
    /// @param to The new owner
    /// @param tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `to`
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public {
        transferFrom(from, to, tokenId);
        require(checkOnERC721Received(from, to, tokenId, data), "Identity: transfer to non ERC721Receiver implementer");
    }

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to "".
    /// @param from The current owner of the NFT
    /// @param to The new owner
    /// @param tokenId The NFT to transfer
    function safeTransferFrom(address from, address to, uint256 tokenId) public {
        safeTransferFrom(from, to, tokenId, '');
    }


    /// @notice Change or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    ///  Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param approved The new approved NFT controller
    /// @param tokenId The NFT to approve
    function approve(address approved, uint256 tokenId) public {
        address holder = owners[tokenId];
        require(isApproved(msg.sender, tokenId), 'Identity: Not authorized to approve');
        require(holder != approved, 'Identity: Approving self not allowed');
        tokenApprovals[tokenId] = approved;
        emit Approval(holder, approved, tokenId);
    }

    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all of `msg.sender`'s assets
    /// @dev Emits the ApprovalForAll event. The contract MUST allow
    ///  multiple operators per owner.
    /// @param operator Address to add to the set of authorized operators
    /// @param approved True if the operator is approved, false to revoke approval
    function setApprovalForAll(address operator, bool approved) external {
        operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `tokenId` is not a valid NFT.
    /// @param tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 tokenId) external view returns (address) {
        address holder = owners[tokenId];
        require(holder != address(0), 'Identity: Invalid tokenId');
        return tokenApprovals[tokenId];
    }

    /// @notice Query if an address is an authorized operator for another address
    /// @param _address The address that owns the NFTs
    /// @param operator The address that acts on behalf of the owner
    /// @return True if `operator` is an approved operator for `owner`, false otherwise
    function isApprovedForAll(address _address, address operator) public view returns (bool) {
        return operatorApprovals[_address][operator];
    }

    /// ================ UTILS =========================
    function isApproved(address operator, uint tokenId) public view returns (bool) {
        address holder = owners[tokenId];
        return (
            operator == holder ||
            operatorApprovals[holder][operator] ||
            tokenApprovals[tokenId] == operator
        );
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address from, address to, uint256 tokenId) internal {
        require(owners[tokenId] == from, "Identity: Transfer of token that is not own");
        require(to != address(0), "Identity: transfer to the zero address");

        // Clear approvals from the previous owner
        approve(address(0), tokenId);

        owners[tokenId] = to;
        // decrement from balances n -> n-1
        balances[from] = balances[from] - 1;
        // balances[from] now points to the tip of the "array", set it to 0
        ownershipMap[from][balances[from]] = 0;

        // balances[to] points past the tip of the array, set it to the token
        ownershipMap[to][balances[to]] = tokenId;
        // increment balances[to] to point past the end of the array n-1 -> n
        balances[to] = balances[to] + 1;


        emit Transfer(from, to, tokenId);
    }

    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for non-contract addresses

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory data)
        private returns (bool)
    {
        if (!isContract(to)) {
            return true;
        }
        IERC721Receiver target = IERC721Receiver(to);
        bytes4 retval = target.onERC721Received(from, to, tokenId, data);
        return ERC721_RECEIVED == retval;
    }

    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
        return (
            interfaceId == INTERFACE_ID_ERC721 ||
            interfaceId == INTERFACE_ID_ERC165 ||
            interfaceId == INTERFACE_ID_ERC721_ENUMERABLE ||
            interfaceId == INTERFACE_ID_ERC721_METADATA
        );
    }

    /// ================= ERC721Metadata FUNCTIONS =============================================

    /// @notice A descriptive name for a collection of NFTs in this contract
    function name() external view returns (string memory) {
        return _name;
    }

    /// @notice An abbreviated name for NFTs in this contract
    function symbol() external view returns (string memory) {
        return _symbol;
    }

    /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
    /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
    ///  3986. The URI may point to a JSON file that conforms to the "ERC721
    ///  Metadata JSON Schema".
    function tokenURI(uint256 _tokenId) external view returns (string memory) {
        return uriMap[_tokenId];
    }

    function owner() public view override returns (address) {
        return _owner_;
    }

    /// ================= ERC721Enumerable FUNCTIONS =============================================


    /// @notice Count NFTs tracked by this contract
    /// @return A count of valid NFTs tracked by this contract, where each one of
    ///  them has an assigned and queryable owner not equal to the zero address
    function totalSupply() external view override returns (uint256) {
        return numIdentities;
    }

    /// @notice Enumerate valid NFTs
    /// @dev Throws if `_index` >= `totalSupply()`.
    /// @param _index A counter less than `totalSupply()`
    /// @return The token identifier for the `_index`th NFT,
    ///  (sort order not specified)
    function tokenByIndex(uint256 _index) external view returns (uint256) {
        require(_index < numIdentities, 'Invalid token index');
        return allTokens[_index];
    }

    /// @notice Enumerate NFTs assigned to an owner
    /// @dev Throws if `_index` >= `balanceOf(_owner_)` or if
    ///  `_owner_` is the zero address, representing invalid NFTs.
    /// @param _address An address where we are interested in NFTs owned by them
    /// @param _index A counter less than `balanceOf(_owner_)`
    /// @return The token identifier for the `_index`th NFT assigned to `_owner_`,
    ///   (sort order not specified)
    function tokenOfOwnerByIndex(address _address, uint256 _index) external view returns (uint256) {
        require(_index < balances[_address], 'Index out of range');
        require(_address != address(0), 'Cannot query zero address');
        return ownershipMap[_address][_index];
    }


}

File 2 of 3 : IERC721Receiver.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity 0.8.9;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

File 3 of 3 : IVoterID.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity 0.8.9;

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IVoterID {
    /**
        Minting function
    */
    function createIdentityFor(address newId, uint tokenId, string memory uri) external;

    /**
        Who's in charge around here
    */
    function owner() external view returns (address);

    /**
        How many of these things exist?
    */
    function totalSupply() external view returns (uint);
}

Settings
{
  "evmVersion": "istanbul",
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "libraries": {
    "VoterID.sol": {}
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"ooner","type":"address"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"string","name":"nomen","type":"string"},{"internalType":"string","name":"symbowl","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"token","type":"uint256"}],"name":"IdentityCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"approved","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"thisOwner","type":"address"},{"internalType":"uint256","name":"thisToken","type":"uint256"},{"internalType":"string","name":"uri","type":"string"}],"name":"createIdentityFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numIdentities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"operatorApprovals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownershipMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"token","type":"uint256"},{"internalType":"string","name":"uri","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenApprovals","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uriMap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405260006009553480156200001657600080fd5b5060405162001a6738038062001a6783398101604081905262000039916200022f565b600a80546001600160a01b038087166001600160a01b031992831617909255600b80549286169290911691909117905581516200007e9060079060208501906200009f565b508051620000949060089060208401906200009f565b5050505050620002fc565b828054620000ad90620002bf565b90600052602060002090601f016020900481019282620000d157600085556200011c565b82601f10620000ec57805160ff19168380011785556200011c565b828001600101855582156200011c579182015b828111156200011c578251825591602001919060010190620000ff565b506200012a9291506200012e565b5090565b5b808211156200012a57600081556001016200012f565b80516001600160a01b03811681146200015d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018a57600080fd5b81516001600160401b0380821115620001a757620001a762000162565b604051601f8301601f19908116603f01168101908282118183101715620001d257620001d262000162565b81604052838152602092508683858801011115620001ef57600080fd5b600091505b83821015620002135785820183015181830184015290820190620001f4565b83821115620002255760008385830101525b9695505050505050565b600080600080608085870312156200024657600080fd5b620002518562000145565b9350620002616020860162000145565b60408601519093506001600160401b03808211156200027f57600080fd5b6200028d8883890162000178565b93506060870151915080821115620002a457600080fd5b50620002b38782880162000178565b91505092959194509250565b600181811c90821680620002d457607f821691505b60208210811415620002f657634e487b7160e01b600052602260045260246000fd5b50919050565b61175b806200030c6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80634c41a6891161010f57806395d89b41116100a2578063c5e3f16311610071578063c5e3f1631461047b578063c87b56dd146104a6578063dd2eb9f3146104b9578063e985e9c5146104cc57600080fd5b806395d89b4114610424578063a22cb4651461042c578063acdeb5b91461043f578063b88d4fde1461046857600080fd5b8063634282af116100de578063634282af146103b75780636352211e146103d757806370a08231146103ea5780638da5cb5b1461041357600080fd5b80634c41a6891461036b5780634f6ccce71461037e57806353005fb314610391578063578ec33f146103a457600080fd5b8063162094c41161018757806327e235e31161015657806327e235e3146103125780632a16cca4146103325780632f745c591461034557806342842e0e1461035857600080fd5b8063162094c4146102d157806318160ddd146102e457806319bb8b2b146102f657806323b872dd146102ff57600080fd5b8063081812fc116101c3578063081812fc14610268578063095ea7b31461027b5780630d95e0541461029057806313af4035146102be57600080fd5b806301ffc9a7146101ea578063025e7c271461021257806306fdde0314610253575b600080fd5b6101fd6101f836600461129a565b610508565b60405190151581526020015b60405180910390f35b61023b6102203660046112be565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610209565b61025b610575565b6040516102099190611324565b61023b6102763660046112be565b610607565b61028e610289366004611353565b61068e565b005b6101fd61029e36600461137d565b600260209081526000928352604080842090915290825290205460ff1681565b61028e6102cc3660046113b0565b6107d2565b61028e6102df366004611477565b61085d565b6009545b604051908152602001610209565b6102e860095481565b61028e61030d3660046114be565b6108ab565b6102e86103203660046113b0565b60016020526000908152604090205481565b6101fd610340366004611353565b61090c565b6102e8610353366004611353565b610987565b61028e6103663660046114be565b610a62565b600a5461023b906001600160a01b031681565b6102e861038c3660046112be565b610a7d565b61028e61039f3660046114fa565b610ad9565b600b5461023b906001600160a01b031681565b6102e86103c53660046112be565b60056020526000908152604090205481565b61023b6103e53660046112be565b610cb9565b6102e86103f83660046113b0565b6001600160a01b031660009081526001602052604090205490565b600a546001600160a01b031661023b565b61025b610d0e565b61028e61043a366004611551565b610d1d565b61023b61044d3660046112be565b6003602052600090815260409020546001600160a01b031681565b61028e61047636600461158d565b610d89565b6102e8610489366004611353565b600460209081526000928352604080842090915290825290205481565b61025b6104b43660046112be565b610e0f565b61025b6104c73660046112be565b610eb1565b6101fd6104da36600461137d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061053957506001600160e01b031982166301ffc9a760e01b145b8061055457506001600160e01b0319821663780e9d6360e01b145b8061056f57506001600160e01b03198216635b5e139f60e01b145b92915050565b60606007805461058490611609565b80601f01602080910402602001604051908101604052809291908181526020018280546105b090611609565b80156105fd5780601f106105d2576101008083540402835291602001916105fd565b820191906000526020600020905b8154815290600101906020018083116105e057829003601f168201915b5050505050905090565b6000818152602081905260408120546001600160a01b0316806106715760405162461bcd60e51b815260206004820152601960248201527f4964656e746974793a20496e76616c696420746f6b656e49640000000000000060448201526064015b60405180910390fd5b50506000908152600360205260409020546001600160a01b031690565b6000818152602081905260409020546001600160a01b03166106b0338361090c565b6107085760405162461bcd60e51b815260206004820152602360248201527f4964656e746974793a204e6f7420617574686f72697a656420746f20617070726044820152626f766560e81b6064820152608401610668565b826001600160a01b0316816001600160a01b031614156107765760405162461bcd60e51b8152602060048201526024808201527f4964656e746974793a20417070726f76696e672073656c66206e6f7420616c6c6044820152631bddd95960e21b6064820152608401610668565b60008281526003602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600a546001600160a01b031633146107fc5760405162461bcd60e51b815260040161066890611644565b600a80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76910160405180910390a15050565b600a546001600160a01b031633146108875760405162461bcd60e51b815260040161066890611644565b600082815260066020908152604090912082516108a6928401906111e8565b505050565b6108b5338261090c565b6109015760405162461bcd60e51b815260206004820152601d60248201527f4964656e746974793a20556e617070726f766564207472616e736665720000006044820152606401610668565b6108a6838383610f4b565b6000818152602081905260408120546001600160a01b0390811690841681148061095b57506001600160a01b0380821660009081526002602090815260408083209388168352929052205460ff165b8061097f57506000838152600360205260409020546001600160a01b038581169116145b949350505050565b6001600160a01b03821660009081526001602052604081205482106109e35760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b6044820152606401610668565b6001600160a01b038316610a395760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207175657279207a65726f2061646472657373000000000000006044820152606401610668565b506001600160a01b03919091166000908152600460209081526040808320938352929052205490565b6108a683838360405180602001604052806000815250610d89565b60006009548210610ac65760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8ded6cadc40d2dcc8caf606b1b6044820152606401610668565b5060009081526005602052604090205490565b600b546001600160a01b03163314610b335760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c79206d696e746572206d617920637265617465206964656e74697479006044820152606401610668565b6000828152602081905260409020546001600160a01b031615610b8f5760405162461bcd60e51b8152602060048201526014602482015273546f6b656e20616c72656164792065786973747360601b6044820152606401610668565b60098054600090815260056020526040902083905554610bb090600161169c565b60095560008281526020818152604080832080546001600160a01b0319166001600160a01b038816908117909155808452600483528184206001808552838620805487529185529285208790559352908190529054610c0e9161169c565b6001600160a01b038416600090815260016020908152604080832093909355848252600681529190208251610c45928401906111e8565b5060405182906001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a460405182906001600160a01b038516907fe8d47b56e8cdfa95f871b19d4f50a857217c44a95502b0811a350fec1500dd6790600090a3505050565b6000818152602081905260408120546001600160a01b03168061056f5760405162461bcd60e51b815260206004820152600d60248201526c27379039bab1b4103a37b5b2b760991b6044820152606401610668565b60606008805461058490611609565b3360008181526002602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d948484846108ab565b610da084848484611130565b610e095760405162461bcd60e51b815260206004820152603460248201527f4964656e746974793a207472616e7366657220746f206e6f6e204552433732316044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610668565b50505050565b6000818152600660205260409020805460609190610e2c90611609565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5890611609565b8015610ea55780601f10610e7a57610100808354040283529160200191610ea5565b820191906000526020600020905b815481529060010190602001808311610e8857829003601f168201915b50505050509050919050565b60066020526000908152604090208054610eca90611609565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef690611609565b8015610f435780601f10610f1857610100808354040283529160200191610f43565b820191906000526020600020905b815481529060010190602001808311610f2657829003601f168201915b505050505081565b6000818152602081905260409020546001600160a01b03848116911614610fc85760405162461bcd60e51b815260206004820152602b60248201527f4964656e746974793a205472616e73666572206f6620746f6b656e207468617460448201526a1034b9903737ba1037bbb760a91b6064820152608401610668565b6001600160a01b03821661102d5760405162461bcd60e51b815260206004820152602660248201527f4964656e746974793a207472616e7366657220746f20746865207a65726f206160448201526564647265737360d01b6064820152608401610668565b61103860008261068e565b60008181526020818152604080832080546001600160a01b0319166001600160a01b0387811691909117909155861683526001918290529091205461107d91906116b4565b6001600160a01b0380851660009081526001602081815260408084208690556004808352818520968552958252808420849055938716808452948152838320828252848420805485529082529383208690559390915291829052546110e19161169c565b6001600160a01b03808416600081815260016020526040808220949094559251849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000833b6111405750600161097f565b604051630a85bd0160e11b815284906000906001600160a01b0383169063150b7a0290611177908a9086908a908a906004016116cb565b602060405180830381600087803b15801561119157600080fd5b505af11580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611708565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b8280546111f490611609565b90600052602060002090601f016020900481019282611216576000855561125c565b82601f1061122f57805160ff191683800117855561125c565b8280016001018555821561125c579182015b8281111561125c578251825591602001919060010190611241565b5061126892915061126c565b5090565b5b80821115611268576000815560010161126d565b6001600160e01b03198116811461129757600080fd5b50565b6000602082840312156112ac57600080fd5b81356112b781611281565b9392505050565b6000602082840312156112d057600080fd5b5035919050565b6000815180845260005b818110156112fd576020818501810151868301820152016112e1565b8181111561130f576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006112b760208301846112d7565b80356001600160a01b038116811461134e57600080fd5b919050565b6000806040838503121561136657600080fd5b61136f83611337565b946020939093013593505050565b6000806040838503121561139057600080fd5b61139983611337565b91506113a760208401611337565b90509250929050565b6000602082840312156113c257600080fd5b6112b782611337565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156113fc576113fc6113cb565b604051601f8501601f19908116603f01168101908282118183101715611424576114246113cb565b8160405280935085815286868601111561143d57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261146857600080fd5b6112b7838335602085016113e1565b6000806040838503121561148a57600080fd5b82359150602083013567ffffffffffffffff8111156114a857600080fd5b6114b485828601611457565b9150509250929050565b6000806000606084860312156114d357600080fd5b6114dc84611337565b92506114ea60208501611337565b9150604084013590509250925092565b60008060006060848603121561150f57600080fd5b61151884611337565b925060208401359150604084013567ffffffffffffffff81111561153b57600080fd5b61154786828701611457565b9150509250925092565b6000806040838503121561156457600080fd5b61156d83611337565b91506020830135801515811461158257600080fd5b809150509250929050565b600080600080608085870312156115a357600080fd5b6115ac85611337565b93506115ba60208601611337565b925060408501359150606085013567ffffffffffffffff8111156115dd57600080fd5b8501601f810187136115ee57600080fd5b6115fd878235602084016113e1565b91505092959194509250565b600181811c9082168061161d57607f821691505b6020821081141561163e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f4964656e746974793a204f6e6c79206f776e6572206d61792063616c6c207468604082015261697360f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116af576116af611686565b500190565b6000828210156116c6576116c6611686565b500390565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906116fe908301846112d7565b9695505050505050565b60006020828403121561171a57600080fd5b81516112b78161128156fea26469706673582212207e33680f5db2ca1bee3917755964af4eb1f8f02f3cd14564e0e5be0c6f72151764736f6c63430008090033000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b000000000000000000000000a6fffd38a523d95b744ddc82a2a3c5e1cd77d8ee000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000753686962616b7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000753484942414b5500000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80634c41a6891161010f57806395d89b41116100a2578063c5e3f16311610071578063c5e3f1631461047b578063c87b56dd146104a6578063dd2eb9f3146104b9578063e985e9c5146104cc57600080fd5b806395d89b4114610424578063a22cb4651461042c578063acdeb5b91461043f578063b88d4fde1461046857600080fd5b8063634282af116100de578063634282af146103b75780636352211e146103d757806370a08231146103ea5780638da5cb5b1461041357600080fd5b80634c41a6891461036b5780634f6ccce71461037e57806353005fb314610391578063578ec33f146103a457600080fd5b8063162094c41161018757806327e235e31161015657806327e235e3146103125780632a16cca4146103325780632f745c591461034557806342842e0e1461035857600080fd5b8063162094c4146102d157806318160ddd146102e457806319bb8b2b146102f657806323b872dd146102ff57600080fd5b8063081812fc116101c3578063081812fc14610268578063095ea7b31461027b5780630d95e0541461029057806313af4035146102be57600080fd5b806301ffc9a7146101ea578063025e7c271461021257806306fdde0314610253575b600080fd5b6101fd6101f836600461129a565b610508565b60405190151581526020015b60405180910390f35b61023b6102203660046112be565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610209565b61025b610575565b6040516102099190611324565b61023b6102763660046112be565b610607565b61028e610289366004611353565b61068e565b005b6101fd61029e36600461137d565b600260209081526000928352604080842090915290825290205460ff1681565b61028e6102cc3660046113b0565b6107d2565b61028e6102df366004611477565b61085d565b6009545b604051908152602001610209565b6102e860095481565b61028e61030d3660046114be565b6108ab565b6102e86103203660046113b0565b60016020526000908152604090205481565b6101fd610340366004611353565b61090c565b6102e8610353366004611353565b610987565b61028e6103663660046114be565b610a62565b600a5461023b906001600160a01b031681565b6102e861038c3660046112be565b610a7d565b61028e61039f3660046114fa565b610ad9565b600b5461023b906001600160a01b031681565b6102e86103c53660046112be565b60056020526000908152604090205481565b61023b6103e53660046112be565b610cb9565b6102e86103f83660046113b0565b6001600160a01b031660009081526001602052604090205490565b600a546001600160a01b031661023b565b61025b610d0e565b61028e61043a366004611551565b610d1d565b61023b61044d3660046112be565b6003602052600090815260409020546001600160a01b031681565b61028e61047636600461158d565b610d89565b6102e8610489366004611353565b600460209081526000928352604080842090915290825290205481565b61025b6104b43660046112be565b610e0f565b61025b6104c73660046112be565b610eb1565b6101fd6104da36600461137d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061053957506001600160e01b031982166301ffc9a760e01b145b8061055457506001600160e01b0319821663780e9d6360e01b145b8061056f57506001600160e01b03198216635b5e139f60e01b145b92915050565b60606007805461058490611609565b80601f01602080910402602001604051908101604052809291908181526020018280546105b090611609565b80156105fd5780601f106105d2576101008083540402835291602001916105fd565b820191906000526020600020905b8154815290600101906020018083116105e057829003601f168201915b5050505050905090565b6000818152602081905260408120546001600160a01b0316806106715760405162461bcd60e51b815260206004820152601960248201527f4964656e746974793a20496e76616c696420746f6b656e49640000000000000060448201526064015b60405180910390fd5b50506000908152600360205260409020546001600160a01b031690565b6000818152602081905260409020546001600160a01b03166106b0338361090c565b6107085760405162461bcd60e51b815260206004820152602360248201527f4964656e746974793a204e6f7420617574686f72697a656420746f20617070726044820152626f766560e81b6064820152608401610668565b826001600160a01b0316816001600160a01b031614156107765760405162461bcd60e51b8152602060048201526024808201527f4964656e746974793a20417070726f76696e672073656c66206e6f7420616c6c6044820152631bddd95960e21b6064820152608401610668565b60008281526003602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600a546001600160a01b031633146107fc5760405162461bcd60e51b815260040161066890611644565b600a80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76910160405180910390a15050565b600a546001600160a01b031633146108875760405162461bcd60e51b815260040161066890611644565b600082815260066020908152604090912082516108a6928401906111e8565b505050565b6108b5338261090c565b6109015760405162461bcd60e51b815260206004820152601d60248201527f4964656e746974793a20556e617070726f766564207472616e736665720000006044820152606401610668565b6108a6838383610f4b565b6000818152602081905260408120546001600160a01b0390811690841681148061095b57506001600160a01b0380821660009081526002602090815260408083209388168352929052205460ff165b8061097f57506000838152600360205260409020546001600160a01b038581169116145b949350505050565b6001600160a01b03821660009081526001602052604081205482106109e35760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b6044820152606401610668565b6001600160a01b038316610a395760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207175657279207a65726f2061646472657373000000000000006044820152606401610668565b506001600160a01b03919091166000908152600460209081526040808320938352929052205490565b6108a683838360405180602001604052806000815250610d89565b60006009548210610ac65760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8ded6cadc40d2dcc8caf606b1b6044820152606401610668565b5060009081526005602052604090205490565b600b546001600160a01b03163314610b335760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c79206d696e746572206d617920637265617465206964656e74697479006044820152606401610668565b6000828152602081905260409020546001600160a01b031615610b8f5760405162461bcd60e51b8152602060048201526014602482015273546f6b656e20616c72656164792065786973747360601b6044820152606401610668565b60098054600090815260056020526040902083905554610bb090600161169c565b60095560008281526020818152604080832080546001600160a01b0319166001600160a01b038816908117909155808452600483528184206001808552838620805487529185529285208790559352908190529054610c0e9161169c565b6001600160a01b038416600090815260016020908152604080832093909355848252600681529190208251610c45928401906111e8565b5060405182906001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a460405182906001600160a01b038516907fe8d47b56e8cdfa95f871b19d4f50a857217c44a95502b0811a350fec1500dd6790600090a3505050565b6000818152602081905260408120546001600160a01b03168061056f5760405162461bcd60e51b815260206004820152600d60248201526c27379039bab1b4103a37b5b2b760991b6044820152606401610668565b60606008805461058490611609565b3360008181526002602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d948484846108ab565b610da084848484611130565b610e095760405162461bcd60e51b815260206004820152603460248201527f4964656e746974793a207472616e7366657220746f206e6f6e204552433732316044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610668565b50505050565b6000818152600660205260409020805460609190610e2c90611609565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5890611609565b8015610ea55780601f10610e7a57610100808354040283529160200191610ea5565b820191906000526020600020905b815481529060010190602001808311610e8857829003601f168201915b50505050509050919050565b60066020526000908152604090208054610eca90611609565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef690611609565b8015610f435780601f10610f1857610100808354040283529160200191610f43565b820191906000526020600020905b815481529060010190602001808311610f2657829003601f168201915b505050505081565b6000818152602081905260409020546001600160a01b03848116911614610fc85760405162461bcd60e51b815260206004820152602b60248201527f4964656e746974793a205472616e73666572206f6620746f6b656e207468617460448201526a1034b9903737ba1037bbb760a91b6064820152608401610668565b6001600160a01b03821661102d5760405162461bcd60e51b815260206004820152602660248201527f4964656e746974793a207472616e7366657220746f20746865207a65726f206160448201526564647265737360d01b6064820152608401610668565b61103860008261068e565b60008181526020818152604080832080546001600160a01b0319166001600160a01b0387811691909117909155861683526001918290529091205461107d91906116b4565b6001600160a01b0380851660009081526001602081815260408084208690556004808352818520968552958252808420849055938716808452948152838320828252848420805485529082529383208690559390915291829052546110e19161169c565b6001600160a01b03808416600081815260016020526040808220949094559251849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000833b6111405750600161097f565b604051630a85bd0160e11b815284906000906001600160a01b0383169063150b7a0290611177908a9086908a908a906004016116cb565b602060405180830381600087803b15801561119157600080fd5b505af11580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611708565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b8280546111f490611609565b90600052602060002090601f016020900481019282611216576000855561125c565b82601f1061122f57805160ff191683800117855561125c565b8280016001018555821561125c579182015b8281111561125c578251825591602001919060010190611241565b5061126892915061126c565b5090565b5b80821115611268576000815560010161126d565b6001600160e01b03198116811461129757600080fd5b50565b6000602082840312156112ac57600080fd5b81356112b781611281565b9392505050565b6000602082840312156112d057600080fd5b5035919050565b6000815180845260005b818110156112fd576020818501810151868301820152016112e1565b8181111561130f576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006112b760208301846112d7565b80356001600160a01b038116811461134e57600080fd5b919050565b6000806040838503121561136657600080fd5b61136f83611337565b946020939093013593505050565b6000806040838503121561139057600080fd5b61139983611337565b91506113a760208401611337565b90509250929050565b6000602082840312156113c257600080fd5b6112b782611337565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156113fc576113fc6113cb565b604051601f8501601f19908116603f01168101908282118183101715611424576114246113cb565b8160405280935085815286868601111561143d57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261146857600080fd5b6112b7838335602085016113e1565b6000806040838503121561148a57600080fd5b82359150602083013567ffffffffffffffff8111156114a857600080fd5b6114b485828601611457565b9150509250929050565b6000806000606084860312156114d357600080fd5b6114dc84611337565b92506114ea60208501611337565b9150604084013590509250925092565b60008060006060848603121561150f57600080fd5b61151884611337565b925060208401359150604084013567ffffffffffffffff81111561153b57600080fd5b61154786828701611457565b9150509250925092565b6000806040838503121561156457600080fd5b61156d83611337565b91506020830135801515811461158257600080fd5b809150509250929050565b600080600080608085870312156115a357600080fd5b6115ac85611337565b93506115ba60208601611337565b925060408501359150606085013567ffffffffffffffff8111156115dd57600080fd5b8501601f810187136115ee57600080fd5b6115fd878235602084016113e1565b91505092959194509250565b600181811c9082168061161d57607f821691505b6020821081141561163e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f4964656e746974793a204f6e6c79206f776e6572206d61792063616c6c207468604082015261697360f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116af576116af611686565b500190565b6000828210156116c6576116c6611686565b500390565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906116fe908301846112d7565b9695505050505050565b60006020828403121561171a57600080fd5b81516112b78161128156fea26469706673582212207e33680f5db2ca1bee3917755964af4eb1f8f02f3cd14564e0e5be0c6f72151764736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b000000000000000000000000a6fffd38a523d95b744ddc82a2a3c5e1cd77d8ee000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000753686962616b7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000753484942414b5500000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : ooner (address): 0x288fE43139741F91a8Cbb6F4adD83811c794851b
Arg [1] : minter (address): 0xa6FFfD38a523d95b744DdC82A2A3C5e1cd77D8Ee
Arg [2] : nomen (string): Shibaku
Arg [3] : symbowl (string): SHIBAKU

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b
Arg [1] : 000000000000000000000000a6fffd38a523d95b744ddc82a2a3c5e1cd77d8ee
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [5] : 53686962616b7500000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [7] : 53484942414b5500000000000000000000000000000000000000000000000000


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.