ETH Price: $3,240.06 (-0.43%)

Contract

0xb70B759aD676b227a01F7d406E2dc9c67103aAeB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...211664852024-11-11 19:19:3560 days ago1731352775IN
0xb70B759a...67103aAeB
0 ETH0.0023245650.49020723
Set Approval For...198252912024-05-08 12:17:59247 days ago1715170679IN
0xb70B759a...67103aAeB
0 ETH0.000254015.51720439
Set Approval For...198252162024-05-08 12:02:59247 days ago1715169779IN
0xb70B759a...67103aAeB
0 ETH0.000265455.76567606
Set Approval For...198027692024-05-05 8:42:23250 days ago1714898543IN
0xb70B759a...67103aAeB
0 ETH0.000292846.36058923
Safe Transfer Fr...194782992024-03-20 20:30:35296 days ago1710966635IN
0xb70B759a...67103aAeB
0 ETH0.0041088849.30617869
Safe Transfer Fr...190291762024-01-17 21:08:23359 days ago1705525703IN
0xb70B759a...67103aAeB
0 ETH0.0031864738.26673148
Set Approval For...184061232023-10-22 13:25:23446 days ago1697981123IN
0xb70B759a...67103aAeB
0 ETH0.000293846.37910167
Transfer From179556572023-08-20 11:27:59509 days ago1692530879IN
0xb70B759a...67103aAeB
0 ETH0.0009325614.72355578
Transfer From179479822023-08-19 9:38:59510 days ago1692437939IN
0xb70B759a...67103aAeB
0 ETH0.001218715.15083277
Transfer From178457752023-08-05 2:25:11525 days ago1691202311IN
0xb70B759a...67103aAeB
0 ETH0.00088313.93849119
Transfer From178457742023-08-05 2:24:59525 days ago1691202299IN
0xb70B759a...67103aAeB
0 ETH0.0012052314.13760806
Set Approval For...176863352023-07-13 18:23:35547 days ago1689272615IN
0xb70B759a...67103aAeB
0 ETH0.0033917973.67050735
Set Approval For...176102102023-07-03 1:33:11558 days ago1688347991IN
0xb70B759a...67103aAeB
0 ETH0.0005913912.80404764
Set Approval For...168622942023-03-19 14:14:59663 days ago1679235299IN
0xb70B759a...67103aAeB
0 ETH0.0007839117.02676651
Set Approval For...167308462023-03-01 2:36:47682 days ago1677638207IN
0xb70B759a...67103aAeB
0 ETH0.0008453718.3617748
Set Approval For...166679222023-02-20 6:16:47690 days ago1676873807IN
0xb70B759a...67103aAeB
0 ETH0.0012088626.25689081
Set Approval For...164918182023-01-26 15:14:59715 days ago1674746099IN
0xb70B759a...67103aAeB
0 ETH0.0008046833.23507266
Set Approval For...161975382022-12-16 13:24:35756 days ago1671197075IN
0xb70B759a...67103aAeB
0 ETH0.0007635716.58509058
Safe Transfer Fr...161134172022-12-04 19:05:35768 days ago1670180735IN
0xb70B759a...67103aAeB
0 ETH0.0011184913.42374068
Set Approval For...160558312022-11-26 18:04:35776 days ago1669485875IN
0xb70B759a...67103aAeB
0 ETH0.0003781415.62602355
Set Approval For...160270952022-11-22 17:40:59780 days ago1669138859IN
0xb70B759a...67103aAeB
0 ETH0.0013732929.78162899
Set Approval For...159131202022-11-06 19:38:59796 days ago1667763539IN
0xb70B759a...67103aAeB
0 ETH0.0005163411.21505567
Set Approval For...158714212022-10-31 23:48:11802 days ago1667260091IN
0xb70B759a...67103aAeB
0 ETH0.0008289634.23773893
Set Approval For...157392632022-10-13 12:41:47820 days ago1665664907IN
0xb70B759a...67103aAeB
0 ETH0.0012331847.17601722
Set Approval For...157392632022-10-13 12:41:47820 days ago1665664907IN
0xb70B759a...67103aAeB
0 ETH0.0021719847.17601722
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.