ETH Price: $3,156.93 (+1.21%)
Gas: 2 Gwei

Token

 

Overview

Max Total Supply

2,094

Holders

316

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0x066fb205847faaec56be076375948dfda02407aa
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:
NanoTechChips

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 5 : NanoTechChips.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "solmate/src/auth/Owned.sol";
import "solmate/src/tokens/ERC1155.sol";
import "@openzeppelin/contracts/utils/Strings.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";

interface IStardust {
  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external returns (bool);
}

contract NanoTechChips is ERC1155, Owned {
  uint256 public constant PRICE = 250 ether;

  address private verifier;
  string public baseURI =
    "ipfs://QmRHwfoqVzWmqWQLjvgtYp9iQYC6c379yPCB1Qq9ANAaWP/?";

  bool public paused = false;

  mapping(address => uint256) public mintedByWallet;

  IStardust private stardustContract;

  constructor(address _stardustContract) Owned(msg.sender) {
    stardustContract = IStardust(_stardustContract);
  }

  function mintWithClaimable(
    uint256 _amount,
    uint256 _count,
    bytes calldata _signature
  ) external {
    require(!paused, "Minting stopped");

    address signer = _recoverWallet(msg.sender, _count, _signature);

    require(signer == verifier, "Unverified transaction");
    require(mintedByWallet[msg.sender] < _count, "Invalid mint count");

    mintedByWallet[msg.sender] = _count;

    _mint(msg.sender, 0, _amount, "");
  }

  function mintWithClaimed(uint256 _amount) external {
    require(!paused, "Minting stopped");

    stardustContract.transferFrom(
      msg.sender,
      address(stardustContract),
      PRICE * _amount
    );

    _mint(msg.sender, 0, _amount, "");
  }

  function burn(address _from, uint256 _amount) external {
    require(
      msg.sender == _from || isApprovedForAll[_from][msg.sender],
      "Not authorized"
    );

    _burn(_from, 0, _amount);
  }

  function mintBatch(address[] calldata _to, uint256[] calldata _amounts)
    external
    onlyOwner
  {
    require(_to.length == _amounts.length, "To and amounts length must match");

    for (uint256 i = 0; i < _to.length; ++i) {
      _mint(_to[i], 0, _amounts[i], "");
    }
  }

  function uri(uint256 _id)
    public
    view
    virtual
    override(ERC1155)
    returns (string memory)
  {
    return string(abi.encodePacked(baseURI, Strings.toString(_id)));
  }

  function _recoverWallet(
    address _wallet,
    uint256 _amount,
    bytes memory _signature
  ) internal pure returns (address) {
    return
      ECDSA.recover(
        ECDSA.toEthSignedMessageHash(
          keccak256(abi.encodePacked(_wallet, _amount))
        ),
        _signature
      );
  }

  function flipSale() external onlyOwner {
    paused = !paused;
  }

  function setVerifier(address _newVerifier) external onlyOwner {
    verifier = _newVerifier;
  }
}

File 2 of 5 : ECDSA.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)

pragma solidity ^0.8.0;

