Sonic Blaze Testnet
    /

    Token

    Metronix (MTRX)
    ERC-721

    Overview

    Max Total Supply

    336 MTRX

    Holders

    158

    Market

    Onchain Market Cap

    $0.00

    Circulating Supply Market Cap

    -
    Balance
    4 MTRX
    0x98c1803ff7ab06224b0042c191e7ce45da3307d3
    Loading...
    Loading
    Loading...
    Loading
    Loading...
    Loading

    Click here to update the token information / general information

    Contract Source Code Verified (Exact Match)

    Contract Name:
    Metronix

    Compiler Version
    v0.8.22+commit.4fc1097e

    Optimization Enabled:
    Yes with 200 runs

    Other Settings:
    shanghai EvmVersion

    Contract Source Code (Solidity Standard Json-Input format)

    File 1 of 22 : Metronix.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // Compatible with OpenZeppelin Contracts ^5.1.0
    pragma solidity ^0.8.22;
    import {ERC721} from "@openzeppelin-contracts-5.1.0/token/ERC721/ERC721.sol";
    import {ERC721Enumerable} from "@openzeppelin-contracts-5.1.0/token/ERC721/extensions/ERC721Enumerable.sol";
    import {ERC721URIStorage} from "@openzeppelin-contracts-5.1.0/token/ERC721/extensions/ERC721URIStorage.sol";
    import {Ownable} from "@openzeppelin-contracts-5.1.0/access/Ownable.sol";
    contract Metronix is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable {
    uint256 private _nextTokenId;
    constructor(address initialOwner) ERC721("Metronix", "MTRX") Ownable(initialOwner) {}
    function safeMint(address to, string memory uri) public onlyOwner {
    uint256 tokenId = _nextTokenId++;
    _safeMint(to, tokenId);
    _setTokenURI(tokenId, uri);
    }
    /// Batch minting. Be aware of high gas costs
    ///
    /// @param recipients - list of address where to mint
    /// @param uris - list of token uris
    function batchMint(address[] calldata recipients, string[] calldata uris) public onlyOwner {
    uint256 length = recipients.length;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 22 : ERC721.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "./IERC721.sol";
    import {IERC721Metadata} from "./extensions/IERC721Metadata.sol";
    import {ERC721Utils} from "./utils/ERC721Utils.sol";
    import {Context} from "../../utils/Context.sol";
    import {Strings} from "../../utils/Strings.sol";
    import {IERC165, ERC165} from "../../utils/introspection/ERC165.sol";
    import {IERC721Errors} from "../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including
    * the Metadata extension, but not including the Enumerable extension, which is available separately as
    * {ERC721Enumerable}.
    */
    abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {
    using Strings for uint256;
    // Token name
    string private _name;
    // Token symbol
    string private _symbol;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 22 : ERC721Enumerable.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Enumerable.sol)
    pragma solidity ^0.8.20;
    import {ERC721} from "../ERC721.sol";
    import {IERC721Enumerable} from "./IERC721Enumerable.sol";
    import {IERC165} from "../../../utils/introspection/ERC165.sol";
    /**
    * @dev This implements an optional extension of {ERC721} defined in the ERC that adds enumerability
    * of all the token ids in the contract as well as all token ids owned by each account.
    *
    * CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive},
    * interfere with enumerability and should not be used together with {ERC721Enumerable}.
    */
    abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    mapping(address owner => mapping(uint256 index => uint256)) private _ownedTokens;
    mapping(uint256 tokenId => uint256) private _ownedTokensIndex;
    uint256[] private _allTokens;
    mapping(uint256 tokenId => uint256) private _allTokensIndex;
    /**
    * @dev An `owner`'s token query was out of bounds for `index`.
    *
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 22 : ERC721URIStorage.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721URIStorage.sol)
    pragma solidity ^0.8.20;
    import {ERC721} from "../ERC721.sol";
    import {Strings} from "../../../utils/Strings.sol";
    import {IERC4906} from "../../../interfaces/IERC4906.sol";
    import {IERC165} from "../../../interfaces/IERC165.sol";
    /**
    * @dev ERC-721 token with storage based token URI management.
    */
    abstract contract ERC721URIStorage is IERC4906, ERC721 {
    using Strings for uint256;
    // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only
    // defines events and does not include any external function.
    bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);
    // Optional mapping for token URIs
    mapping(uint256 tokenId => string) private _tokenURIs;
    /**
    * @dev See {IERC165-supportsInterface}
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 22 : Ownable.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
    pragma solidity ^0.8.20;
    import {Context} from "../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.
    *
    * The initial owner is set to the address provided by the deployer. 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;
    /**
    * @dev The caller account is not authorized to perform an operation.
    */
    error OwnableUnauthorizedAccount(address account);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 22 : IERC721.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "../../utils/introspection/IERC165.sol";
    /**
    * @dev Required interface of an ERC-721 compliant contract.
    */
    interface IERC721 is IERC165 {
    /**
    * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
    */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    /**
    * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
    */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    /**
    * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
    */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 22 : IERC721Metadata.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "../IERC721.sol";
    /**
    * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
    * @dev See https://eips.ethereum.org/EIPS/eip-721
    */
    interface IERC721Metadata is IERC721 {
    /**
    * @dev Returns the token collection name.
    */
    function name() external view returns (string memory);
    /**
    * @dev Returns the token collection symbol.
    */
    function symbol() external view returns (string memory);
    /**
    * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
    */
    function tokenURI(uint256 tokenId) external view returns (string memory);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 22 : ERC721Utils.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/utils/ERC721Utils.sol)
    pragma solidity ^0.8.20;
    import {IERC721Receiver} from "../IERC721Receiver.sol";
    import {IERC721Errors} from "../../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Library that provide common ERC-721 utility functions.
    *
    * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].
    *
    * _Available since v5.1._
    */
    library ERC721Utils {
    /**
    * @dev Performs an acceptance check for the provided `operator` by calling {IERC721-onERC721Received}
    * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).
    *
    * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).
    * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept
    * the transfer.
    */
    function checkOnERC721Received(
    address operator,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 22 : Context.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
    pragma solidity ^0.8.20;
    /**
    * @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;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
    return 0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 22 : Strings.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/Strings.sol)
    pragma solidity ^0.8.20;
    import {Math} from "./math/Math.sol";
    import {SignedMath} from "./math/SignedMath.sol";
    /**
    * @dev String operations.
    */
    library Strings {
    bytes16 private constant HEX_DIGITS = "0123456789abcdef";
    uint8 private constant ADDRESS_LENGTH = 20;
    /**
    * @dev The `value` string doesn't fit in the specified `length`.
    */
    error StringsInsufficientHexLength(uint256 value, uint256 length);
    /**
    * @dev Converts a `uint256` to its ASCII `string` decimal representation.
    */
    function toString(uint256 value) internal pure returns (string memory) {
    unchecked {
    uint256 length = Math.log10(value) + 1;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 22 : ERC165.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "./IERC165.sol";
    /**
    * @dev Implementation of the {IERC165} interface.
    *
    * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check
    * for the additional interface id that will be supported. For example:
    *
    * ```solidity
    * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
    * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
    * }
    * ```
    */
    abstract contract ERC165 is IERC165 {
    /**
    * @dev See {IERC165-supportsInterface}.
    */
    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
    return interfaceId == type(IERC165).interfaceId;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 22 : draft-IERC6093.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Standard ERC-20 Errors
    * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
    */
    interface IERC20Errors {
    /**
    * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param balance Current balance for the interacting account.
    * @param needed Minimum amount required to perform a transfer.
    */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
    error ERC20InvalidSender(address sender);
    /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 22 : IERC721Enumerable.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Enumerable.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "../IERC721.sol";
    /**
    * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
    * @dev See https://eips.ethereum.org/EIPS/eip-721
    */
    interface IERC721Enumerable is IERC721 {
    /**
    * @dev Returns the total amount of tokens stored by the contract.
    */
    function totalSupply() external view returns (uint256);
    /**
    * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
    * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
    */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
    /**
    * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
    * Use along with {totalSupply} to enumerate all tokens.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 22 : IERC4906.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "./IERC165.sol";
    import {IERC721} from "./IERC721.sol";
    /// @title ERC-721 Metadata Update Extension
    interface IERC4906 is IERC165, IERC721 {
    /// @dev This event emits when the metadata of a token is changed.
    /// So that the third-party platforms such as NFT market could
    /// timely update the images and related attributes of the NFT.
    event MetadataUpdate(uint256 _tokenId);
    /// @dev This event emits when the metadata of a range of tokens is changed.
    /// So that the third-party platforms such as NFT market could
    /// timely update the images and related attributes of the NFTs.
    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 22 : IERC165.sol
    1
    2
    3
    4
    5
    6
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "../utils/introspection/IERC165.sol";
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 16 of 22 : IERC165.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Interface of the ERC-165 standard, as defined in the
    * https://eips.ethereum.org/EIPS/eip-165[ERC].
    *
    * Implementers can declare support of contract interfaces, which can then be
    * queried by others ({ERC165Checker}).
    *
    * For an implementation, see {ERC165}.
    */
    interface IERC165 {
    /**
    * @dev Returns true if this contract implements the interface defined by
    * `interfaceId`. See the corresponding
    * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
    * to learn more about how these ids are created.
    *
    * This function call must use less than 30 000 gas.
    */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 17 of 22 : IERC721Receiver.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)
    pragma solidity ^0.8.20;
    /**
    * @title ERC-721 token receiver interface
    * @dev Interface for any contract that wants to support safeTransfers
    * from ERC-721 asset contracts.
    */
    interface IERC721Receiver {
    /**
    * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
    * by `operator` from `from`, this function is called.
    *
    * It must return its Solidity selector to confirm the token transfer.
    * If any other value is returned or the interface is not implemented by the recipient, the transfer will be
    * reverted.
    *
    * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
    */
    function onERC721Received(
    address operator,
    address from,
    uint256 tokenId,
    bytes calldata data
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 18 of 22 : Math.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)
    pragma solidity ^0.8.20;
    import {Panic} from "../Panic.sol";
    import {SafeCast} from "./SafeCast.sol";
    /**
    * @dev Standard math utilities missing in the Solidity language.
    */
    library Math {
    enum Rounding {
    Floor, // Toward negative infinity
    Ceil, // Toward positive infinity
    Trunc, // Toward zero
    Expand // Away from zero
    }
    /**
    * @dev Returns the addition of two unsigned integers, with an success flag (no overflow).
    */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {
    unchecked {
    uint256 c = a + b;
    if (c < a) return (false, 0);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 19 of 22 : SignedMath.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)
    pragma solidity ^0.8.20;
    import {SafeCast} from "./SafeCast.sol";
    /**
    * @dev Standard signed math utilities missing in the Solidity language.
    */
    library SignedMath {
    /**
    * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.
    *
    * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.
    * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute
    * one branch when needed, making this function more expensive.
    */
    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {
    unchecked {
    // branchless ternary works because:
    // b ^ (a ^ b) == a
    // b ^ 0 == b
    return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 20 of 22 : IERC721.sol
    1
    2
    3
    4
    5
    6
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "../token/ERC721/IERC721.sol";
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 21 of 22 : Panic.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Helper library for emitting standardized panic codes.
    *
    * ```solidity
    * contract Example {
    * using Panic for uint256;
    *
    * // Use any of the declared internal constants
    * function foo() { Panic.GENERIC.panic(); }
    *
    * // Alternatively
    * function foo() { Panic.panic(Panic.GENERIC); }
    * }
    * ```
    *
    * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].
    *
    * _Available since v5.1._
    */
    // slither-disable-next-line unused-state
    library Panic {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 22 of 22 : SafeCast.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)
    // This file was procedurally generated from scripts/generate/templates/SafeCast.js.
    pragma solidity ^0.8.20;
    /**
    * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow
    * checks.
    *
    * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
    * easily result in undesired exploitation or bugs, since developers usually
    * assume that overflows raise errors. `SafeCast` restores this intuition by
    * reverting the transaction when such an operation overflows.
    *
    * Using this library instead of the unchecked operations eliminates an entire
    * class of bugs, so it's recommended to use it always.
    */
    library SafeCast {
    /**
    * @dev Value doesn't fit in an uint of `bits` size.
    */
    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);
    /**
    * @dev An int value doesn't fit in an uint of `bits` size.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    {
    "remappings": [
    "@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/",
    "forge-std-1.9.5/=dependencies/forge-std-1.9.5/",
    "strings/=dependencies/solidity-stringutils/src/",
    "@openzeppelin/contracts/=dependencies/openzeppelin-contracts/contracts/",
    "ds-test/=dependencies/solidity-stringutils/lib/ds-test/src/",
    "erc4626-tests/=dependencies/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=dependencies/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts/=dependencies/openzeppelin-contracts/",
    "solidity-stringutils/=dependencies/solidity-stringutils/"
    ],
    "optimizer": {
    "enabled": true,
    "runs": 200
    },
    "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
    },
    "outputSelection": {
    "*": {
    "*": [
    "evm.bytecode",
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract ABI

    [{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ERC721EnumerableForbiddenBatchMint","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"ERC721OutOfBoundsIndex","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","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":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"uri","type":"string"}],"name":"TokenUriUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"string[]","name":"uris","type":"string[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"uri","type":"string"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"}],"name":"updateTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"}]

    608060405234801562000010575f80fd5b5060405162001ceb38038062001ceb833981016040819052620000339162000126565b806040518060400160405280600881526020016709acae8e4dedcd2f60c31b8152506040518060400160405280600481526020016309aa8a4b60e31b815250815f9081620000829190620001f3565b506001620000918282620001f3565b5050506001600160a01b038116620000c257604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000cd81620000d5565b5050620002bf565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6020828403121562000137575f80fd5b81516001600160a01b03811681146200014e575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200017e57607f821691505b6020821081036200019d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001ee57805f5260205f20601f840160051c81016020851015620001ca5750805b601f840160051c820191505b81811015620001eb575f8155600101620001d6565b50505b505050565b81516001600160401b038111156200020f576200020f62000155565b620002278162000220845462000169565b84620001a3565b602080601f8311600181146200025d575f8415620002455750858301515b5f19600386901b1c1916600185901b178555620002b7565b5f85815260208120601f198616915b828110156200028d578886015182559484019460019091019084016200026c565b5085821015620002ab57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b611a1e80620002cd5f395ff3fe608060405234801561000f575f80fd5b506004361061013d575f3560e01c806364ba144e116100b4578063a22cb46511610079578063a22cb46514610289578063b88d4fde1461029c578063c87b56dd146102af578063d204c45e146102c2578063e985e9c5146102d5578063f2fde38b146102e8575f80fd5b806364ba144e1461024257806370a0823114610255578063715018a6146102685780638da5cb5b1461027057806395d89b4114610281575f80fd5b806318e97fd11161010557806318e97fd1146101d057806323b872dd146101e35780632f745c59146101f657806342842e0e146102095780634f6ccce71461021c5780636352211e1461022f575f80fd5b806301ffc9a71461014157806306fdde0314610169578063081812fc1461017e578063095ea7b3146101a957806318160ddd146101be575b5f80fd5b61015461014f366004611395565b6102fb565b60405190151581526020015b60405180910390f35b61017161030b565b60405161016091906113fd565b61019161018c36600461140f565b61039a565b6040516001600160a01b039091168152602001610160565b6101bc6101b7366004611441565b6103c1565b005b6008545b604051908152602001610160565b6101bc6101de36600461150e565b6103d0565b6101bc6101f1366004611552565b61041f565b6101c2610204366004611441565b6104ad565b6101bc610217366004611552565b610510565b6101c261022a36600461140f565b61052f565b61019161023d36600461140f565b610584565b6101bc6102503660046115d3565b61058e565b6101c261026336600461163a565b610671565b6101bc6106b6565b600b546001600160a01b0316610191565b6101716106c9565b6101bc610297366004611653565b6106d8565b6101bc6102aa36600461168c565b6106e3565b6101716102bd36600461140f565b6106fb565b6101bc6102d0366004611703565b610706565b6101546102e3366004611738565b610738565b6101bc6102f636600461163a565b610765565b5f610305826107a2565b92915050565b60605f805461031990611769565b80601f016020809104026020016040519081016040528092919081815260200182805461034590611769565b80156103905780601f1061036757610100808354040283529160200191610390565b820191905f5260205f20905b81548152906001019060200180831161037357829003601f168201915b5050505050905090565b5f6103a4826107c6565b505f828152600460205260409020546001600160a01b0316610305565b6103cc8282336107fe565b5050565b6103d861080b565b6103e28282610838565b7f652c9498726ae446882619d79306dfe2594d5d5a008eaad0a720ee55ebf8e8b882826040516104139291906117a1565b60405180910390a15050565b6001600160a01b03821661044d57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610459838333610880565b9050836001600160a01b0316816001600160a01b0316146104a7576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610444565b50505050565b5f6104b783610671565b82106104e85760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610444565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b61052a83838360405180602001604052805f8152506106e3565b505050565b5f61053960085490565b82106105615760405163295f44f760e21b81525f600482015260248101839052604401610444565b60088281548110610574576105746117b9565b905f5260205f2001549050919050565b5f610305826107c6565b61059661080b565b828181146105d05760405162461bcd60e51b81526020600482015260076024820152664c454e4754482160c81b6044820152606401610444565b5f5b81811015610669576106618686838181106105ef576105ef6117b9565b9050602002016020810190610604919061163a565b858584818110610616576106166117b9565b905060200281019061062891906117cd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061070692505050565b6001016105d2565b505050505050565b5f6001600160a01b03821661069b576040516322718ad960e21b81525f6004820152602401610444565b506001600160a01b03165f9081526003602052604090205490565b6106be61080b565b6106c75f610894565b565b60606001805461031990611769565b6103cc3383836108e5565b6106ee84848461041f565b6104a73385858585610983565b606061030582610aa9565b61070e61080b565b600c80545f918261071e83611824565b91905055905061072e8382610bac565b61052a8183610838565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b61076d61080b565b6001600160a01b03811661079657604051631e4fbdf760e01b81525f6004820152602401610444565b61079f81610894565b50565b5f6001600160e01b03198216632483248360e11b1480610305575061030582610bc5565b5f818152600260205260408120546001600160a01b03168061030557604051637e27328960e01b815260048101849052602401610444565b61052a8383836001610be9565b600b546001600160a01b031633146106c75760405163118cdaa760e01b8152336004820152602401610444565b5f828152600a6020526040902061084f8282611880565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001610413565b5f61088c848484610ced565b949350505050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661091757604051630b61174360e31b81526001600160a01b0383166004820152602401610444565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aa257604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109c590889088908790879060040161193c565b6020604051808303815f875af19250505080156109ff575060408051601f3d908101601f191682019092526109fc91810190611978565b60015b610a66573d808015610a2c576040519150601f19603f3d011682016040523d82523d5f602084013e610a31565b606091505b5080515f03610a5e57604051633250574960e11b81526001600160a01b0385166004820152602401610444565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461066957604051633250574960e11b81526001600160a01b0385166004820152602401610444565b5050505050565b6060610ab4826107c6565b505f828152600a602052604081208054610acd90611769565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990611769565b8015610b445780601f10610b1b57610100808354040283529160200191610b44565b820191905f5260205f20905b815481529060010190602001808311610b2757829003601f168201915b505050505090505f610b6060408051602081019091525f815290565b905080515f03610b71575092915050565b815115610ba3578082604051602001610b8b929190611993565b60405160208183030381529060405292505050919050565b61088c84610db8565b6103cc828260405180602001604052805f815250610e29565b5f6001600160e01b0319821663780e9d6360e01b1480610305575061030582610e40565b8080610bfd57506001600160a01b03821615155b15610cbe575f610c0c846107c6565b90506001600160a01b03831615801590610c385750826001600160a01b0316816001600160a01b031614155b8015610c4b5750610c498184610738565b155b15610c745760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610444565b8115610cbc5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f80610cfa858585610e8f565b90506001600160a01b038116610d5657610d5184600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610d79565b846001600160a01b0316816001600160a01b031614610d7957610d798185610f81565b6001600160a01b038516610d9557610d9084610ffe565b61088c565b846001600160a01b0316816001600160a01b03161461088c5761088c85856110a5565b6060610dc3826107c6565b505f610dd960408051602081019091525f815290565b90505f815111610df75760405180602001604052805f815250610e22565b80610e01846110f3565b604051602001610e12929190611993565b6040516020818303038152906040525b9392505050565b610e338383611183565b61052a335f858585610983565b5f6001600160e01b031982166380ac58cd60e01b1480610e7057506001600160e01b03198216635b5e139f60e01b145b8061030557506301ffc9a760e01b6001600160e01b0319831614610305565b5f828152600260205260408120546001600160a01b0390811690831615610ebb57610ebb8184866111e4565b6001600160a01b03811615610ef557610ed65f855f80610be9565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615610f23576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f610f8b83610671565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314610fe0575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f9061100f906001906119c1565b5f8381526009602052604081205460088054939450909284908110611036576110366117b9565b905f5260205f20015490508060088381548110611055576110556117b9565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061108c5761108c6119d4565b600190038181905f5260205f20015f9055905550505050565b5f60016110b184610671565b6110bb91906119c1565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60605f6110ff83611248565b60010190505f8167ffffffffffffffff81111561111e5761111e611469565b6040519080825280601f01601f191660200182016040528015611148576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461115257509392505050565b6001600160a01b0382166111ac57604051633250574960e11b81525f6004820152602401610444565b5f6111b883835f610880565b90506001600160a01b0381161561052a576040516339e3563760e11b81525f6004820152602401610444565b6111ef83838361131f565b61052a576001600160a01b03831661121d57604051637e27328960e01b815260048101829052602401610444565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610444565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106112865772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106112b2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106112d057662386f26fc10000830492506010015b6305f5e10083106112e8576305f5e100830492506008015b61271083106112fc57612710830492506004015b6064831061130e576064830492506002015b600a83106103055760010192915050565b5f6001600160a01b0383161580159061088c5750826001600160a01b0316846001600160a01b0316148061135857506113588484610738565b8061088c5750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b03198116811461079f575f80fd5b5f602082840312156113a5575f80fd5b8135610e2281611380565b5f5b838110156113ca5781810151838201526020016113b2565b50505f910152565b5f81518084526113e98160208601602086016113b0565b601f01601f19169290920160200192915050565b602081525f610e2260208301846113d2565b5f6020828403121561141f575f80fd5b5035919050565b80356001600160a01b038116811461143c575f80fd5b919050565b5f8060408385031215611452575f80fd5b61145b83611426565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff8084111561149757611497611469565b604051601f8501601f19908116603f011681019082821181831017156114bf576114bf611469565b816040528093508581528686860111156114d7575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f8301126114ff575f80fd5b610e228383356020850161147d565b5f806040838503121561151f575f80fd5b82359150602083013567ffffffffffffffff81111561153c575f80fd5b611548858286016114f0565b9150509250929050565b5f805f60608486031215611564575f80fd5b61156d84611426565b925061157b60208501611426565b9150604084013590509250925092565b5f8083601f84011261159b575f80fd5b50813567ffffffffffffffff8111156115b2575f80fd5b6020830191508360208260051b85010111156115cc575f80fd5b9250929050565b5f805f80604085870312156115e6575f80fd5b843567ffffffffffffffff808211156115fd575f80fd5b6116098883890161158b565b90965094506020870135915080821115611621575f80fd5b5061162e8782880161158b565b95989497509550505050565b5f6020828403121561164a575f80fd5b610e2282611426565b5f8060408385031215611664575f80fd5b61166d83611426565b915060208301358015158114611681575f80fd5b809150509250929050565b5f805f806080858703121561169f575f80fd5b6116a885611426565b93506116b660208601611426565b925060408501359150606085013567ffffffffffffffff8111156116d8575f80fd5b8501601f810187136116e8575f80fd5b6116f78782356020840161147d565b91505092959194509250565b5f8060408385031215611714575f80fd5b61171d83611426565b9150602083013567ffffffffffffffff81111561153c575f80fd5b5f8060408385031215611749575f80fd5b61175283611426565b915061176060208401611426565b90509250929050565b600181811c9082168061177d57607f821691505b60208210810361179b57634e487b7160e01b5f52602260045260245ffd5b50919050565b828152604060208201525f61088c60408301846113d2565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e198436030181126117e2575f80fd5b83018035915067ffffffffffffffff8211156117fc575f80fd5b6020019150368190038213156115cc575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161183557611835611810565b5060010190565b601f82111561052a57805f5260205f20601f840160051c810160208510156118615750805b601f840160051c820191505b81811015610aa2575f815560010161186d565b815167ffffffffffffffff81111561189a5761189a611469565b6118ae816118a88454611769565b8461183c565b602080601f8311600181146118e1575f84156118ca5750858301515b5f19600386901b1c1916600185901b178555610669565b5f85815260208120601f198616915b8281101561190f578886015182559484019460019091019084016118f0565b508582101561192c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061196e908301846113d2565b9695505050505050565b5f60208284031215611988575f80fd5b8151610e2281611380565b5f83516119a48184602088016113b0565b8351908301906119b88183602088016113b0565b01949350505050565b8181038181111561030557610305611810565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212202b485bb9025b7ef44ea6f2179a16291f7715b9267a3a48ee1f02e4be114fb20b64736f6c6343000816003300000000000000000000000064aea49be9f0c46563650f3372659376d375a9d9

    Deployed Bytecode

    0x608060405234801561000f575f80fd5b506004361061013d575f3560e01c806364ba144e116100b4578063a22cb46511610079578063a22cb46514610289578063b88d4fde1461029c578063c87b56dd146102af578063d204c45e146102c2578063e985e9c5146102d5578063f2fde38b146102e8575f80fd5b806364ba144e1461024257806370a0823114610255578063715018a6146102685780638da5cb5b1461027057806395d89b4114610281575f80fd5b806318e97fd11161010557806318e97fd1146101d057806323b872dd146101e35780632f745c59146101f657806342842e0e146102095780634f6ccce71461021c5780636352211e1461022f575f80fd5b806301ffc9a71461014157806306fdde0314610169578063081812fc1461017e578063095ea7b3146101a957806318160ddd146101be575b5f80fd5b61015461014f366004611395565b6102fb565b60405190151581526020015b60405180910390f35b61017161030b565b60405161016091906113fd565b61019161018c36600461140f565b61039a565b6040516001600160a01b039091168152602001610160565b6101bc6101b7366004611441565b6103c1565b005b6008545b604051908152602001610160565b6101bc6101de36600461150e565b6103d0565b6101bc6101f1366004611552565b61041f565b6101c2610204366004611441565b6104ad565b6101bc610217366004611552565b610510565b6101c261022a36600461140f565b61052f565b61019161023d36600461140f565b610584565b6101bc6102503660046115d3565b61058e565b6101c261026336600461163a565b610671565b6101bc6106b6565b600b546001600160a01b0316610191565b6101716106c9565b6101bc610297366004611653565b6106d8565b6101bc6102aa36600461168c565b6106e3565b6101716102bd36600461140f565b6106fb565b6101bc6102d0366004611703565b610706565b6101546102e3366004611738565b610738565b6101bc6102f636600461163a565b610765565b5f610305826107a2565b92915050565b60605f805461031990611769565b80601f016020809104026020016040519081016040528092919081815260200182805461034590611769565b80156103905780601f1061036757610100808354040283529160200191610390565b820191905f5260205f20905b81548152906001019060200180831161037357829003601f168201915b5050505050905090565b5f6103a4826107c6565b505f828152600460205260409020546001600160a01b0316610305565b6103cc8282336107fe565b5050565b6103d861080b565b6103e28282610838565b7f652c9498726ae446882619d79306dfe2594d5d5a008eaad0a720ee55ebf8e8b882826040516104139291906117a1565b60405180910390a15050565b6001600160a01b03821661044d57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610459838333610880565b9050836001600160a01b0316816001600160a01b0316146104a7576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610444565b50505050565b5f6104b783610671565b82106104e85760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610444565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b61052a83838360405180602001604052805f8152506106e3565b505050565b5f61053960085490565b82106105615760405163295f44f760e21b81525f600482015260248101839052604401610444565b60088281548110610574576105746117b9565b905f5260205f2001549050919050565b5f610305826107c6565b61059661080b565b828181146105d05760405162461bcd60e51b81526020600482015260076024820152664c454e4754482160c81b6044820152606401610444565b5f5b81811015610669576106618686838181106105ef576105ef6117b9565b9050602002016020810190610604919061163a565b858584818110610616576106166117b9565b905060200281019061062891906117cd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061070692505050565b6001016105d2565b505050505050565b5f6001600160a01b03821661069b576040516322718ad960e21b81525f6004820152602401610444565b506001600160a01b03165f9081526003602052604090205490565b6106be61080b565b6106c75f610894565b565b60606001805461031990611769565b6103cc3383836108e5565b6106ee84848461041f565b6104a73385858585610983565b606061030582610aa9565b61070e61080b565b600c80545f918261071e83611824565b91905055905061072e8382610bac565b61052a8183610838565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b61076d61080b565b6001600160a01b03811661079657604051631e4fbdf760e01b81525f6004820152602401610444565b61079f81610894565b50565b5f6001600160e01b03198216632483248360e11b1480610305575061030582610bc5565b5f818152600260205260408120546001600160a01b03168061030557604051637e27328960e01b815260048101849052602401610444565b61052a8383836001610be9565b600b546001600160a01b031633146106c75760405163118cdaa760e01b8152336004820152602401610444565b5f828152600a6020526040902061084f8282611880565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001610413565b5f61088c848484610ced565b949350505050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661091757604051630b61174360e31b81526001600160a01b0383166004820152602401610444565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aa257604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109c590889088908790879060040161193c565b6020604051808303815f875af19250505080156109ff575060408051601f3d908101601f191682019092526109fc91810190611978565b60015b610a66573d808015610a2c576040519150601f19603f3d011682016040523d82523d5f602084013e610a31565b606091505b5080515f03610a5e57604051633250574960e11b81526001600160a01b0385166004820152602401610444565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461066957604051633250574960e11b81526001600160a01b0385166004820152602401610444565b5050505050565b6060610ab4826107c6565b505f828152600a602052604081208054610acd90611769565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990611769565b8015610b445780601f10610b1b57610100808354040283529160200191610b44565b820191905f5260205f20905b815481529060010190602001808311610b2757829003601f168201915b505050505090505f610b6060408051602081019091525f815290565b905080515f03610b71575092915050565b815115610ba3578082604051602001610b8b929190611993565b60405160208183030381529060405292505050919050565b61088c84610db8565b6103cc828260405180602001604052805f815250610e29565b5f6001600160e01b0319821663780e9d6360e01b1480610305575061030582610e40565b8080610bfd57506001600160a01b03821615155b15610cbe575f610c0c846107c6565b90506001600160a01b03831615801590610c385750826001600160a01b0316816001600160a01b031614155b8015610c4b5750610c498184610738565b155b15610c745760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610444565b8115610cbc5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f80610cfa858585610e8f565b90506001600160a01b038116610d5657610d5184600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610d79565b846001600160a01b0316816001600160a01b031614610d7957610d798185610f81565b6001600160a01b038516610d9557610d9084610ffe565b61088c565b846001600160a01b0316816001600160a01b03161461088c5761088c85856110a5565b6060610dc3826107c6565b505f610dd960408051602081019091525f815290565b90505f815111610df75760405180602001604052805f815250610e22565b80610e01846110f3565b604051602001610e12929190611993565b6040516020818303038152906040525b9392505050565b610e338383611183565b61052a335f858585610983565b5f6001600160e01b031982166380ac58cd60e01b1480610e7057506001600160e01b03198216635b5e139f60e01b145b8061030557506301ffc9a760e01b6001600160e01b0319831614610305565b5f828152600260205260408120546001600160a01b0390811690831615610ebb57610ebb8184866111e4565b6001600160a01b03811615610ef557610ed65f855f80610be9565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615610f23576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f610f8b83610671565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314610fe0575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f9061100f906001906119c1565b5f8381526009602052604081205460088054939450909284908110611036576110366117b9565b905f5260205f20015490508060088381548110611055576110556117b9565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061108c5761108c6119d4565b600190038181905f5260205f20015f9055905550505050565b5f60016110b184610671565b6110bb91906119c1565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60605f6110ff83611248565b60010190505f8167ffffffffffffffff81111561111e5761111e611469565b6040519080825280601f01601f191660200182016040528015611148576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461115257509392505050565b6001600160a01b0382166111ac57604051633250574960e11b81525f6004820152602401610444565b5f6111b883835f610880565b90506001600160a01b0381161561052a576040516339e3563760e11b81525f6004820152602401610444565b6111ef83838361131f565b61052a576001600160a01b03831661121d57604051637e27328960e01b815260048101829052602401610444565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610444565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106112865772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106112b2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106112d057662386f26fc10000830492506010015b6305f5e10083106112e8576305f5e100830492506008015b61271083106112fc57612710830492506004015b6064831061130e576064830492506002015b600a83106103055760010192915050565b5f6001600160a01b0383161580159061088c5750826001600160a01b0316846001600160a01b0316148061135857506113588484610738565b8061088c5750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b03198116811461079f575f80fd5b5f602082840312156113a5575f80fd5b8135610e2281611380565b5f5b838110156113ca5781810151838201526020016113b2565b50505f910152565b5f81518084526113e98160208601602086016113b0565b601f01601f19169290920160200192915050565b602081525f610e2260208301846113d2565b5f6020828403121561141f575f80fd5b5035919050565b80356001600160a01b038116811461143c575f80fd5b919050565b5f8060408385031215611452575f80fd5b61145b83611426565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff8084111561149757611497611469565b604051601f8501601f19908116603f011681019082821181831017156114bf576114bf611469565b816040528093508581528686860111156114d7575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f8301126114ff575f80fd5b610e228383356020850161147d565b5f806040838503121561151f575f80fd5b82359150602083013567ffffffffffffffff81111561153c575f80fd5b611548858286016114f0565b9150509250929050565b5f805f60608486031215611564575f80fd5b61156d84611426565b925061157b60208501611426565b9150604084013590509250925092565b5f8083601f84011261159b575f80fd5b50813567ffffffffffffffff8111156115b2575f80fd5b6020830191508360208260051b85010111156115cc575f80fd5b9250929050565b5f805f80604085870312156115e6575f80fd5b843567ffffffffffffffff808211156115fd575f80fd5b6116098883890161158b565b90965094506020870135915080821115611621575f80fd5b5061162e8782880161158b565b95989497509550505050565b5f6020828403121561164a575f80fd5b610e2282611426565b5f8060408385031215611664575f80fd5b61166d83611426565b915060208301358015158114611681575f80fd5b809150509250929050565b5f805f806080858703121561169f575f80fd5b6116a885611426565b93506116b660208601611426565b925060408501359150606085013567ffffffffffffffff8111156116d8575f80fd5b8501601f810187136116e8575f80fd5b6116f78782356020840161147d565b91505092959194509250565b5f8060408385031215611714575f80fd5b61171d83611426565b9150602083013567ffffffffffffffff81111561153c575f80fd5b5f8060408385031215611749575f80fd5b61175283611426565b915061176060208401611426565b90509250929050565b600181811c9082168061177d57607f821691505b60208210810361179b57634e487b7160e01b5f52602260045260245ffd5b50919050565b828152604060208201525f61088c60408301846113d2565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e198436030181126117e2575f80fd5b83018035915067ffffffffffffffff8211156117fc575f80fd5b6020019150368190038213156115cc575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161183557611835611810565b5060010190565b601f82111561052a57805f5260205f20601f840160051c810160208510156118615750805b601f840160051c820191505b81811015610aa2575f815560010161186d565b815167ffffffffffffffff81111561189a5761189a611469565b6118ae816118a88454611769565b8461183c565b602080601f8311600181146118e1575f84156118ca5750858301515b5f19600386901b1c1916600185901b178555610669565b5f85815260208120601f198616915b8281101561190f578886015182559484019460019091019084016118f0565b508582101561192c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061196e908301846113d2565b9695505050505050565b5f60208284031215611988575f80fd5b8151610e2281611380565b5f83516119a48184602088016113b0565b8351908301906119b88183602088016113b0565b01949350505050565b8181038181111561030557610305611810565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212202b485bb9025b7ef44ea6f2179a16291f7715b9267a3a48ee1f02e4be114fb20b64736f6c63430008160033

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

    00000000000000000000000064aea49be9f0c46563650f3372659376d375a9d9

    -----Decoded View---------------
    Arg [0] : initialOwner (address): 0x64AeA49Be9f0c46563650F3372659376D375A9D9

    -----Encoded View---------------
    1 Constructor Arguments found :
    Arg [0] : 00000000000000000000000064aea49be9f0c46563650f3372659376d375a9d9


    [ 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.