APE Price: $0.56 (-0.63%)
    /

    Contract

    0x2ad77F8217BBcCC9351C34F2b594C66F6AaE9D77

    Overview

    APE Balance

    Apechain LogoApechain LogoApechain Logo0 APE

    APE Value

    $0.00

    Multichain Info

    No addresses found
    Transaction Hash
    Method
    Block
    Age
    From
    To
    Set Approval For...105385482025-02-24 22:03:4110 days ago1740434621IN
    0x2ad77F82...F6AaE9D77
    0 APE0.0006976125.42069
    Set Approval For...105384902025-02-24 22:03:1310 days ago1740434593IN
    0x2ad77F82...F6AaE9D77
    0 APE0.0006954825.42069
    Set Approval For...103653152025-02-21 9:38:4314 days ago1740130723IN
    0x2ad77F82...F6AaE9D77
    0 APE0.001252525.42069
    Set Approval For...96702562025-02-11 17:21:2623 days ago1739294486IN
    0x2ad77F82...F6AaE9D77
    0 APE0.0012546325.42069
    Mint Public95602552025-02-09 17:36:1625 days ago1739122576IN
    0x2ad77F82...F6AaE9D77
    9 APE0.0029859925.42069
    Mint Public95579602025-02-09 16:41:2626 days ago1739119286IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0021484525.42069
    Mint Public95426362025-02-09 10:44:3126 days ago1739097871IN
    0x2ad77F82...F6AaE9D77
    20 APE0.0030461325.42069
    Mint Public95426192025-02-09 10:43:5326 days ago1739097833IN
    0x2ad77F82...F6AaE9D77
    30 APE0.0035537825.42069
    Mint Public95106352025-02-08 20:49:4126 days ago1739047781IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025831225.42069
    Mint Public95095502025-02-08 20:25:4726 days ago1739046347IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025831225.42069
    Mint Public94982222025-02-08 16:14:3327 days ago1739031273IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025798625.42069
    Mint Public94964632025-02-08 15:16:1727 days ago1739027777IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025798625.42069
    Mint Public94957962025-02-08 14:54:2927 days ago1739026469IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025798625.42069
    Mint Public94950602025-02-08 14:31:0327 days ago1739025063IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025831425.42069
    Mint Public94437792025-02-07 14:21:3728 days ago1738938097IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025831425.42069
    Mint Public93503842025-02-05 19:59:2029 days ago1738785560IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025831225.42069
    Mint Public93451102025-02-05 17:46:0329 days ago1738777563IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025798625.42069
    Mint Public93445352025-02-05 17:30:1829 days ago1738776618IN
    0x2ad77F82...F6AaE9D77
    2 APE0.0026338825.42069
    Mint Public93441992025-02-05 17:20:4130 days ago1738776041IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025798625.42069
    Mint Public93120852025-02-05 2:46:3030 days ago1738723590IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025798625.42069
    Mint Public93096532025-02-05 1:39:1030 days ago1738719550IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025831425.42069
    Mint Public92993552025-02-04 21:19:1330 days ago1738703953IN
    0x2ad77F82...F6AaE9D77
    1 APE0.0025831225.42069
    Mint Public92158322025-02-03 10:11:3332 days ago1738577493IN
    0x2ad77F82...F6AaE9D77
    250 APE0.0147221325.42069
    Mint Public91992892025-02-03 2:15:1732 days ago1738548917IN
    0x2ad77F82...F6AaE9D77
    200 APE0.0121838825.42069
    Mint Public91992592025-02-03 2:15:0132 days ago1738548901IN
    0x2ad77F82...F6AaE9D77
    500 APE0.0274137225.42069
    View all transactions

    Latest 25 internal transactions (View All)

    Parent Transaction Hash Block Age From To Amount
    95602552025-02-09 17:36:1625 days ago1739122576
    0x2ad77F82...F6AaE9D77
    9 APE
    95579602025-02-09 16:41:2626 days ago1739119286
    0x2ad77F82...F6AaE9D77
    1 APE
    95426362025-02-09 10:44:3126 days ago1739097871
    0x2ad77F82...F6AaE9D77
    20 APE
    95426192025-02-09 10:43:5326 days ago1739097833
    0x2ad77F82...F6AaE9D77
    30 APE
    95106352025-02-08 20:49:4126 days ago1739047781
    0x2ad77F82...F6AaE9D77
    1 APE
    95095502025-02-08 20:25:4726 days ago1739046347
    0x2ad77F82...F6AaE9D77
    1 APE
    94982222025-02-08 16:14:3327 days ago1739031273
    0x2ad77F82...F6AaE9D77
    1 APE
    94964632025-02-08 15:16:1727 days ago1739027777
    0x2ad77F82...F6AaE9D77
    1 APE
    94957962025-02-08 14:54:2927 days ago1739026469
    0x2ad77F82...F6AaE9D77
    1 APE
    94950602025-02-08 14:31:0327 days ago1739025063
    0x2ad77F82...F6AaE9D77
    1 APE
    94437792025-02-07 14:21:3728 days ago1738938097
    0x2ad77F82...F6AaE9D77
    1 APE
    93503842025-02-05 19:59:2029 days ago1738785560
    0x2ad77F82...F6AaE9D77
    1 APE
    93451102025-02-05 17:46:0329 days ago1738777563
    0x2ad77F82...F6AaE9D77
    1 APE
    93445352025-02-05 17:30:1829 days ago1738776618
    0x2ad77F82...F6AaE9D77
    2 APE
    93441992025-02-05 17:20:4130 days ago1738776041
    0x2ad77F82...F6AaE9D77
    1 APE
    93120852025-02-05 2:46:3030 days ago1738723590
    0x2ad77F82...F6AaE9D77
    1 APE
    93096532025-02-05 1:39:1030 days ago1738719550
    0x2ad77F82...F6AaE9D77
    1 APE
    92993552025-02-04 21:19:1330 days ago1738703953
    0x2ad77F82...F6AaE9D77
    1 APE
    92158322025-02-03 10:11:3332 days ago1738577493
    0x2ad77F82...F6AaE9D77
    250 APE
    91992892025-02-03 2:15:1732 days ago1738548917
    0x2ad77F82...F6AaE9D77
    200 APE
    91992592025-02-03 2:15:0132 days ago1738548901
    0x2ad77F82...F6AaE9D77
    500 APE
    91984972025-02-03 2:00:0432 days ago1738548004
    0x2ad77F82...F6AaE9D77
    1 APE
    91984852025-02-03 1:59:4432 days ago1738547984
    0x2ad77F82...F6AaE9D77
    2 APE
    91973532025-02-03 1:39:0532 days ago1738546745
    0x2ad77F82...F6AaE9D77
    1 APE
    91963952025-02-03 1:04:0332 days ago1738544643
    0x2ad77F82...F6AaE9D77
    300 APE
    View All Internal Transactions

    Loading...
    Loading

    Minimal Proxy Contract for 0x000000fb0f19714b7b75a73f8484061acde05bdc

    Contract Name:
    ERC721MagicDropCloneable

    Compiler Version
    v0.8.22+commit.4fc1097e

    Optimization Enabled:
    Yes with 777 runs

    Other Settings:
    shanghai EvmVersion

    Contract Source Code (Solidity Standard Json-Input format)

    File 1 of 15 : ERC721MagicDropCloneable.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
    pragma solidity ^0.8.22;
    import {MerkleProofLib} from "solady/src/utils/MerkleProofLib.sol";
    import {SafeTransferLib} from "solady/src/utils/SafeTransferLib.sol";
    import {IERC721A} from "erc721a/contracts/IERC721A.sol";
    import {ERC721MagicDropMetadataCloneable} from "./ERC721MagicDropMetadataCloneable.sol";
    import {ERC721ACloneable} from "./ERC721ACloneable.sol";
    import {IERC721MagicDropMetadata} from "../interfaces/IERC721MagicDropMetadata.sol";
    import {PublicStage, AllowlistStage, SetupConfig} from "./Types.sol";
    /// ........
    /// ..... .. ...
    /// .. ..... .. ..
    /// .. ... ..... .. ..
    /// .. ...... .. ...... ..
    /// .. ......... ......... ....
    /// .... .. .. ...
    /// ........ ......... ..
    /// .. ... ... .. .........
    /// .. .......... .... .... ....... ........
    /// ....... .. .. ... .... ..... ..
    /// ........ . ... .. ..
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 15 : MerkleProofLib.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
    pragma solidity ^0.8.4;
    /// @notice Gas optimized verification of proof of inclusion for a leaf in a Merkle tree.
    /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/MerkleProofLib.sol)
    /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/MerkleProofLib.sol)
    /// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof
        .sol)
    library MerkleProofLib {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /* MERKLE PROOF VERIFICATION OPERATIONS */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /// @dev Returns whether `leaf` exists in the Merkle tree with `root`, given `proof`.
    function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf)
    internal
    pure
    returns (bool isValid)
    {
    /// @solidity memory-safe-assembly
    assembly {
    if mload(proof) {
    // Initialize `offset` to the offset of `proof` elements in memory.
    let offset := add(proof, 0x20)
    // Left shift by 5 is equivalent to multiplying by 0x20.
    let end := add(offset, shl(5, mload(proof)))
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 15 : SafeTransferLib.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
    pragma solidity ^0.8.4;
    /// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
    /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)
    /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)
    /// @author Permit2 operations from (https://github.com/Uniswap/permit2/blob/main/src/libraries/Permit2Lib.sol)
    ///
    /// @dev Note:
    /// - For ETH transfers, please use `forceSafeTransferETH` for DoS protection.
    library SafeTransferLib {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /* CUSTOM ERRORS */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /// @dev The ETH transfer has failed.
    error ETHTransferFailed();
    /// @dev The ERC20 `transferFrom` has failed.
    error TransferFromFailed();
    /// @dev The ERC20 `transfer` has failed.
    error TransferFailed();
    /// @dev The ERC20 `approve` has failed.
    error ApproveFailed();
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 15 : IERC721A.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
    // ERC721A Contracts v4.3.0
    // Creator: Chiru Labs
    pragma solidity ^0.8.4;
    /**
    * @dev Interface of ERC721A.
    */
    interface IERC721A {
    /**
    * The caller must own the token or be an approved operator.
    */
    error ApprovalCallerNotOwnerNorApproved();
    /**
    * The token does not exist.
    */
    error ApprovalQueryForNonexistentToken();
    /**
    * Cannot query the balance for the zero address.
    */
    error BalanceQueryForZeroAddress();
    /**
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 15 : ERC721MagicDropMetadataCloneable.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
    pragma solidity ^0.8.22;
    import {ERC2981} from "solady/src/tokens/ERC2981.sol";
    import {Ownable} from "solady/src/auth/Ownable.sol";
    import {IERC721A} from "erc721a/contracts/IERC721A.sol";
    import {ERC721AConduitPreapprovedCloneable} from "./ERC721AConduitPreapprovedCloneable.sol";
    import {ERC721ACloneable} from "./ERC721ACloneable.sol";
    import {IERC721MagicDropMetadata} from "../interfaces/IERC721MagicDropMetadata.sol";
    /// @title ERC721MagicDropMetadataCloneable
    /// @notice A cloneable ERC-721A implementation that supports adjustable metadata URIs, royalty configuration.
    /// Inherits conduit-based preapprovals, making distribution more gas-efficient.
    contract ERC721MagicDropMetadataCloneable is
    ERC721AConduitPreapprovedCloneable,
    IERC721MagicDropMetadata,
    ERC2981,
    Ownable
    {
    /*==============================================================
    = INITIALIZERS =
    ==============================================================*/
    /// @notice Initializes the contract.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 15 : ERC721ACloneable.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
    // ERC721A Contracts v4.3.0
    // Creator: Chiru Labs
    pragma solidity ^0.8.4;
    import {IERC721A} from "erc721a/contracts/IERC721A.sol";
    import {Initializable} from "solady/src/utils/Initializable.sol";
    /**
    * @dev Interface of ERC721 token receiver.
    */
    interface ERC721A__IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data)
    external
    returns (bytes4);
    }
    /**
    * @title ERC721ACloneable
    *
    * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)
    * Non-Fungible Token Standard, including the Metadata extension.
    * Optimized for lower gas during batch mints.
    *
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 15 : IERC721MagicDropMetadata.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
    pragma solidity ^0.8.22;
    import {IMagicDropMetadata} from "contracts/common/interfaces/IMagicDropMetadata.sol";
    interface IERC721MagicDropMetadata is IMagicDropMetadata {
    /// @notice Emitted when the wallet limit is updated.
    /// @param _walletLimit The new wallet limit.
    event WalletLimitUpdated(uint256 _walletLimit);
    /// @notice Emitted when the max supply is updated.
    /// @param newMaxSupply The new max supply.
    event MaxSupplyUpdated(uint256 newMaxSupply);
    /// @notice Thrown when a mint would exceed the wallet-specific minting limit.
    error WalletLimitExceeded();
    /// @notice Returns the maximum number of tokens that can be minted per wallet
    /// @dev Used to prevent excessive concentration of tokens in single wallets
    /// @return The maximum number of tokens allowed per wallet address
    function walletLimit() external view returns (uint256);
    /// @notice Returns the maximum number of tokens that can be minted
    /// @dev This value cannot be increased once set, only decreased
    /// @return The maximum supply cap for the collection
    function maxSupply() external view returns (uint256);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 15 : Types.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
    pragma solidity ^0.8.0;
    struct PublicStage {
    /// @dev The start time of the public mint stage.
    uint256 startTime;
    /// @dev The end time of the public mint stage.
    uint256 endTime;
    /// @dev The price of the public mint stage.
    uint256 price;
    }
    struct AllowlistStage {
    /// @dev The start time of the allowlist mint stage.
    uint256 startTime;
    /// @dev The end time of the allowlist mint stage.
    uint256 endTime;
    /// @dev The price of the allowlist mint stage.
    uint256 price;
    /// @dev The merkle root of the allowlist.
    bytes32 merkleRoot;
    }
    struct SetupConfig {
    /// @dev The maximum number of tokens that can be minted.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 15 : ERC2981.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
    pragma solidity ^0.8.4;
    /// @notice Simple ERC2981 NFT Royalty Standard implementation.
    /// @author Solady (https://github.com/vectorized/solady/blob/main/src/tokens/ERC2981.sol)
    /// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/common/ERC2981.sol)
    abstract contract ERC2981 {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /* CUSTOM ERRORS */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /// @dev The royalty fee numerator exceeds the fee denominator.
    error RoyaltyOverflow();
    /// @dev The royalty receiver cannot be the zero address.
    error RoyaltyReceiverIsZeroAddress();
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /* STORAGE */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /// @dev The default royalty info is given by:
    /// ```
    /// let packed := sload(_ERC2981_MASTER_SLOT_SEED)
    /// let receiver := shr(96, packed)
    /// let royaltyFraction := xor(packed, shl(96, receiver))
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 15 : 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
    pragma solidity ^0.8.4;
    /// @notice Simple single owner authorization mixin.
    /// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)
    ///
    /// @dev Note:
    /// This implementation does NOT auto-initialize the owner to `msg.sender`.
    /// You MUST call the `_initializeOwner` in the constructor / initializer.
    ///
    /// While the ownable portion follows
    /// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,
    /// the nomenclature for the 2-step ownership handover may be unique to this codebase.
    abstract contract Ownable {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /* CUSTOM ERRORS */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /// @dev The caller is not authorized to call the function.
    error Unauthorized();
    /// @dev The `newOwner` cannot be the zero address.
    error NewOwnerIsZeroAddress();
    /// @dev The `pendingOwner` does not have a valid handover request.
    error NoHandoverRequest();
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 15 : ERC721AConduitPreapprovedCloneable.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
    pragma solidity ^0.8.22;
    import {ERC721AQueryableCloneable} from "./ERC721AQueryableCloneable.sol";
    import {ERC721ACloneable} from "./ERC721ACloneable.sol";
    import {IERC721A} from "erc721a/contracts/IERC721A.sol";
    /// @title ERC721AConduitPreapprovedCloneable
    /// @notice ERC721A with the MagicEden conduit preapproved.
    abstract contract ERC721AConduitPreapprovedCloneable is ERC721AQueryableCloneable {
    /// @dev The canonical MagicEden conduit.
    address internal constant _CONDUIT = 0x2052f8A2Ff46283B30084e5d84c89A2fdBE7f74b;
    /// @dev Returns if the `operator` is allowed to manage all of the
    /// assets of `owner`. Always returns true for the conduit.
    function isApprovedForAll(address owner, address operator)
    public
    view
    virtual
    override(ERC721ACloneable, IERC721A)
    returns (bool)
    {
    if (operator == _CONDUIT) {
    return true;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 15 : Initializable.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
    pragma solidity ^0.8.4;
    /// @notice Initializable mixin for the upgradeable contracts.
    /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/Initializable.sol)
    /// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/proxy/utils/Initializable.sol)
    abstract contract Initializable {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /* CUSTOM ERRORS */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /// @dev The contract is already initialized.
    error InvalidInitialization();
    /// @dev The contract is not initializing.
    error NotInitializing();
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /* EVENTS */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /// @dev Triggered when the contract has been initialized.
    event Initialized(uint64 version);
    /// @dev `keccak256(bytes("Initialized(uint64)"))`.
    bytes32 private constant _INTIALIZED_EVENT_SIGNATURE =
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 15 : IMagicDropMetadata.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
    pragma solidity ^0.8.22;
    interface IMagicDropMetadata {
    /*==============================================================
    = EVENTS =
    ==============================================================*/
    /// @notice Emitted when the contract URI is updated.
    /// @param _contractURI The new contract URI.
    event ContractURIUpdated(string _contractURI);
    /// @notice Emitted when the royalty info is updated.
    /// @param receiver The new royalty receiver.
    /// @param bps The new royalty basis points.
    event RoyaltyInfoUpdated(address receiver, uint256 bps);
    /// @notice Emitted when the metadata is updated. (EIP-4906)
    /// @param _fromTokenId The starting token ID.
    /// @param _toTokenId The ending token ID.
    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);
    /// @notice Emitted once when the token contract is deployed and initialized.
    event MagicDropTokenDeployed();
    /*==============================================================
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 15 : ERC721AQueryableCloneable.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
    // ERC721A Contracts v4.3.0
    // Creator: Chiru Labs
    pragma solidity ^0.8.4;
    import {IERC721AQueryable} from "erc721a/contracts/extensions/IERC721AQueryable.sol";
    import {ERC721ACloneable} from "./ERC721ACloneable.sol";
    /**
    * @title ERC721AQueryableCloneable.
    *
    * @dev ERC721A subclass with convenience query functions.
    */
    abstract contract ERC721AQueryableCloneable is ERC721ACloneable, IERC721AQueryable {
    /**
    * @dev Returns the `TokenOwnership` struct at `tokenId` without reverting.
    *
    * If the `tokenId` is out of bounds:
    *
    * - `addr = address(0)`
    * - `startTimestamp = 0`
    * - `burned = false`
    * - `extraData = 0`
    *
    * If the `tokenId` is burned:
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 15 : IERC721AQueryable.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
    // ERC721A Contracts v4.3.0
    // Creator: Chiru Labs
    pragma solidity ^0.8.4;
    import '../IERC721A.sol';
    /**
    * @dev Interface of ERC721AQueryable.
    */
    interface IERC721AQueryable is IERC721A {
    /**
    * Invalid query range (`start` >= `stop`).
    */
    error InvalidQueryRange();
    /**
    * @dev Returns the `TokenOwnership` struct at `tokenId` without reverting.
    *
    * If the `tokenId` is out of bounds:
    *
    * - `addr = address(0)`
    * - `startTimestamp = 0`
    * - `burned = false`
    * - `extraData = 0`
    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": [
    "solady/=lib/solady/",
    "solemate/=/lib/solemate/src/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "forge-std/=lib/forge-std/src/",
    "erc721a/contracts/=lib/ERC721A/contracts/",
    "erc721a-upgradeable/contracts/=lib/ERC721A-Upgradeable/contracts/",
    "@limitbreak/creator-token-standards/src/=lib/creator-token-standards/src/",
    "@ensdomains/=node_modules/@ensdomains/",
    "@layerzerolabs/=node_modules/@layerzerolabs/",
    "@limitbreak/=node_modules/@limitbreak/",
    "@opensea/tstorish/=lib/creator-token-standards/lib/tstorish/src/",
    "@openzeppelin-3/=node_modules/@openzeppelin-3/",
    "@openzeppelin/=node_modules/@openzeppelin/",
    "@rari-capital/solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/",
    "@uniswap/=node_modules/@uniswap/",
    "ERC721A-Upgradeable/=lib/ERC721A-Upgradeable/contracts/",
    "ERC721A/=lib/ERC721A/contracts/",
    "PermitC/=lib/creator-token-standards/lib/PermitC/",
    "creator-token-standards/=lib/creator-token-standards/",
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "erc4626-tests/=lib/operator-filter-registry/lib/openzeppelin-contracts/lib/erc4626-tests/",
    "erc721a-upgradeable/=node_modules/erc721a-upgradeable/",
    "erc721a/=node_modules/erc721a/",
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract ABI

    API
    [{"inputs":[],"name":"AllowlistStageNotActive","type":"error"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"CannotExceedMaxSupply","type":"error"},{"inputs":[],"name":"InvalidAllowlistStageTime","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidProof","type":"error"},{"inputs":[],"name":"InvalidPublicStageTime","type":"error"},{"inputs":[],"name":"InvalidQueryRange","type":"error"},{"inputs":[],"name":"InvalidStageTime","type":"error"},{"inputs":[],"name":"MaxSupplyCannotBeGreaterThan2ToThe64thPower","type":"error"},{"inputs":[],"name":"MaxSupplyCannotBeIncreased","type":"error"},{"inputs":[],"name":"MaxSupplyCannotBeLessThanCurrentSupply","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"NotCompatibleWithSpotMints","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"PayoutRecipientCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"PublicStageNotActive","type":"error"},{"inputs":[],"name":"RequiredValueNotMet","type":"error"},{"inputs":[],"name":"RoyaltyOverflow","type":"error"},{"inputs":[],"name":"RoyaltyReceiverIsZeroAddress","type":"error"},{"inputs":[],"name":"SequentialMintExceedsLimit","type":"error"},{"inputs":[],"name":"SequentialUpToTooSmall","type":"error"},{"inputs":[],"name":"SpotMintTokenIdTooSmall","type":"error"},{"inputs":[],"name":"TokenAlreadyExists","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"WalletLimitExceeded","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"indexed":false,"internalType":"struct AllowlistStage","name":"stage","type":"tuple"}],"name":"AllowlistStageSet","type":"event"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_contractURI","type":"string"}],"name":"ContractURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[],"name":"MagicDropTokenDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"MaxSupplyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPayoutRecipient","type":"address"}],"name":"PayoutRecipientSet","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct PublicStage","name":"stage","type":"tuple"}],"name":"PublicStageSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"bps","type":"uint256"}],"name":"RoyaltyInfoUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"qty","type":"uint256"}],"name":"TokenMinted","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_walletLimit","type":"uint256"}],"name":"WalletLimitUpdated","type":"event"},{"inputs":[],"name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROTOCOL_FEE_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROTOCOL_FEE_RECIPIENT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"contractNameAndVersion","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"internalType":"uint256","name":"toTokenId","type":"uint256"}],"name":"emitBatchMetadataUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"explicitOwnershipOf","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"uint24","name":"extraData","type":"uint24"}],"internalType":"struct IERC721A.TokenOwnership","name":"ownership","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"explicitOwnershipsOf","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"uint24","name":"extraData","type":"uint24"}],"internalType":"struct IERC721A.TokenOwnership[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllowlistStage","outputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"internalType":"struct AllowlistStage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getConfig","outputs":[{"components":[{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"walletLimit","type":"uint256"},{"internalType":"string","name":"baseURI","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct PublicStage","name":"publicStage","type":"tuple"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"internalType":"struct AllowlistStage","name":"allowlistStage","type":"tuple"},{"internalType":"address","name":"payoutRecipient","type":"address"},{"internalType":"address","name":"royaltyRecipient","type":"address"},{"internalType":"uint96","name":"royaltyBps","type":"uint96"}],"internalType":"struct SetupConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPublicStage","outputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct PublicStage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_owner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintAllowlist","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"mintPublic","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payoutRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"royaltyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","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":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"internalType":"struct AllowlistStage","name":"stage","type":"tuple"}],"name":"setAllowlistStage","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":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newContractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPayoutRecipient","type":"address"}],"name":"setPayoutRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct PublicStage","name":"stage","type":"tuple"}],"name":"setPublicStage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"},{"internalType":"uint96","name":"newBps","type":"uint96"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newWalletLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"walletLimit","type":"uint256"},{"internalType":"string","name":"baseURI","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct PublicStage","name":"publicStage","type":"tuple"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"internalType":"struct AllowlistStage","name":"allowlistStage","type":"tuple"},{"internalType":"address","name":"payoutRecipient","type":"address"},{"internalType":"address","name":"royaltyRecipient","type":"address"},{"internalType":"uint96","name":"royaltyBps","type":"uint96"}],"internalType":"struct SetupConfig","name":"config","type":"tuple"}],"name":"setup","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"stop","type":"uint256"}],"name":"tokensOfOwnerIn","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"totalMintedByUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"result","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":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

    Block Age Transaction Difficulty Gas Used Reward
    View All Blocks Produced

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

    Validator Index Block Age Amount
    View All Withdrawals

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

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