import "../Strings.sol";

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        } else if (error == RecoverError.InvalidSignatureV) {
            revert("ECDSA: invalid signature 'v' value");
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature` or error string. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     *
     * Documentation for signature generation:
     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
     *
     * _Available since v4.3._
     */
    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        // Check the signature length
        // - case 65: r,s,v signature (standard)
        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            /// @solidity memory-safe-assembly
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else if (signature.length == 64) {
            bytes32 r;
            bytes32 vs;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            /// @solidity memory-safe-assembly
            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
            }
            return tryRecover(hash, r, vs);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
     *
     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address, RecoverError) {
        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        uint8 v = uint8((uint256(vs) >> 255) + 27);
        return tryRecover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
     *
     * _Available since v4.2._
     */
    function recover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,
     * `r` and `s` signature fields separately.
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }
        if (v != 27 && v != 28) {
            return (address(0), RecoverError.InvalidSignatureV);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from `s`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s));
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

File 3 of 5 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)

pragma solidity ^0.8.0;

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

    /**
     * @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);
    }

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

File 4 of 5 : 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/transmissions11/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 calldata 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[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == 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 < ids.length; ) {
            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[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++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 virtual {
        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 virtual {
        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 virtual {
        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 virtual {
        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/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

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

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event OwnerUpdated(address indexed user, address indexed newOwner);

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnerUpdated(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function setOwner(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnerUpdated(msg.sender, newOwner);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_stardustContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","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":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"flipSale","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":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"mintWithClaimable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintWithClaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedByWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newVerifier","type":"address"}],"name":"setVerifier","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":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60e060405260376080818152906200290e60a0396004906200002290826200016b565b506005805460ff191690553480156200003a57600080fd5b5060405162002945380380620029458339810160408190526200005d9162000237565b600280546001600160a01b0319163390811790915560405181906000907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350600780546001600160a01b0319166001600160a01b039290921691909117905562000269565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000f157607f821691505b6020821081036200011257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016657600081815260208120601f850160051c81016020861015620001415750805b601f850160051c820191505b8181101562000162578281556001016200014d565b5050505b505050565b81516001600160401b03811115620001875762000187620000c6565b6200019f81620001988454620000dc565b8462000118565b602080601f831160018114620001d75760008415620001be5750858301515b600019600386901b1c1916600185901b17855562000162565b600085815260208120601f198616915b828110156200020857888601518255948401946001909101908401620001e7565b5085821015620002275787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200024a57600080fd5b81516001600160a01b03811681146200026257600080fd5b9392505050565b61269580620002796000396000f3fe608060405234801561001057600080fd5b506004361061016b5760003560e01c80636c0360eb116100cd578063999f65d011610081578063a22cb46511610066578063a22cb46514610327578063e985e9c51461033a578063f242432a1461036857600080fd5b8063999f65d0146103015780639dc29fac1461031457600080fd5b80637c88e3d9116100b25780637c88e3d9146102995780638d859f3e146102ac5780638da5cb5b146102bc57600080fd5b80636c0360eb146102895780637ba5e6211461029157600080fd5b80631f69acae116101245780634e1273f4116101095780634e1273f4146102495780635437988d146102695780635c975abb1461027c57600080fd5b80631f69acae146102235780632eb2c2d61461023657600080fd5b80630d758111116101555780630d758111146101ce5780630e89341c146101ee57806313af40351461020e57600080fd5b8062fdd58e1461017057806301ffc9a7146101ab575b600080fd5b61019861017e366004611cea565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b6101be6101b9366004611d42565b61037b565b60405190151581526020016101a2565b6101986101dc366004611d66565b60066020526000908152604090205481565b6102016101fc366004611d81565b610460565b6040516101a29190611e10565b61022161021c366004611d66565b610494565b005b610221610231366004611d81565b610571565b610221610244366004611eaa565b6106b4565b61025c610257366004611f65565b610a57565b6040516101a29190611fd1565b610221610277366004611d66565b610bb4565b6005546101be9060ff1681565b610201610c62565b610221610cf0565b6102216102a7366004611f65565b610d89565b610198680d8d726b7177a8000081565b6002546102dc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b61022161030f366004612015565b610ebb565b610221610322366004611cea565b611048565b61022161033536600461206a565b6110f8565b6101be6103483660046120a1565b600160209081526000928352604080842090915290825290205460ff1681565b6102216103763660046120d4565b61118f565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061040e57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061045a57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600461046d83611461565b60405160200161047e9291906121bb565b6040516020818303038152906040529050919050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146105005760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60055460ff16156105c45760405162461bcd60e51b815260206004820152600f60248201527f4d696e74696e672073746f70706564000000000000000000000000000000000060448201526064016104f7565b60075473ffffffffffffffffffffffffffffffffffffffff166323b872dd33826105f785680d8d726b7177a800006122cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106949190612308565b506106b1336000836040518060200160405280600081525061159e565b50565b8483146107035760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016104f7565b3373ffffffffffffffffffffffffffffffffffffffff89161480610757575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b6107a35760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b60008060005b87811015610878578888828181106107c3576107c3612325565b9050602002013592508686828181106107de576107de612325565b73ffffffffffffffffffffffffffffffffffffffff8e1660009081526020818152604080832089845282528220805493909102949094013595508593925090610828908490612354565b909155505073ffffffffffffffffffffffffffffffffffffffff8a166000908152602081815260408083208684529091528120805484929061086b90849061236b565b90915550506001016107a9565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516108f394939291906123d2565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b156109e5576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c819061097a9033908f908e908e908e908e908e908e9060040161244d565b6020604051808303816000875af1158015610999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bd91906124be565b7fffffffff0000000000000000000000000000000000000000000000000000000016146109ff565b73ffffffffffffffffffffffffffffffffffffffff891615155b610a4b5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b50505050505050505050565b6060838214610aa85760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016104f7565b8367ffffffffffffffff811115610ac157610ac16124db565b604051908082528060200260200182016040528015610aea578160200160208202803683370190505b50905060005b84811015610bab57600080878784818110610b0d57610b0d612325565b9050602002016020810190610b229190611d66565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610b7057610b70612325565b90506020020135815260200190815260200160002054828281518110610b9857610b98612325565b6020908102919091010152600101610af0565b50949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610c1b5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104f7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60048054610c6f9061214c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b9061214c565b8015610ce85780601f10610cbd57610100808354040283529160200191610ce8565b820191906000526020600020905b815481529060010190602001808311610ccb57829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff163314610d575760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104f7565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b60025473ffffffffffffffffffffffffffffffffffffffff163314610df05760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104f7565b828114610e3f5760405162461bcd60e51b815260206004820181905260248201527f546f20616e6420616d6f756e7473206c656e677468206d757374206d6174636860448201526064016104f7565b60005b83811015610eb457610ea4858583818110610e5f57610e5f612325565b9050602002016020810190610e749190611d66565b6000858585818110610e8857610e88612325565b905060200201356040518060200160405280600081525061159e565b610ead8161250a565b9050610e42565b5050505050565b60055460ff1615610f0e5760405162461bcd60e51b815260206004820152600f60248201527f4d696e74696e672073746f70706564000000000000000000000000000000000060448201526064016104f7565b6000610f51338585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178892505050565b60035490915073ffffffffffffffffffffffffffffffffffffffff808316911614610fbe5760405162461bcd60e51b815260206004820152601660248201527f556e7665726966696564207472616e73616374696f6e0000000000000000000060448201526064016104f7565b33600090815260066020526040902054841161101c5760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206d696e7420636f756e74000000000000000000000000000060448201526064016104f7565b33600081815260066020908152604080832088905580519182019052818152610eb4929190889061159e565b3373ffffffffffffffffffffffffffffffffffffffff8316148061109c575073ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832033845290915290205460ff165b6110e85760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a656400000000000000000000000000000000000060448201526064016104f7565b6110f48260008361183b565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff871614806111e3575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b61122f5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602081815260408083208784529091528120805485929061126d908490612354565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260208181526040808320878452909152812080548592906112b090849061236b565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b156113f3576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e61906113889033908b908a908a908a908a90600401612542565b6020604051808303816000875af11580156113a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb91906124be565b7fffffffff00000000000000000000000000000000000000000000000000000000161461140d565b73ffffffffffffffffffffffffffffffffffffffff851615155b6114595760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b505050505050565b6060816000036114a457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156114ce57806114b88161250a565b91506114c79050600a836125c3565b91506114a8565b60008167ffffffffffffffff8111156114e9576114e96124db565b6040519080825280601f01601f191660200182016040528015611513576020820181803683370190505b5090505b841561159657611528600183612354565b9150611535600a866125d7565b61154090603061236b565b60f81b81838151811061155557611555612325565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061158f600a866125c3565b9450611517565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152812080548492906115dc90849061236b565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b1561171c576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906116b19033906000908990899089906004016125eb565b6020604051808303816000875af11580156116d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f491906124be565b7fffffffff000000000000000000000000000000000000000000000000000000001614611736565b73ffffffffffffffffffffffffffffffffffffffff841615155b6117825760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b50505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b166020820152603481018390526000906115969061183590605401604051602081830303815290604052805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b836118d9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020818152604080832085845290915281208054839290611879908490612354565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b60008060006118e885856118fd565b915091506118f58161196b565b509392505050565b60008082516041036119335760208301516040840151606085015160001a61192787828585611b57565b94509450505050611964565b825160400361195c5760208301516040840151611951868383611c6f565b935093505050611964565b506000905060025b9250929050565b600081600481111561197f5761197f612630565b036119875750565b600181600481111561199b5761199b612630565b036119e85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104f7565b60028160048111156119fc576119fc612630565b03611a495760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104f7565b6003816004811115611a5d57611a5d612630565b03611ad05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104f7565b6004816004811115611ae457611ae4612630565b036106b15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104f7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b8e5750600090506003611c66565b8460ff16601b14158015611ba657508460ff16601c14155b15611bb75750600090506004611c66565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c0b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611c5f57600060019250925050611c66565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681611ca560ff86901c601b61236b565b9050611cb387828885611b57565b935093505050935093915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ce557600080fd5b919050565b60008060408385031215611cfd57600080fd5b611d0683611cc1565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146106b157600080fd5b600060208284031215611d5457600080fd5b8135611d5f81611d14565b9392505050565b600060208284031215611d7857600080fd5b611d5f82611cc1565b600060208284031215611d9357600080fd5b5035919050565b60005b83811015611db5578181015183820152602001611d9d565b838111156117825750506000910152565b60008151808452611dde816020860160208601611d9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611d5f6020830184611dc6565b60008083601f840112611e3557600080fd5b50813567ffffffffffffffff811115611e4d57600080fd5b6020830191508360208260051b850101111561196457600080fd5b60008083601f840112611e7a57600080fd5b50813567ffffffffffffffff811115611e9257600080fd5b60208301915083602082850101111561196457600080fd5b60008060008060008060008060a0898b031215611ec657600080fd5b611ecf89611cc1565b9750611edd60208a01611cc1565b9650604089013567ffffffffffffffff80821115611efa57600080fd5b611f068c838d01611e23565b909850965060608b0135915080821115611f1f57600080fd5b611f2b8c838d01611e23565b909650945060808b0135915080821115611f4457600080fd5b50611f518b828c01611e68565b999c989b5096995094979396929594505050565b60008060008060408587031215611f7b57600080fd5b843567ffffffffffffffff80821115611f9357600080fd5b611f9f88838901611e23565b90965094506020870135915080821115611fb857600080fd5b50611fc587828801611e23565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561200957835183529284019291840191600101611fed565b50909695505050505050565b6000806000806060858703121561202b57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561205057600080fd5b611fc587828801611e68565b80151581146106b157600080fd5b6000806040838503121561207d57600080fd5b61208683611cc1565b915060208301356120968161205c565b809150509250929050565b600080604083850312156120b457600080fd5b6120bd83611cc1565b91506120cb60208401611cc1565b90509250929050565b60008060008060008060a087890312156120ed57600080fd5b6120f687611cc1565b955061210460208801611cc1565b94506040870135935060608701359250608087013567ffffffffffffffff81111561212e57600080fd5b61213a89828a01611e68565b979a9699509497509295939492505050565b600181811c9082168061216057607f821691505b602082108103612199577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600081516121b1818560208601611d9a565b9290920192915050565b600080845481600182811c9150808316806121d757607f831692505b6020808410820361220f577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015612223576001811461225657612283565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650612283565b60008b81526020902060005b8681101561227b5781548b820152908501908301612262565b505084890196505b505050505050612293818561219f565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123035761230361229c565b500290565b60006020828403121561231a57600080fd5b8151611d5f8161205c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156123665761236661229c565b500390565b6000821982111561237e5761237e61229c565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156123b557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040815260006123e6604083018688612383565b82810360208401526123f9818587612383565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261248760a08301888a612383565b828103606084015261249a818789612383565b905082810360808401526124af818587612404565b9b9a5050505050505050505050565b6000602082840312156124d057600080fd5b8151611d5f81611d14565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361253b5761253b61229c565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261258860a083018486612404565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826125d2576125d2612594565b500490565b6000826125e6576125e6612594565b500690565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a060808301526123f960a0830184611dc6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212207692a34a51269a9b776ff1b8f5e49454978ccd5f98c5625601d3f3836fb8d56564736f6c634300080f0033697066733a2f2f516d524877666f71567a576d7157514c6a7667745970396951594336633337397950434231517139414e416157502f3f000000000000000000000000a8bb2ef88c9fd04952bf47041f9329d1e449c204

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061016b5760003560e01c80636c0360eb116100cd578063999f65d011610081578063a22cb46511610066578063a22cb46514610327578063e985e9c51461033a578063f242432a1461036857600080fd5b8063999f65d0146103015780639dc29fac1461031457600080fd5b80637c88e3d9116100b25780637c88e3d9146102995780638d859f3e146102ac5780638da5cb5b146102bc57600080fd5b80636c0360eb146102895780637ba5e6211461029157600080fd5b80631f69acae116101245780634e1273f4116101095780634e1273f4146102495780635437988d146102695780635c975abb1461027c57600080fd5b80631f69acae146102235780632eb2c2d61461023657600080fd5b80630d758111116101555780630d758111146101ce5780630e89341c146101ee57806313af40351461020e57600080fd5b8062fdd58e1461017057806301ffc9a7146101ab575b600080fd5b61019861017e366004611cea565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b6101be6101b9366004611d42565b61037b565b60405190151581526020016101a2565b6101986101dc366004611d66565b60066020526000908152604090205481565b6102016101fc366004611d81565b610460565b6040516101a29190611e10565b61022161021c366004611d66565b610494565b005b610221610231366004611d81565b610571565b610221610244366004611eaa565b6106b4565b61025c610257366004611f65565b610a57565b6040516101a29190611fd1565b610221610277366004611d66565b610bb4565b6005546101be9060ff1681565b610201610c62565b610221610cf0565b6102216102a7366004611f65565b610d89565b610198680d8d726b7177a8000081565b6002546102dc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b61022161030f366004612015565b610ebb565b610221610322366004611cea565b611048565b61022161033536600461206a565b6110f8565b6101be6103483660046120a1565b600160209081526000928352604080842090915290825290205460ff1681565b6102216103763660046120d4565b61118f565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061040e57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061045a57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600461046d83611461565b60405160200161047e9291906121bb565b6040516020818303038152906040529050919050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146105005760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60055460ff16156105c45760405162461bcd60e51b815260206004820152600f60248201527f4d696e74696e672073746f70706564000000000000000000000000000000000060448201526064016104f7565b60075473ffffffffffffffffffffffffffffffffffffffff166323b872dd33826105f785680d8d726b7177a800006122cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106949190612308565b506106b1336000836040518060200160405280600081525061159e565b50565b8483146107035760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016104f7565b3373ffffffffffffffffffffffffffffffffffffffff89161480610757575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b6107a35760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b60008060005b87811015610878578888828181106107c3576107c3612325565b9050602002013592508686828181106107de576107de612325565b73ffffffffffffffffffffffffffffffffffffffff8e1660009081526020818152604080832089845282528220805493909102949094013595508593925090610828908490612354565b909155505073ffffffffffffffffffffffffffffffffffffffff8a166000908152602081815260408083208684529091528120805484929061086b90849061236b565b90915550506001016107a9565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516108f394939291906123d2565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b156109e5576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c819061097a9033908f908e908e908e908e908e908e9060040161244d565b6020604051808303816000875af1158015610999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bd91906124be565b7fffffffff0000000000000000000000000000000000000000000000000000000016146109ff565b73ffffffffffffffffffffffffffffffffffffffff891615155b610a4b5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b50505050505050505050565b6060838214610aa85760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016104f7565b8367ffffffffffffffff811115610ac157610ac16124db565b604051908082528060200260200182016040528015610aea578160200160208202803683370190505b50905060005b84811015610bab57600080878784818110610b0d57610b0d612325565b9050602002016020810190610b229190611d66565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610b7057610b70612325565b90506020020135815260200190815260200160002054828281518110610b9857610b98612325565b6020908102919091010152600101610af0565b50949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610c1b5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104f7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60048054610c6f9061214c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b9061214c565b8015610ce85780601f10610cbd57610100808354040283529160200191610ce8565b820191906000526020600020905b815481529060010190602001808311610ccb57829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff163314610d575760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104f7565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b60025473ffffffffffffffffffffffffffffffffffffffff163314610df05760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104f7565b828114610e3f5760405162461bcd60e51b815260206004820181905260248201527f546f20616e6420616d6f756e7473206c656e677468206d757374206d6174636860448201526064016104f7565b60005b83811015610eb457610ea4858583818110610e5f57610e5f612325565b9050602002016020810190610e749190611d66565b6000858585818110610e8857610e88612325565b905060200201356040518060200160405280600081525061159e565b610ead8161250a565b9050610e42565b5050505050565b60055460ff1615610f0e5760405162461bcd60e51b815260206004820152600f60248201527f4d696e74696e672073746f70706564000000000000000000000000000000000060448201526064016104f7565b6000610f51338585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061178892505050565b60035490915073ffffffffffffffffffffffffffffffffffffffff808316911614610fbe5760405162461bcd60e51b815260206004820152601660248201527f556e7665726966696564207472616e73616374696f6e0000000000000000000060448201526064016104f7565b33600090815260066020526040902054841161101c5760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206d696e7420636f756e74000000000000000000000000000060448201526064016104f7565b33600081815260066020908152604080832088905580519182019052818152610eb4929190889061159e565b3373ffffffffffffffffffffffffffffffffffffffff8316148061109c575073ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832033845290915290205460ff165b6110e85760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420617574686f72697a656400000000000000000000000000000000000060448201526064016104f7565b6110f48260008361183b565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff871614806111e3575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b61122f5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602081815260408083208784529091528120805485929061126d908490612354565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260208181526040808320878452909152812080548592906112b090849061236b565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b156113f3576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e61906113889033908b908a908a908a908a90600401612542565b6020604051808303816000875af11580156113a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb91906124be565b7fffffffff00000000000000000000000000000000000000000000000000000000161461140d565b73ffffffffffffffffffffffffffffffffffffffff851615155b6114595760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b505050505050565b6060816000036114a457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156114ce57806114b88161250a565b91506114c79050600a836125c3565b91506114a8565b60008167ffffffffffffffff8111156114e9576114e96124db565b6040519080825280601f01601f191660200182016040528015611513576020820181803683370190505b5090505b841561159657611528600183612354565b9150611535600a866125d7565b61154090603061236b565b60f81b81838151811061155557611555612325565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061158f600a866125c3565b9450611517565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152812080548492906115dc90849061236b565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b1561171c576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906116b19033906000908990899089906004016125eb565b6020604051808303816000875af11580156116d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f491906124be565b7fffffffff000000000000000000000000000000000000000000000000000000001614611736565b73ffffffffffffffffffffffffffffffffffffffff841615155b6117825760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b50505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b166020820152603481018390526000906115969061183590605401604051602081830303815290604052805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b836118d9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020818152604080832085845290915281208054839290611879908490612354565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b60008060006118e885856118fd565b915091506118f58161196b565b509392505050565b60008082516041036119335760208301516040840151606085015160001a61192787828585611b57565b94509450505050611964565b825160400361195c5760208301516040840151611951868383611c6f565b935093505050611964565b506000905060025b9250929050565b600081600481111561197f5761197f612630565b036119875750565b600181600481111561199b5761199b612630565b036119e85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104f7565b60028160048111156119fc576119fc612630565b03611a495760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104f7565b6003816004811115611a5d57611a5d612630565b03611ad05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104f7565b6004816004811115611ae457611ae4612630565b036106b15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104f7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b8e5750600090506003611c66565b8460ff16601b14158015611ba657508460ff16601c14155b15611bb75750600090506004611c66565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c0b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611c5f57600060019250925050611c66565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681611ca560ff86901c601b61236b565b9050611cb387828885611b57565b935093505050935093915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ce557600080fd5b919050565b60008060408385031215611cfd57600080fd5b611d0683611cc1565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146106b157600080fd5b600060208284031215611d5457600080fd5b8135611d5f81611d14565b9392505050565b600060208284031215611d7857600080fd5b611d5f82611cc1565b600060208284031215611d9357600080fd5b5035919050565b60005b83811015611db5578181015183820152602001611d9d565b838111156117825750506000910152565b60008151808452611dde816020860160208601611d9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611d5f6020830184611dc6565b60008083601f840112611e3557600080fd5b50813567ffffffffffffffff811115611e4d57600080fd5b6020830191508360208260051b850101111561196457600080fd5b60008083601f840112611e7a57600080fd5b50813567ffffffffffffffff811115611e9257600080fd5b60208301915083602082850101111561196457600080fd5b60008060008060008060008060a0898b031215611ec657600080fd5b611ecf89611cc1565b9750611edd60208a01611cc1565b9650604089013567ffffffffffffffff80821115611efa57600080fd5b611f068c838d01611e23565b909850965060608b0135915080821115611f1f57600080fd5b611f2b8c838d01611e23565b909650945060808b0135915080821115611f4457600080fd5b50611f518b828c01611e68565b999c989b5096995094979396929594505050565b60008060008060408587031215611f7b57600080fd5b843567ffffffffffffffff80821115611f9357600080fd5b611f9f88838901611e23565b90965094506020870135915080821115611fb857600080fd5b50611fc587828801611e23565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561200957835183529284019291840191600101611fed565b50909695505050505050565b6000806000806060858703121561202b57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561205057600080fd5b611fc587828801611e68565b80151581146106b157600080fd5b6000806040838503121561207d57600080fd5b61208683611cc1565b915060208301356120968161205c565b809150509250929050565b600080604083850312156120b457600080fd5b6120bd83611cc1565b91506120cb60208401611cc1565b90509250929050565b60008060008060008060a087890312156120ed57600080fd5b6120f687611cc1565b955061210460208801611cc1565b94506040870135935060608701359250608087013567ffffffffffffffff81111561212e57600080fd5b61213a89828a01611e68565b979a9699509497509295939492505050565b600181811c9082168061216057607f821691505b602082108103612199577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600081516121b1818560208601611d9a565b9290920192915050565b600080845481600182811c9150808316806121d757607f831692505b6020808410820361220f577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015612223576001811461225657612283565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650612283565b60008b81526020902060005b8681101561227b5781548b820152908501908301612262565b505084890196505b505050505050612293818561219f565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123035761230361229c565b500290565b60006020828403121561231a57600080fd5b8151611d5f8161205c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156123665761236661229c565b500390565b6000821982111561237e5761237e61229c565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156123b557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040815260006123e6604083018688612383565b82810360208401526123f9818587612383565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261248760a08301888a612383565b828103606084015261249a818789612383565b905082810360808401526124af818587612404565b9b9a5050505050505050505050565b6000602082840312156124d057600080fd5b8151611d5f81611d14565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361253b5761253b61229c565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261258860a083018486612404565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826125d2576125d2612594565b500490565b6000826125e6576125e6612594565b500690565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a060808301526123f960a0830184611dc6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212207692a34a51269a9b776ff1b8f5e49454978ccd5f98c5625601d3f3836fb8d56564736f6c634300080f0033

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

000000000000000000000000a8bb2ef88c9fd04952bf47041f9329d1e449c204

-----Decoded View---------------
Arg [0] : _stardustContract (address): 0xa8bb2Ef88c9fD04952bF47041f9329D1e449C204

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a8bb2ef88c9fd04952bf47041f9329d1e449c204


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.