ETH Price: $3,455.63 (+1.20%)
Gas: 22 Gwei

Token

 

Overview

Max Total Supply

500

Holders

24

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
elu.eth
0xCEFD0E73cC48B0b9d4C8683E52B7d7396600AbB2
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:
GoldenPass

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 2 of 8 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 8 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

File 4 of 8 : MerkleProof.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 *
 * WARNING: You should avoid using leaf values that are 64 bytes long prior to
 * hashing, or use a hash function other than keccak256 for hashing leaves.
 * This is because the concatenation of a sorted pair of internal nodes in
 * the merkle tree could be reinterpreted as a leaf value.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

File 5 of 8 : ERC1155.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*///////////////////////////////////////////////////////////////
                                EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    event URI(string value, uint256 indexed id);

    /*///////////////////////////////////////////////////////////////
                            ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*///////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                             ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < idsLength; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] memory owners, uint256[] memory ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        uint256 ownersLength = owners.length; // Saves MLOADs.

        require(ownersLength == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](ownersLength);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < ownersLength; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*///////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

    /*///////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol)
interface ERC1155TokenReceiver {
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external returns (bytes4);

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external returns (bytes4);
}

File 6 of 8 : GoldenPass.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.4;

import {ERC1155} from "@solmate/tokens/ERC1155.sol";
import {Ownable} from "@openzeppelin/access/Ownable.sol";
import {MerkleProof} from "@openzeppelin/utils/cryptography/MerkleProof.sol";
import {Strings} from "@openzeppelin/utils/Strings.sol";
import {IOddworx} from "$/IOddworx.sol";
import {IOddworxStaking} from "$/IOddworxStaking.sol";

interface IGoldenPass {
    function burn(address from, uint256 amount) external;
}

// slither-disable-next-line missing-inheritance
contract GoldenPass is IGoldenPass, ERC1155, Ownable {
    using Strings for uint8;
    using Strings for uint160;

    /// @dev 0x843ce46b
    error InvalidClaimAmount();
    /// @dev 0xb05e92fa
    error InvalidMerkleProof();
    /// @dev 0xb36c1284
    error MaxSupply();
    /// @dev 0x59907813
    error OnlyController();
    /// @dev 0xa6802b50
    error PresaleOff();
    /// @dev 0xf81942c9
    error ReachedMaxPerTx();
    /// @dev 0x3afc8ce9
    error SaleOff();

    // Immutable

    uint256 public constant TOTAL_TOKENS_AVAILABLE = 500;
    uint256 public constant MAX_PER_TX = 1;
    /// @dev price in ODDX
    uint256 public constant UNIT_PRICE = 300 ether;
    IOddworxStaking public immutable oddxStaking;
    bytes32 public immutable merkleRoot;
    address private genzeeAddress;

    // Mutable

    bool public isPresaleActive = false;
    uint256 public totalSupply = 0;
    bool public isSaleActive = false;
    string private _uri;

    /// @dev we know no one is allow-listed to claim more than 255, and we
    ///      found out uint8 was cheaper than other uints by trial
    mapping(address => uint8) public amountClaimedByUser;

    /// @dev addresses authorized to burn tokens
    mapping(address => bool) public isController;

    // Constructor

    constructor(
        IOddworxStaking oddxStaking_,
        address genzeeAddress_,
        string memory uri_,
        bytes32 merkleRoot_
    ) {
        oddxStaking = oddxStaking_;
        genzeeAddress = genzeeAddress_;
        _uri = uri_;
        merkleRoot = merkleRoot_;
    }

    // Modifier

    modifier onlyController() {
        if (!isController[msg.sender]) revert OnlyController();
        _;
    }

    // Owner Only

    function setURI(string calldata newUri) external onlyOwner {
        _uri = newUri;
    }

    function setIsSaleActive(bool newIsSaleActive) external onlyOwner {
        isSaleActive = newIsSaleActive;
    }

    function setIsPresaleActive(bool newIsPresaleActive) external onlyOwner {
        isPresaleActive = newIsPresaleActive;
    }

    function setIsController(address controller, bool newIsController)
        external
        onlyOwner
    {
        isController[controller] = newIsController;
    }

    // Controller Only

    function burn(address from, uint256 amount) external onlyController {
        _burn(from, 1, amount);
        // totalSupply is not decremented because otherwise people will be able
        // to mint after the limit is reached
    }

    // User

    /// @notice Mint function to be used on presale by addresses in the allow-list.
    ///         Caller should have enough ODDX.
    function premint(
        uint8 amount,
        uint8 totalAmount,
        uint256[] calldata nftIds,
        bytes32[] calldata proof
    ) external {
        if (!isPresaleActive) revert PresaleOff();
        unchecked {
            totalSupply += amount;
            if (totalSupply > TOTAL_TOKENS_AVAILABLE) revert MaxSupply();
            if (amountClaimedByUser[msg.sender] + amount > totalAmount)
                revert InvalidClaimAmount();
            // disabling slither reentrancy check cuz we trust ODDX
            // slither-disable-next-line reentrancy-no-eth
            oddxStaking.buyItem(0x0103, amount * UNIT_PRICE, genzeeAddress, nftIds, msg.sender);
        }

        // Check proof
        bytes32 leaf = keccak256(
            abi.encodePacked(
                uint160(msg.sender).toHexString(20),
                ":",
                totalAmount.toString()
            )
        );
        bool isProofValid = MerkleProof.verify(proof, merkleRoot, leaf);
        if (!isProofValid) revert InvalidMerkleProof();

        // This is not before the proof check cuz it will add 20k extra gas cost
        // if the user doesn't have the token already
        unchecked {
            amountClaimedByUser[msg.sender] += amount;
        }
        _mint(msg.sender, 1, amount, "");
    }

    /// @notice Mint function to be used on public sale, anyone can call this.
    ///         Caller should have enough ODDX.
    function mint(uint256 amount, uint256[] calldata nftIds) external {
        if (!isSaleActive) revert SaleOff();
        if (amount > MAX_PER_TX) revert ReachedMaxPerTx();
        unchecked {
            if (amount + totalSupply > TOTAL_TOKENS_AVAILABLE)
                revert MaxSupply();
            totalSupply += amount;

            oddxStaking.buyItem(0x0103, amount * UNIT_PRICE, genzeeAddress, nftIds, msg.sender);
        }

        _mint(msg.sender, 1, amount, "");
    }

    // Overrides

    function uri(uint256) public view override returns (string memory) {
        return _uri;
    }
}

File 7 of 8 : IOddworx.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.4;

interface IOddworx {
    function burn(address from, uint256 amount) external;
}

File 8 of 8 : IOddworxStaking.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.4;

interface IOddworxStaking {
    function buyItem(uint itemSKU, uint amount, address nftContract, uint[] calldata nftIds, address user) external;
}

Settings
{
  "remappings": [
    "$/=src/",
    "@ds-test/=lib/ds-test/src/",
    "@forge-std/=lib/forge-std/src/",
    "@oddworx/=lib/oddworx-token/contracts/",
    "@openzeppelin/=lib/openzeppelin-contracts/contracts/",
    "@solmate/=lib/solmate/src/",
    "ds-test/=lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "oddworx-token/=lib/oddworx-token/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solmate/=lib/solmate/src/",
    "weird-erc20/=lib/solmate/lib/weird-erc20/src/",
    "src/=src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london"
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IOddworxStaking","name":"oddxStaking_","type":"address"},{"internalType":"address","name":"genzeeAddress_","type":"address"},{"internalType":"string","name":"uri_","type":"string"},{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidClaimAmount","type":"error"},{"inputs":[],"name":"InvalidMerkleProof","type":"error"},{"inputs":[],"name":"MaxSupply","type":"error"},{"inputs":[],"name":"OnlyController","type":"error"},{"inputs":[],"name":"PresaleOff","type":"error"},{"inputs":[],"name":"ReachedMaxPerTx","type":"error"},{"inputs":[],"name":"SaleOff","type":"error"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_TOKENS_AVAILABLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNIT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountClaimedByUser","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isController","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPresaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oddxStaking","outputs":[{"internalType":"contract IOddworxStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"amount","type":"uint8"},{"internalType":"uint8","name":"totalAmount","type":"uint8"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"premint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"controller","type":"address"},{"internalType":"bool","name":"newIsController","type":"bool"}],"name":"setIsController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsPresaleActive","type":"bool"}],"name":"setIsPresaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsSaleActive","type":"bool"}],"name":"setIsSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60c06040526003805460ff60a01b1916905560006004556005805460ff191690553480156200002d57600080fd5b5060405162002468380380620024688339810160408190526200005091620001ca565b6200005b33620000a3565b6001600160a01b03848116608052600380546001600160a01b031916918516919091179055815162000095906006906020850190620000f5565b5060a0525062000317915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010390620002da565b90600052602060002090601f01602090048101928262000127576000855562000172565b82601f106200014257805160ff191683800117855562000172565b8280016001018555821562000172579182015b828111156200017257825182559160200191906001019062000155565b506200018092915062000184565b5090565b5b8082111562000180576000815560010162000185565b6001600160a01b0381168114620001b157600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215620001e157600080fd5b8451620001ee816200019b565b8094505060208086015162000203816200019b565b60408701519094506001600160401b03808211156200022157600080fd5b818801915088601f8301126200023657600080fd5b8151818111156200024b576200024b620001b4565b604051601f8201601f19908116603f01168101908382118183101715620002765762000276620001b4565b816040528281528b868487010111156200028f57600080fd5b600093505b82841015620002b3578484018601518185018701529285019262000294565b82841115620002c55760008684830101525b60609a909a0151989b979a5050505050505050565b600181811c90821680620002ef57607f821691505b602082108114156200031157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161211662000352600039600081816102ce0152610d1e01526000818161027c015281816106410152610c1f01526121166000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c8063715018a6116100f9578063b429afeb11610097578063e985e9c511610071578063e985e9c51461042d578063f242432a1461045b578063f2fde38b1461046e578063f43a22dc1461048157600080fd5b8063b429afeb146103e4578063c646273e14610407578063d2d65ff51461041a57600080fd5b80639dc29fac116100d35780639dc29fac1461039b578063a1a4babf146103ae578063a22cb465146103c1578063afa40bbd146103d457600080fd5b8063715018a6146103795780638da5cb5b146103815780639103321d1461039257600080fd5b80632eb2c2d611610166578063443da2a211610140578063443da2a2146103255780634e1273f414610338578063564566a81461035857806360d938dc1461036557600080fd5b80632eb2c2d6146102b65780632eb4a7ab146102c95780633b66f49d146102f057600080fd5b80630e89341c116101a25780630e89341c1461023b57806318160ddd1461025b5780632d69044f146102645780632dded0071461027757600080fd5b8062fdd58e146101c857806301ffc9a71461020357806302fe530514610226575b600080fd5b6101f06101d636600461173f565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61021661021136600461177f565b610489565b60405190151581526020016101fa565b61023961023436600461179c565b6104db565b005b61024e61024936600461180d565b61051f565b6040516101fa919061187e565b6101f060045481565b6102396102723660046118dc565b6105b3565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101fa565b6102396102c4366004611a6a565b6106db565b6101f07f000000000000000000000000000000000000000000000000000000000000000081565b6103136102fe366004611b13565b60076020526000908152604090205460ff1681565b60405160ff90911681526020016101fa565b610239610333366004611b3e565b610988565b61034b610346366004611b59565b6109d0565b6040516101fa9190611c53565b6005546102169060ff1681565b60035461021690600160a01b900460ff1681565b610239610afc565b6002546001600160a01b031661029e565b6101f06101f481565b6102396103a936600461173f565b610b32565b6102396103bc366004611c77565b610b72565b6102396103cf366004611d07565b610dab565b6101f0681043561a882930000081565b6102166103f2366004611b13565b60086020526000908152604090205460ff1681565b610239610415366004611d07565b610e17565b610239610428366004611b3e565b610e6c565b61021661043b366004611d3a565b600160209081526000928352604080842090915290825290205460ff1681565b610239610469366004611d64565b610ea9565b61023961047c366004611b13565b6110a0565b6101f0600181565b60006301ffc9a760e01b6001600160e01b0319831614806104ba5750636cdb3d1360e11b6001600160e01b03198316145b806104d557506303a24d0760e21b6001600160e01b03198316145b92915050565b6002546001600160a01b0316331461050e5760405162461bcd60e51b815260040161050590611dc8565b60405180910390fd5b61051a6006838361168a565b505050565b60606006805461052e90611dfd565b80601f016020809104026020016040519081016040528092919081815260200182805461055a90611dfd565b80156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b50505050509050919050565b60055460ff166105d657604051633afc8ce960e01b815260040160405180910390fd5b60018311156105f85760405163f81942c960e01b815260040160405180910390fd5b6101f46004548401111561061f57604051632cdb04a160e21b815260040160405180910390fd5b60048054840181556003546040516349db4ced60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116936349db4ced9361068d9361010393681043561a88293000008b029392169189918991339101611e38565b600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b5050505061051a336001856040518060200160405280600081525061113b565b82518251811461071f5760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610505565b336001600160a01b038716148061075957506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6107965760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610505565b60008060005b83811015610864578681815181106107b6576107b6611ea2565b602002602001015192508581815181106107d2576107d2611ea2565b60200260200101519150816000808b6001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002060008282546108219190611ece565b90915550506001600160a01b03881660009081526020818152604080832086845290915281208054849290610857908490611ee5565b909155505060010161079c565b50866001600160a01b0316886001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89896040516108b4929190611efd565b60405180910390a46001600160a01b0387163b156109555760405163bc197c8160e01b808252906001600160a01b0389169063bc197c81906109029033908d908c908c908c90600401611f2b565b6020604051808303816000875af1158015610921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190611f89565b6001600160e01b03191614610962565b6001600160a01b03871615155b61097e5760405162461bcd60e51b815260040161050590611fa6565b5050505050505050565b6002546001600160a01b031633146109b25760405162461bcd60e51b815260040161050590611dc8565b60038054911515600160a01b0260ff60a01b19909216919091179055565b81518151606091908114610a185760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610505565b806001600160401b03811115610a3057610a30611927565b604051908082528060200260200182016040528015610a59578160200160208202803683370190505b50915060005b81811015610af457600080868381518110610a7c57610a7c611ea2565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610ab857610ab8611ea2565b6020026020010151815260200190815260200160002054838281518110610ae157610ae1611ea2565b6020908102919091010152600101610a5f565b505092915050565b6002546001600160a01b03163314610b265760405162461bcd60e51b815260040161050590611dc8565b610b306000611283565b565b3360009081526008602052604090205460ff16610b6257604051635990781360e01b815260040160405180910390fd5b610b6e826001836112d5565b5050565b600354600160a01b900460ff16610b9c57604051630a6802b560e41b815260040160405180910390fd5b6004805460ff881601908190556101f41015610bcb57604051632cdb04a160e21b815260040160405180910390fd5b3360009081526007602052604090205460ff8087169181168801161115610c055760405163843ce46b60e01b815260040160405180910390fd5b6003546040516349db4ced60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926349db4ced92610c70926101039260ff8d16681043561a882930000002929116908a908a903390600401611e38565b600060405180830381600087803b158015610c8a57600080fd5b505af1158015610c9e573d6000803e3d6000fd5b5060009250610cb291503390506014611359565b610cbe8760ff166114fb565b604051602001610ccf929190611fd0565b6040516020818303038152906040528051906020012090506000610d498484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f000000000000000000000000000000000000000000000000000000000000000092508691506116009050565b905080610d695760405163582f497d60e11b815260040160405180910390fd5b336000818152600760209081526040808320805460ff19811660ff9182168f01821617909155815192830190915291815261097e9291600191908c169061113b565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6002546001600160a01b03163314610e415760405162461bcd60e51b815260040161050590611dc8565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6002546001600160a01b03163314610e965760405162461bcd60e51b815260040161050590611dc8565b6005805460ff1916911515919091179055565b336001600160a01b0386161480610ee357506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610f205760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610505565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290610f51908490611ece565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290610f87908490611ee5565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156110705760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e619061101d9033908a9089908990899060040161200c565b6020604051808303816000875af115801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190611f89565b6001600160e01b0319161461107d565b6001600160a01b03841615155b6110995760405162461bcd60e51b815260040161050590611fa6565b5050505050565b6002546001600160a01b031633146110ca5760405162461bcd60e51b815260040161050590611dc8565b6001600160a01b03811661112f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610505565b61113881611283565b50565b6001600160a01b0384166000908152602081815260408083208684529091528120805484929061116c908490611ee5565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156112545760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e619061120190339060009089908990899060040161200c565b6020604051808303816000875af1158015611220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112449190611f89565b6001600160e01b03191614611261565b6001600160a01b03841615155b61127d5760405162461bcd60e51b815260040161050590611fa6565b50505050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020818152604080832085845290915281208054839290611306908490611ece565b909155505060408051838152602081018390526000916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b60606000611368836002612051565b611373906002611ee5565b6001600160401b0381111561138a5761138a611927565b6040519080825280601f01601f1916602001820160405280156113b4576020820181803683370190505b509050600360fc1b816000815181106113cf576113cf611ea2565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113fe576113fe611ea2565b60200101906001600160f81b031916908160001a9053506000611422846002612051565b61142d906001611ee5565b90505b60018111156114a5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061146157611461611ea2565b1a60f81b82828151811061147757611477611ea2565b60200101906001600160f81b031916908160001a90535060049490941c9361149e81612070565b9050611430565b5083156114f45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610505565b9392505050565b60608161151f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611549578061153381612087565b91506115429050600a836120b8565b9150611523565b6000816001600160401b0381111561156357611563611927565b6040519080825280601f01601f19166020018201604052801561158d576020820181803683370190505b5090505b84156115f8576115a2600183611ece565b91506115af600a866120cc565b6115ba906030611ee5565b60f81b8183815181106115cf576115cf611ea2565b60200101906001600160f81b031916908160001a9053506115f1600a866120b8565b9450611591565b949350505050565b60008261160d8584611616565b14949350505050565b600081815b845181101561168257600085828151811061163857611638611ea2565b6020026020010151905080831161165e576000838152602082905260409020925061166f565b600081815260208490526040902092505b508061167a81612087565b91505061161b565b509392505050565b82805461169690611dfd565b90600052602060002090601f0160209004810192826116b857600085556116fe565b82601f106116d15782800160ff198235161785556116fe565b828001600101855582156116fe579182015b828111156116fe5782358255916020019190600101906116e3565b5061170a92915061170e565b5090565b5b8082111561170a576000815560010161170f565b80356001600160a01b038116811461173a57600080fd5b919050565b6000806040838503121561175257600080fd5b61175b83611723565b946020939093013593505050565b6001600160e01b03198116811461113857600080fd5b60006020828403121561179157600080fd5b81356114f481611769565b600080602083850312156117af57600080fd5b82356001600160401b03808211156117c657600080fd5b818501915085601f8301126117da57600080fd5b8135818111156117e957600080fd5b8660208285010111156117fb57600080fd5b60209290920196919550909350505050565b60006020828403121561181f57600080fd5b5035919050565b60005b83811015611841578181015183820152602001611829565b8381111561127d5750506000910152565b6000815180845261186a816020860160208601611826565b601f01601f19169290920160200192915050565b6020815260006114f46020830184611852565b60008083601f8401126118a357600080fd5b5081356001600160401b038111156118ba57600080fd5b6020830191508360208260051b85010111156118d557600080fd5b9250929050565b6000806000604084860312156118f157600080fd5b8335925060208401356001600160401b0381111561190e57600080fd5b61191a86828701611891565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561196557611965611927565b604052919050565b60006001600160401b0382111561198657611986611927565b5060051b60200190565b600082601f8301126119a157600080fd5b813560206119b66119b18361196d565b61193d565b82815260059290921b840181019181810190868411156119d557600080fd5b8286015b848110156119f057803583529183019183016119d9565b509695505050505050565b600082601f830112611a0c57600080fd5b81356001600160401b03811115611a2557611a25611927565b611a38601f8201601f191660200161193d565b818152846020838601011115611a4d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611a8257600080fd5b611a8b86611723565b9450611a9960208701611723565b935060408601356001600160401b0380821115611ab557600080fd5b611ac189838a01611990565b94506060880135915080821115611ad757600080fd5b611ae389838a01611990565b93506080880135915080821115611af957600080fd5b50611b06888289016119fb565b9150509295509295909350565b600060208284031215611b2557600080fd5b6114f482611723565b8035801515811461173a57600080fd5b600060208284031215611b5057600080fd5b6114f482611b2e565b60008060408385031215611b6c57600080fd5b82356001600160401b0380821115611b8357600080fd5b818501915085601f830112611b9757600080fd5b81356020611ba76119b18361196d565b82815260059290921b84018101918181019089841115611bc657600080fd5b948201945b83861015611beb57611bdc86611723565b82529482019490820190611bcb565b96505086013592505080821115611c0157600080fd5b50611c0e85828601611990565b9150509250929050565b600081518084526020808501945080840160005b83811015611c4857815187529582019590820190600101611c2c565b509495945050505050565b6020815260006114f46020830184611c18565b803560ff8116811461173a57600080fd5b60008060008060008060808789031215611c9057600080fd5b611c9987611c66565b9550611ca760208801611c66565b945060408701356001600160401b0380821115611cc357600080fd5b611ccf8a838b01611891565b90965094506060890135915080821115611ce857600080fd5b50611cf589828a01611891565b979a9699509497509295939492505050565b60008060408385031215611d1a57600080fd5b611d2383611723565b9150611d3160208401611b2e565b90509250929050565b60008060408385031215611d4d57600080fd5b611d5683611723565b9150611d3160208401611723565b600080600080600060a08688031215611d7c57600080fd5b611d8586611723565b9450611d9360208701611723565b9350604086013592506060860135915060808601356001600160401b03811115611dbc57600080fd5b611b06888289016119fb565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611e1157607f821691505b60208210811415611e3257634e487b7160e01b600052602260045260246000fd5b50919050565b868152602081018690526001600160a01b03858116604083015260a06060830181905282018490526000906001600160fb1b03851115611e7757600080fd5b8460051b808760c0860137600090840160c00190815293166080909201919091525095945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611ee057611ee0611eb8565b500390565b60008219821115611ef857611ef8611eb8565b500190565b604081526000611f106040830185611c18565b8281036020840152611f228185611c18565b95945050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090611f5790830186611c18565b8281036060840152611f698186611c18565b90508281036080840152611f7d8185611852565b98975050505050505050565b600060208284031215611f9b57600080fd5b81516114f481611769565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b60008351611fe2818460208801611826565b601d60f91b9083019081528351612000816001840160208801611826565b01600101949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061204690830184611852565b979650505050505050565b600081600019048311821515161561206b5761206b611eb8565b500290565b60008161207f5761207f611eb8565b506000190190565b600060001982141561209b5761209b611eb8565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826120c7576120c76120a2565b500490565b6000826120db576120db6120a2565b50069056fea2646970667358221220e06d80b12571e59198e5f86bc85f33997eb56c44d44c2d989f838b4a743237c664736f6c634300080b0033000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a000000000000000000000000000000000000000000000000000000000000008027babda92854c18ea5a13803c6db8de5caa27245ffe58904ca295754050d8b890000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d56417947326f4e566362686f54515475796b793771315256417565386158694d4a5041343847794a6e6a77440000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c35760003560e01c8063715018a6116100f9578063b429afeb11610097578063e985e9c511610071578063e985e9c51461042d578063f242432a1461045b578063f2fde38b1461046e578063f43a22dc1461048157600080fd5b8063b429afeb146103e4578063c646273e14610407578063d2d65ff51461041a57600080fd5b80639dc29fac116100d35780639dc29fac1461039b578063a1a4babf146103ae578063a22cb465146103c1578063afa40bbd146103d457600080fd5b8063715018a6146103795780638da5cb5b146103815780639103321d1461039257600080fd5b80632eb2c2d611610166578063443da2a211610140578063443da2a2146103255780634e1273f414610338578063564566a81461035857806360d938dc1461036557600080fd5b80632eb2c2d6146102b65780632eb4a7ab146102c95780633b66f49d146102f057600080fd5b80630e89341c116101a25780630e89341c1461023b57806318160ddd1461025b5780632d69044f146102645780632dded0071461027757600080fd5b8062fdd58e146101c857806301ffc9a71461020357806302fe530514610226575b600080fd5b6101f06101d636600461173f565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61021661021136600461177f565b610489565b60405190151581526020016101fa565b61023961023436600461179c565b6104db565b005b61024e61024936600461180d565b61051f565b6040516101fa919061187e565b6101f060045481565b6102396102723660046118dc565b6105b3565b61029e7f000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc1181565b6040516001600160a01b0390911681526020016101fa565b6102396102c4366004611a6a565b6106db565b6101f07f27babda92854c18ea5a13803c6db8de5caa27245ffe58904ca295754050d8b8981565b6103136102fe366004611b13565b60076020526000908152604090205460ff1681565b60405160ff90911681526020016101fa565b610239610333366004611b3e565b610988565b61034b610346366004611b59565b6109d0565b6040516101fa9190611c53565b6005546102169060ff1681565b60035461021690600160a01b900460ff1681565b610239610afc565b6002546001600160a01b031661029e565b6101f06101f481565b6102396103a936600461173f565b610b32565b6102396103bc366004611c77565b610b72565b6102396103cf366004611d07565b610dab565b6101f0681043561a882930000081565b6102166103f2366004611b13565b60086020526000908152604090205460ff1681565b610239610415366004611d07565b610e17565b610239610428366004611b3e565b610e6c565b61021661043b366004611d3a565b600160209081526000928352604080842090915290825290205460ff1681565b610239610469366004611d64565b610ea9565b61023961047c366004611b13565b6110a0565b6101f0600181565b60006301ffc9a760e01b6001600160e01b0319831614806104ba5750636cdb3d1360e11b6001600160e01b03198316145b806104d557506303a24d0760e21b6001600160e01b03198316145b92915050565b6002546001600160a01b0316331461050e5760405162461bcd60e51b815260040161050590611dc8565b60405180910390fd5b61051a6006838361168a565b505050565b60606006805461052e90611dfd565b80601f016020809104026020016040519081016040528092919081815260200182805461055a90611dfd565b80156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b50505050509050919050565b60055460ff166105d657604051633afc8ce960e01b815260040160405180910390fd5b60018311156105f85760405163f81942c960e01b815260040160405180910390fd5b6101f46004548401111561061f57604051632cdb04a160e21b815260040160405180910390fd5b60048054840181556003546040516349db4ced60e01b81526001600160a01b037f000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc118116936349db4ced9361068d9361010393681043561a88293000008b029392169189918991339101611e38565b600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b5050505061051a336001856040518060200160405280600081525061113b565b82518251811461071f5760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610505565b336001600160a01b038716148061075957506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6107965760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610505565b60008060005b83811015610864578681815181106107b6576107b6611ea2565b602002602001015192508581815181106107d2576107d2611ea2565b60200260200101519150816000808b6001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002060008282546108219190611ece565b90915550506001600160a01b03881660009081526020818152604080832086845290915281208054849290610857908490611ee5565b909155505060010161079c565b50866001600160a01b0316886001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89896040516108b4929190611efd565b60405180910390a46001600160a01b0387163b156109555760405163bc197c8160e01b808252906001600160a01b0389169063bc197c81906109029033908d908c908c908c90600401611f2b565b6020604051808303816000875af1158015610921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190611f89565b6001600160e01b03191614610962565b6001600160a01b03871615155b61097e5760405162461bcd60e51b815260040161050590611fa6565b5050505050505050565b6002546001600160a01b031633146109b25760405162461bcd60e51b815260040161050590611dc8565b60038054911515600160a01b0260ff60a01b19909216919091179055565b81518151606091908114610a185760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610505565b806001600160401b03811115610a3057610a30611927565b604051908082528060200260200182016040528015610a59578160200160208202803683370190505b50915060005b81811015610af457600080868381518110610a7c57610a7c611ea2565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610ab857610ab8611ea2565b6020026020010151815260200190815260200160002054838281518110610ae157610ae1611ea2565b6020908102919091010152600101610a5f565b505092915050565b6002546001600160a01b03163314610b265760405162461bcd60e51b815260040161050590611dc8565b610b306000611283565b565b3360009081526008602052604090205460ff16610b6257604051635990781360e01b815260040160405180910390fd5b610b6e826001836112d5565b5050565b600354600160a01b900460ff16610b9c57604051630a6802b560e41b815260040160405180910390fd5b6004805460ff881601908190556101f41015610bcb57604051632cdb04a160e21b815260040160405180910390fd5b3360009081526007602052604090205460ff8087169181168801161115610c055760405163843ce46b60e01b815260040160405180910390fd5b6003546040516349db4ced60e01b81526001600160a01b037f000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc118116926349db4ced92610c70926101039260ff8d16681043561a882930000002929116908a908a903390600401611e38565b600060405180830381600087803b158015610c8a57600080fd5b505af1158015610c9e573d6000803e3d6000fd5b5060009250610cb291503390506014611359565b610cbe8760ff166114fb565b604051602001610ccf929190611fd0565b6040516020818303038152906040528051906020012090506000610d498484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f27babda92854c18ea5a13803c6db8de5caa27245ffe58904ca295754050d8b8992508691506116009050565b905080610d695760405163582f497d60e11b815260040160405180910390fd5b336000818152600760209081526040808320805460ff19811660ff9182168f01821617909155815192830190915291815261097e9291600191908c169061113b565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6002546001600160a01b03163314610e415760405162461bcd60e51b815260040161050590611dc8565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6002546001600160a01b03163314610e965760405162461bcd60e51b815260040161050590611dc8565b6005805460ff1916911515919091179055565b336001600160a01b0386161480610ee357506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610f205760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610505565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290610f51908490611ece565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290610f87908490611ee5565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156110705760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e619061101d9033908a9089908990899060040161200c565b6020604051808303816000875af115801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190611f89565b6001600160e01b0319161461107d565b6001600160a01b03841615155b6110995760405162461bcd60e51b815260040161050590611fa6565b5050505050565b6002546001600160a01b031633146110ca5760405162461bcd60e51b815260040161050590611dc8565b6001600160a01b03811661112f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610505565b61113881611283565b50565b6001600160a01b0384166000908152602081815260408083208684529091528120805484929061116c908490611ee5565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b156112545760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e619061120190339060009089908990899060040161200c565b6020604051808303816000875af1158015611220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112449190611f89565b6001600160e01b03191614611261565b6001600160a01b03841615155b61127d5760405162461bcd60e51b815260040161050590611fa6565b50505050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020818152604080832085845290915281208054839290611306908490611ece565b909155505060408051838152602081018390526000916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b60606000611368836002612051565b611373906002611ee5565b6001600160401b0381111561138a5761138a611927565b6040519080825280601f01601f1916602001820160405280156113b4576020820181803683370190505b509050600360fc1b816000815181106113cf576113cf611ea2565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113fe576113fe611ea2565b60200101906001600160f81b031916908160001a9053506000611422846002612051565b61142d906001611ee5565b90505b60018111156114a5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061146157611461611ea2565b1a60f81b82828151811061147757611477611ea2565b60200101906001600160f81b031916908160001a90535060049490941c9361149e81612070565b9050611430565b5083156114f45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610505565b9392505050565b60608161151f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611549578061153381612087565b91506115429050600a836120b8565b9150611523565b6000816001600160401b0381111561156357611563611927565b6040519080825280601f01601f19166020018201604052801561158d576020820181803683370190505b5090505b84156115f8576115a2600183611ece565b91506115af600a866120cc565b6115ba906030611ee5565b60f81b8183815181106115cf576115cf611ea2565b60200101906001600160f81b031916908160001a9053506115f1600a866120b8565b9450611591565b949350505050565b60008261160d8584611616565b14949350505050565b600081815b845181101561168257600085828151811061163857611638611ea2565b6020026020010151905080831161165e576000838152602082905260409020925061166f565b600081815260208490526040902092505b508061167a81612087565b91505061161b565b509392505050565b82805461169690611dfd565b90600052602060002090601f0160209004810192826116b857600085556116fe565b82601f106116d15782800160ff198235161785556116fe565b828001600101855582156116fe579182015b828111156116fe5782358255916020019190600101906116e3565b5061170a92915061170e565b5090565b5b8082111561170a576000815560010161170f565b80356001600160a01b038116811461173a57600080fd5b919050565b6000806040838503121561175257600080fd5b61175b83611723565b946020939093013593505050565b6001600160e01b03198116811461113857600080fd5b60006020828403121561179157600080fd5b81356114f481611769565b600080602083850312156117af57600080fd5b82356001600160401b03808211156117c657600080fd5b818501915085601f8301126117da57600080fd5b8135818111156117e957600080fd5b8660208285010111156117fb57600080fd5b60209290920196919550909350505050565b60006020828403121561181f57600080fd5b5035919050565b60005b83811015611841578181015183820152602001611829565b8381111561127d5750506000910152565b6000815180845261186a816020860160208601611826565b601f01601f19169290920160200192915050565b6020815260006114f46020830184611852565b60008083601f8401126118a357600080fd5b5081356001600160401b038111156118ba57600080fd5b6020830191508360208260051b85010111156118d557600080fd5b9250929050565b6000806000604084860312156118f157600080fd5b8335925060208401356001600160401b0381111561190e57600080fd5b61191a86828701611891565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561196557611965611927565b604052919050565b60006001600160401b0382111561198657611986611927565b5060051b60200190565b600082601f8301126119a157600080fd5b813560206119b66119b18361196d565b61193d565b82815260059290921b840181019181810190868411156119d557600080fd5b8286015b848110156119f057803583529183019183016119d9565b509695505050505050565b600082601f830112611a0c57600080fd5b81356001600160401b03811115611a2557611a25611927565b611a38601f8201601f191660200161193d565b818152846020838601011115611a4d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611a8257600080fd5b611a8b86611723565b9450611a9960208701611723565b935060408601356001600160401b0380821115611ab557600080fd5b611ac189838a01611990565b94506060880135915080821115611ad757600080fd5b611ae389838a01611990565b93506080880135915080821115611af957600080fd5b50611b06888289016119fb565b9150509295509295909350565b600060208284031215611b2557600080fd5b6114f482611723565b8035801515811461173a57600080fd5b600060208284031215611b5057600080fd5b6114f482611b2e565b60008060408385031215611b6c57600080fd5b82356001600160401b0380821115611b8357600080fd5b818501915085601f830112611b9757600080fd5b81356020611ba76119b18361196d565b82815260059290921b84018101918181019089841115611bc657600080fd5b948201945b83861015611beb57611bdc86611723565b82529482019490820190611bcb565b96505086013592505080821115611c0157600080fd5b50611c0e85828601611990565b9150509250929050565b600081518084526020808501945080840160005b83811015611c4857815187529582019590820190600101611c2c565b509495945050505050565b6020815260006114f46020830184611c18565b803560ff8116811461173a57600080fd5b60008060008060008060808789031215611c9057600080fd5b611c9987611c66565b9550611ca760208801611c66565b945060408701356001600160401b0380821115611cc357600080fd5b611ccf8a838b01611891565b90965094506060890135915080821115611ce857600080fd5b50611cf589828a01611891565b979a9699509497509295939492505050565b60008060408385031215611d1a57600080fd5b611d2383611723565b9150611d3160208401611b2e565b90509250929050565b60008060408385031215611d4d57600080fd5b611d5683611723565b9150611d3160208401611723565b600080600080600060a08688031215611d7c57600080fd5b611d8586611723565b9450611d9360208701611723565b9350604086013592506060860135915060808601356001600160401b03811115611dbc57600080fd5b611b06888289016119fb565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611e1157607f821691505b60208210811415611e3257634e487b7160e01b600052602260045260246000fd5b50919050565b868152602081018690526001600160a01b03858116604083015260a06060830181905282018490526000906001600160fb1b03851115611e7757600080fd5b8460051b808760c0860137600090840160c00190815293166080909201919091525095945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611ee057611ee0611eb8565b500390565b60008219821115611ef857611ef8611eb8565b500190565b604081526000611f106040830185611c18565b8281036020840152611f228185611c18565b95945050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090611f5790830186611c18565b8281036060840152611f698186611c18565b90508281036080840152611f7d8185611852565b98975050505050505050565b600060208284031215611f9b57600080fd5b81516114f481611769565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b60008351611fe2818460208801611826565b601d60f91b9083019081528351612000816001840160208801611826565b01600101949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061204690830184611852565b979650505050505050565b600081600019048311821515161561206b5761206b611eb8565b500290565b60008161207f5761207f611eb8565b506000190190565b600060001982141561209b5761209b611eb8565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826120c7576120c76120a2565b500490565b6000826120db576120db6120a2565b50069056fea2646970667358221220e06d80b12571e59198e5f86bc85f33997eb56c44d44c2d989f838b4a743237c664736f6c634300080b0033

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

000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a000000000000000000000000000000000000000000000000000000000000008027babda92854c18ea5a13803c6db8de5caa27245ffe58904ca295754050d8b890000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d56417947326f4e566362686f54515475796b793771315256417565386158694d4a5041343847794a6e6a77440000000000000000000000

-----Decoded View---------------
Arg [0] : oddxStaking_ (address): 0x428b6a13277116C62D751bebbC6f47011A0Cdc11
Arg [1] : genzeeAddress_ (address): 0x201675fBFAAAC3A51371E4C31FF73Ac14ceE2A5A
Arg [2] : uri_ (string): ipfs://QmVAyG2oNVcbhoTQTuyky7q1RVAue8aXiMJPA48GyJnjwD
Arg [3] : merkleRoot_ (bytes32): 0x27babda92854c18ea5a13803c6db8de5caa27245ffe58904ca295754050d8b89

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11
Arg [1] : 000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 27babda92854c18ea5a13803c6db8de5caa27245ffe58904ca295754050d8b89
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [5] : 697066733a2f2f516d56417947326f4e566362686f54515475796b7937713152
Arg [6] : 56417565386158694d4a5041343847794a6e6a77440000000000000000000000


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.