ERC-1155
Overview
Max Total Supply
543 PARTY
Holders
543
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DopaminePartyNFT
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.15; //////////////////////////////////////////////////////////////////////////////// /// ░▒█▀▀▄░█▀▀█░▒█▀▀█░█▀▀▄░▒█▀▄▀█░▄█░░▒█▄░▒█░▒█▀▀▀ /// /// ░▒█░▒█░█▄▀█░▒█▄▄█▒█▄▄█░▒█▒█▒█░░█▒░▒█▒█▒█░▒█▀▀▀ /// /// ░▒█▄▄█░█▄▄█░▒█░░░▒█░▒█░▒█░░▒█░▄█▄░▒█░░▀█░▒█▄▄▄ /// //////////////////////////////////////////////////////////////////////////////// import {ERC1155NT} from "../erc1155/ERC1155NT.sol"; import {IDopaminePartyNFT} from "../interfaces/IDopaminePartyNFT.sol"; /// @title Dopamine Party NFTs /// @notice Dopamine Party NFTs are non-transferable ERC-1155s given to /// attendees of Dopamine's various IRL or virtual events & parties. This /// ERC-1155 implementation additionally supports per NFT type supply tracking /// and minting through airdrops or merkle allowlist claims. Each NFT type /// uniquely identifies a specific party, thus attendees may own 1 max of each. contract DopaminePartyNFT is ERC1155NT, IDopaminePartyNFT { string public name = "Dopamine Party NFTs"; string public symbol = "PARTY"; /// @notice The address administering NFT distributions and metadata. address public owner; /// @notice The URI each NFT initially points to for metadata resolution. /// @dev Before URI finalization, `uri()` resolves to "{baseURI}/{id}". string public baseURI; /// @notice Maps the id of an NFT type to its finalized metadata URI. /// @dev After URI finalization, `uri()` resolves to "{tokenURI[id]}". mapping(uint256 => string) public tokenURI; /// @notice Gets for a specific NFT type its total supply. mapping(uint256 => uint256) public totalSupply; // Merkle roots for each NFT type (null if NFT type is not claimable). mapping(uint256 => bytes32) private _allowlist; // Counter for tracking the current NFT type id. uint256 private _id; /// @dev Restricts a function call to address `owner`. modifier onlyOwner() { if (msg.sender != owner) { revert OwnerOnly(); } _; } /// @notice Initializes contract with given base URI and sender as owner. /// @param baseURI_ The base URI address involved in fetching NFT metadata. constructor(string memory baseURI_) { baseURI = baseURI_; emit BaseURISet(baseURI); owner = msg.sender; emit OwnerChanged(address(0), owner); } /// @inheritdoc IDopaminePartyNFT function setBaseURI(string calldata newBaseURI) external onlyOwner { baseURI = newBaseURI; emit BaseURISet(newBaseURI); } /// @inheritdoc IDopaminePartyNFT function setOwner(address newOwner) external onlyOwner { emit OwnerChanged(owner, newOwner); owner = newOwner; } /// @inheritdoc IDopaminePartyNFT function setTokenURI(uint256 id, string calldata newTokenURI) external onlyOwner { if (id >= _id) { revert TokenNonExistent(); } if (bytes(tokenURI[id]).length != 0) { revert TokenImmutable(); } tokenURI[id] = newTokenURI; emit TokenURISet(id, newTokenURI); } /// @notice Returns the metadata URI for NFT type with id `id`. /// @param id The id of the type of NFT being queried. function uri(uint256 id) external view returns (string memory) { if (totalSupply[id] == 0) { revert TokenNonExistent(); } if (bytes(tokenURI[id]).length == 0) { return string(abi.encodePacked(baseURI, _toString(id))); } else { return tokenURI[id]; } } /// @inheritdoc IDopaminePartyNFT function allowlist(uint256 id, bytes32 allowlistRoot) external onlyOwner { if (id > _id) { revert TokenNonExistent(); } // Retroactive claim changes are disallowed once metadata is immutable. if (bytes(tokenURI[id]).length != 0) { revert TokenImmutable(); } _allowlist[id] = allowlistRoot; if (id == _id) { _id += 1; emit PartyNFTCreated(id, allowlistRoot); } else { emit PartyNFTUpdated(id, allowlistRoot); } } /// @inheritdoc IDopaminePartyNFT function airdrop(uint256 id, address[] calldata addresses) external onlyOwner { if (id > _id) { revert TokenNonExistent(); } // Retroactive airdrops are disallowed once metadata is immutable. if (bytes(tokenURI[id]).length != 0) { revert TokenImmutable(); } if (id == _id) { _id += 1; emit PartyNFTCreated(id, ""); } else { emit PartyNFTUpdated(id, ""); } uint256 numAddresses = addresses.length; for (uint256 i = 0; i < numAddresses; i++) { _mint(addresses[i], id); } totalSupply[id] += numAddresses; } // @inheritdoc IDopaminePartyNFT function claim(bytes32[] calldata proof, uint256 id) external { bytes32 tokenAllowlist = _allowlist[id]; bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); if (!_verify(tokenAllowlist, proof, leaf)) { revert ProofInvalid(); } _mint(msg.sender, id); totalSupply[id]++; } /// @dev Checks whether `leaf` is part of merkle tree rooted at `merkleRoot` /// using proof `proof`. Merkle tree generation and proof construction is /// done using the following JS library: github.com/miguelmota/merkletreejs /// @param merkleRoot The hexlified merkle root as a bytes32 data type. /// @param proof The abi-encoded proof formatted as a bytes32 array. /// @param leaf The leaf node being checked (uses keccak-256 hashing). /// @return True if `leaf` is in `merkleRoot`-rooted tree, False otherwise. function _verify( bytes32 merkleRoot, bytes32[] memory proof, bytes32 leaf ) private pure returns (bool) { bytes32 hash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (hash <= proofElement) { hash = keccak256(abi.encodePacked(hash, proofElement)); } else { hash = keccak256(abi.encodePacked(proofElement, hash)); } } return hash == merkleRoot; } /// @dev Converts a uint256 into a string. function _toString(uint256 value) private pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.13; //////////////////////////////////////////////////////////////////////////////// /// ░▒█▀▀▄░█▀▀█░▒█▀▀█░█▀▀▄░▒█▀▄▀█░▄█░░▒█▄░▒█░▒█▀▀▀ /// /// ░▒█░▒█░█▄▀█░▒█▄▄█▒█▄▄█░▒█▒█▒█░░█▒░▒█▒█▒█░▒█▀▀▀ /// /// ░▒█▄▄█░█▄▄█░▒█░░░▒█░▒█░▒█░░▒█░▄█▄░▒█░░▀█░▒█▄▄▄ /// //////////////////////////////////////////////////////////////////////////////// import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; import {IERC1155Receiver} from "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol"; import {IERC1155NTErrors} from "../interfaces/IERC1155NTErrors.sol"; /// @title Dopamine non-transferable ERC-1155 contract /// @notice This is a minimal ERC-1155 implementation that does not support /// transfers outside of minting, throwing in all such cases. contract ERC1155NT is IERC1155, IERC1155NTErrors { /// @notice Gets for an address the number of NFTs owned of a specific type. mapping(address => mapping(uint256 => uint256)) public balanceOf; /// @notice EIP-165 identifiers for all supported interfaces. bytes4 private constant _ERC165_INTERFACE_ID = 0x01ffc9a7; bytes4 private constant _ERC1155_INTERFACE_ID = 0xd9b67a26; bytes4 private constant _ERC1155_METADATA_INTERFACE_ID = 0x0e89341c; /// @notice Transfers an NFT from a source to a destination address. /// WARNING: This will always throw as transfers are unsupported. function safeTransferFrom( address, address, uint256, uint256, bytes memory ) public virtual { revert TokenNonTransferable(); } /// @notice Transfers multiple NFTs from a source to a destination address. /// WARNING: This will always throw as transfers are unsupported. function safeBatchTransferFrom( address, address, uint256[] memory, uint256[] memory, bytes memory ) public virtual { revert TokenNonTransferable(); } /// @notice Retrieves balances of multiple account / NFT type pairs. /// @param owners List of NFT owner addresses. /// @param ids List of ids of NFT types. /// @return balances List of balances corresponding to the owner / id pairs. function balanceOfBatch(address[] memory owners, uint256[] memory ids) public view virtual returns (uint256[] memory balances) { if (owners.length != ids.length) { revert ArityMismatch(); } balances = new uint256[](owners.length); unchecked { for (uint256 i = 0; i < owners.length; ++i) { balances[i] = balanceOf[owners[i]][ids[i]]; } } } /// @notice Checks if an operator is an authorized operator for an owner. /// WARNING: This will always return false as operators are unsupported. function isApprovedForAll(address, address) external view virtual returns (bool) { return false; } /// @notice Sets the operator for the sender address. /// WARNING: This will always throw as operators are unsupported. function setApprovalForAll(address, bool) public virtual { revert TokenNonTransferable(); } /// @notice Checks if interface of identifier `id` is supported. /// @param id The ERC-165 interface identifier. /// @return True if interface id `id` is supported, False otherwise. function supportsInterface(bytes4 id) public pure virtual returns (bool) { return id == _ERC165_INTERFACE_ID || id == _ERC1155_INTERFACE_ID || id == _ERC1155_METADATA_INTERFACE_ID; } /// @notice Mints NFT of type `id` to address `to`. /// @param to Address receiving the minted NFT. /// @param id The id of the NFT type being minted. function _mint(address to, uint256 id) internal virtual { if (balanceOf[to][id] == 1) { revert TokenAlreadyMinted(); } balanceOf[to][id] = 1; emit TransferSingle(msg.sender, address(0), to, id, 1); if ( to.code.length != 0 && IERC1155Receiver(to).onERC1155Received( msg.sender, address(0), id, 1, "" ) != IERC1155Receiver.onERC1155Received.selector ) { revert SafeTransferUnsupported(); } else if (to == address(0)) { revert ReceiverInvalid(); } } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.15; //////////////////////////////////////////////////////////////////////////////// /// ░▒█▀▀▄░█▀▀█░▒█▀▀█░█▀▀▄░▒█▀▄▀█░▄█░░▒█▄░▒█░▒█▀▀▀ /// /// ░▒█░▒█░█▄▀█░▒█▄▄█▒█▄▄█░▒█▒█▒█░░█▒░▒█▒█▒█░▒█▀▀▀ /// /// ░▒█▄▄█░█▄▄█░▒█░░░▒█░▒█░▒█░░▒█░▄█▄░▒█░░▀█░▒█▄▄▄ /// //////////////////////////////////////////////////////////////////////////////// import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import {IDopaminePartyNFTEventsAndErrors} from "../interfaces/IDopaminePartyNFTEventsAndErrors.sol"; /// @title Dopamine Party NFT Interface interface IDopaminePartyNFT is IDopaminePartyNFTEventsAndErrors { /// @notice returns the URI of the specified token /// @param id The queried token id. function uri(uint256 id) external returns (string memory); /// @notice Sets the base URI to `newBaseURI`. /// @param newBaseURI The new base metadata URI to set for the collection. /// @dev This function is only callable by the owner address. function setBaseURI(string calldata newBaseURI) external; /// @notice Sets the final metadata URI for NFT type `id` to `uri`. /// @dev This function is only callable by the owner address, and reverts /// if the specified NFT of type `id` does not exist. /// @param id The id of the NFT whose final metadata URI is being set. /// @param newTokenURI The finalized IPFS / Arweave metadata URI. function setTokenURI(uint256 id, string calldata newTokenURI) external; /// @notice Sets the owner address to `newOwner`. /// @param newOwner The address of the new owner. /// @dev This function is only callable by the owner address. function setOwner(address newOwner) external; /// @notice Creates for NFT type `id` an allowlist for claiming. /// @dev This function is only callable by the contract owner. /// @param id The id of the NFT being made claimable. /// @param allowlistRoot The merkle root of the allowlist for this NFT type. function allowlist(uint256 id, bytes32 allowlistRoot) external; /// @notice Mints NFTs of type `id` to all specified addresses `addresses`. /// @dev This function is only callable by the contract owner. /// @param id The id of the NFT type being minted. /// @param addresses The list of addresses receiving the minted NFT. function airdrop(uint256 id, address[] calldata addresses) external; /// @notice Mints allowlisted NFT of type `id` to the sender address if /// merkle proof `proof` proves they were allowlisted for that NFT type. /// @dev Reverts if invalid proof is provided or claimer isn't allowlisted. /// The allowlist is formed using sender addresses as leaves. /// @param proof The Merkle proof of the claim as a bytes32 array. /// @param id The id of the Dopamine party NFT being claimed. function claim( bytes32[] calldata proof, uint256 id ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.13; //////////////////////////////////////////////////////////////////////////////// /// ░▒█▀▀▄░█▀▀█░▒█▀▀█░█▀▀▄░▒█▀▄▀█░▄█░░▒█▄░▒█░▒█▀▀▀ /// /// ░▒█░▒█░█▄▀█░▒█▄▄█▒█▄▄█░▒█▒█▒█░░█▒░▒█▒█▒█░▒█▀▀▀ /// /// ░▒█▄▄█░█▄▄█░▒█░░░▒█░▒█░▒█░░▒█░▄█▄░▒█░░▀█░▒█▄▄▄ /// //////////////////////////////////////////////////////////////////////////////// /// @title ERC1155NT Errors Interface interface IERC1155NTErrors { /// @notice Mismatch between input arrays. error ArityMismatch(); /// @notice Receiving address cannot be the zero address. error ReceiverInvalid(); /// @notice Receiving contract does not implement the ERC-721 wallet interface. error SafeTransferUnsupported(); /// @notice Token has already been minted. error TokenAlreadyMinted(); /// @notice Token may not be transferred. error TokenNonTransferable(); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * 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[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.15; //////////////////////////////////////////////////////////////////////////////// /// ░▒█▀▀▄░█▀▀█░▒█▀▀█░█▀▀▄░▒█▀▄▀█░▄█░░▒█▄░▒█░▒█▀▀▀ /// /// ░▒█░▒█░█▄▀█░▒█▄▄█▒█▄▄█░▒█▒█▒█░░█▒░▒█▒█▒█░▒█▀▀▀ /// /// ░▒█▄▄█░█▄▄█░▒█░░░▒█░▒█░▒█░░▒█░▄█▄░▒█░░▀█░▒█▄▄▄ /// //////////////////////////////////////////////////////////////////////////////// /// @title Dopamine Party NFT Events & Errors Interface interface IDopaminePartyNFTEventsAndErrors { /// @notice Emits when the Dopamine tab base URI is set to `baseURI`. /// @param baseURI The base URI of the Dopamine tab contract, as a string. event BaseURISet(string baseURI); /// @notice Emits when NFT type of id `id` has its URI set to `tokenURI`. /// @param id The id of the type of NFT whose URI was set. /// @param tokenURI The metadata URI of the token, as a string. event TokenURISet(uint256 id, string tokenURI); /// @notice Emits when owner is changed from `oldOwner` to `newOwner`. /// @param oldOwner The address of the previous owner. /// @param newOwner The address of the new owner. event OwnerChanged(address indexed oldOwner, address indexed newOwner); /// @notice Emits when a new party NFT type is created. /// @param id The id of the new party NFT type. /// @param allowlistRoot The merkle root, if any, for minting to claimants. event PartyNFTCreated( uint256 indexed id, bytes32 allowlistRoot ); /// @notice Emits when an existing party NFT type is updated. /// @param id The id of the party NFT type. /// @param allowlistRoot The updated merkle root, if any, of the allowlist. event PartyNFTUpdated( uint256 indexed id, bytes32 allowlistRoot ); /// @notice Claim drop identifier is invalid. error ClaimInvalid(); /// @notice Function callable only by the owner. error OwnerOnly(); /// @notice Proof for claim is invalid. error ProofInvalid(); /// @notice NFT of the specified type does not exist. error TokenNonExistent(); /// @notice NFTs of the specified type may not be minted or modified. error TokenImmutable(); }
{ "remappings": [ "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/ds-test/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "src/=src/", "src/=src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ArityMismatch","type":"error"},{"inputs":[],"name":"ClaimInvalid","type":"error"},{"inputs":[],"name":"OwnerOnly","type":"error"},{"inputs":[],"name":"ProofInvalid","type":"error"},{"inputs":[],"name":"ReceiverInvalid","type":"error"},{"inputs":[],"name":"SafeTransferUnsupported","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TokenImmutable","type":"error"},{"inputs":[],"name":"TokenNonExistent","type":"error"},{"inputs":[],"name":"TokenNonTransferable","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"string","name":"baseURI","type":"string"}],"name":"BaseURISet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"allowlistRoot","type":"bytes32"}],"name":"PartyNFTCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"allowlistRoot","type":"bytes32"}],"name":"PartyNFTUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"string","name":"tokenURI","type":"string"}],"name":"TokenURISet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes32","name":"allowlistRoot","type":"bytes32"}],"name":"allowlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","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":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"newTokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"id","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c0604052601360809081527f446f70616d696e65205061727479204e4654730000000000000000000000000060a0526001906200003e9082620001d0565b50604080518082019091526005815264504152545960d81b60208201526002906200006a9082620001d0565b503480156200007857600080fd5b5060405162001d0138038062001d018339810160408190526200009b916200029c565b6004620000a98282620001d0565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f66004604051620000dc919062000378565b60405180910390a1600380546001600160a01b031916339081179091556040516000907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a3506200040b565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200015657607f821691505b6020821081036200017757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cb57600081815260208120601f850160051c81016020861015620001a65750805b601f850160051c820191505b81811015620001c757828155600101620001b2565b5050505b505050565b81516001600160401b03811115620001ec57620001ec6200012b565b6200020481620001fd845462000141565b846200017d565b602080601f8311600181146200023c5760008415620002235750858301515b600019600386901b1c1916600185901b178555620001c7565b600085815260208120601f198616915b828110156200026d578886015182559484019460019091019084016200024c565b50858210156200028c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808385031215620002b057600080fd5b82516001600160401b0380821115620002c857600080fd5b818501915085601f830112620002dd57600080fd5b815181811115620002f257620002f26200012b565b604051601f8201601f19908116603f011681019083821181831017156200031d576200031d6200012b565b8160405282815288868487010111156200033657600080fd5b600093505b828410156200035a57848401860151818501870152928501926200033b565b828411156200036c5760008684830101525b98975050505050505050565b60006020808352600084546200038e8162000141565b80848701526040600180841660008114620003b25760018114620003cd57620003fd565b60ff1985168984015283151560051b890183019550620003fd565b896000528660002060005b85811015620003f55781548b8201860152908301908801620003d8565b8a0184019650505b509398975050505050505050565b6118e6806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c806355f804b3116100ad578063bd85b03911610071578063bd85b03914610293578063bdf7a8e6146102b3578063c87b56dd146102c6578063e985e9c5146102d9578063f242432a146102ef57600080fd5b806355f804b3146102375780636c0360eb1461024a5780638da5cb5b1461025257806395d89b411461027d578063a22cb4651461028557600080fd5b806313af4035116100f457806313af4035146101cb578063162094c4146101de5780632eb2c2d6146101f15780633b439351146102045780634e1273f41461021757600080fd5b8062fdd58e1461013057806301ffc9a71461016b57806306fdde031461018e5780630e89341c146101a35780631078ea1c146101b6575b600080fd5b61015861013e366004610f2e565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61017e610179366004610f71565b6102fd565b6040519015158152602001610162565b61019661034f565b6040516101629190610fc5565b6101966101b1366004610ff8565b6103dd565b6101c96101c4366004611011565b610504565b005b6101c96101d9366004611033565b61062d565b6101c96101ec366004611096565b6106b4565b6101c96101ff366004611224565b610794565b6101c9610212366004611311565b6107ad565b61022a61022536600461135c565b610884565b604051610162919061141b565b6101c961024536600461145f565b61098d565b610196610a03565b600354610265906001600160a01b031681565b6040516001600160a01b039091168152602001610162565b610196610a10565b6101c96101ff3660046114a0565b6101586102a1366004610ff8565b60066020526000908152604090205481565b6101c96102c13660046114dc565b610a1d565b6101966102d4366004610ff8565b610bb4565b61017e6102e736600461151a565b600092915050565b6101c96101ff36600461154d565b60006001600160e01b031982166301ffc9a760e01b148061032e57506001600160e01b03198216636cdb3d1360e11b145b8061034957506001600160e01b031982166303a24d0760e21b145b92915050565b6001805461035c906115b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610388906115b1565b80156103d55780601f106103aa576101008083540402835291602001916103d5565b820191906000526020600020905b8154815290600101906020018083116103b857829003601f168201915b505050505081565b6000818152600660205260408120546060910361040d576040516374fc75bf60e01b815260040160405180910390fd5b60008281526005602052604090208054610426906115b1565b905060000361046157600461043a83610bcd565b60405160200161044b9291906115eb565b6040516020818303038152906040529050919050565b6000828152600560205260409020805461047a906115b1565b80601f01602080910402602001604051908101604052809291908181526020018280546104a6906115b1565b80156104f35780601f106104c8576101008083540402835291602001916104f3565b820191906000526020600020905b8154815290600101906020018083116104d657829003601f168201915b50505050509050919050565b919050565b6003546001600160a01b0316331461052f57604051630b2db9b760e31b815260040160405180910390fd5b600854821115610552576040516374fc75bf60e01b815260040160405180910390fd5b6000828152600560205260409020805461056b906115b1565b15905061058b5760405163744d6a3360e01b815260040160405180910390fd5b600082815260076020526040902081905560085482036105f7576001600860008282546105b89190611688565b909155505060405181815282907fbfb89d0afddd5ce1c3524b6e7990e2ccd05e618537ffc5072c29575966c53c8e906020015b60405180910390a25050565b817f94d9e4b71c51ed4f5320de6710f6d41319c7bddd7768876e2d7a9abf161bce5f826040516105eb91815260200190565b5050565b6003546001600160a01b0316331461065857604051630b2db9b760e31b815260040160405180910390fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146106df57604051630b2db9b760e31b815260040160405180910390fd5b6008548310610701576040516374fc75bf60e01b815260040160405180910390fd5b6000838152600560205260409020805461071a906115b1565b15905061073a5760405163744d6a3360e01b815260040160405180910390fd5b60008381526005602052604090206107538284836116ef565b507fda84ca2183491f179a603e877b2cb058e42195041c2b9c53d746427e519a34df838383604051610787939291906117d8565b60405180910390a1505050565b60405163fcd0178f60e01b815260040160405180910390fd5b60008181526007602090815260408083205490516bffffffffffffffffffffffff193360601b1692810192909252919060340160405160208183030381529060405280519060200120905061083782868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250610cd5915050565b61085457604051631ff3747d60e21b815260040160405180910390fd5b61085e3384610d84565b6000838152600660205260408120805491610878836117fb565b91905055505050505050565b606081518351146108a85760405163c21fe6bf60e01b815260040160405180910390fd5b82516001600160401b038111156108c1576108c16110e1565b6040519080825280602002602001820160405280156108ea578160200160208202803683370190505b50905060005b83518110156109865760008085838151811061090e5761090e611814565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600084838151811061094a5761094a611814565b602002602001015181526020019081526020016000205482828151811061097357610973611814565b60209081029190910101526001016108f0565b5092915050565b6003546001600160a01b031633146109b857604051630b2db9b760e31b815260040160405180910390fd5b60046109c58284836116ef565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f682826040516109f792919061182a565b60405180910390a15050565b6004805461035c906115b1565b6002805461035c906115b1565b6003546001600160a01b03163314610a4857604051630b2db9b760e31b815260040160405180910390fd5b600854831115610a6b576040516374fc75bf60e01b815260040160405180910390fd5b60008381526005602052604090208054610a84906115b1565b159050610aa45760405163744d6a3360e01b815260040160405180910390fd5b6008548303610b0057600160086000828254610ac09190611688565b90915550506040516000815283907fbfb89d0afddd5ce1c3524b6e7990e2ccd05e618537ffc5072c29575966c53c8e9060200160405180910390a2610b3c565b827f94d9e4b71c51ed4f5320de6710f6d41319c7bddd7768876e2d7a9abf161bce5f604051610b33906000815260200190565b60405180910390a25b8060005b81811015610b8a57610b78848483818110610b5d57610b5d611814565b9050602002016020810190610b729190611033565b86610d84565b80610b82816117fb565b915050610b40565b5060008481526006602052604081208054839290610ba9908490611688565b909155505050505050565b6005602052600090815260409020805461035c906115b1565b606081600003610bf45750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610c1e5780610c08816117fb565b9150610c179050600a83611854565b9150610bf8565b6000816001600160401b03811115610c3857610c386110e1565b6040519080825280601f01601f191660200182016040528015610c62576020820181803683370190505b5090505b8415610ccd57610c77600183611868565b9150610c84600a8661187f565b610c8f906030611688565b60f81b818381518110610ca457610ca4611814565b60200101906001600160f81b031916908160001a905350610cc6600a86611854565b9450610c66565b949350505050565b600081815b8451811015610d79576000858281518110610cf757610cf7611814565b60200260200101519050808311610d39576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610d66565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610d71816117fb565b915050610cda565b509093149392505050565b6001600160a01b038216600090815260208181526040808320848452909152902054600103610dc55760405162a5a1f560e01b815260040160405180910390fd5b6001600160a01b038216600081815260208181526040808320858452825280832060019081905581518681529283015233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0382163b15801590610ed2575060405163f23a6e6160e01b808252336004830152600060248301819052604483018490526001606484015260a0608484015260a4830152906001600160a01b0384169063f23a6e619060c4016020604051808303816000875af1158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec59190611893565b6001600160e01b03191614155b15610ef0576040516307dcd0fb60e51b815260040160405180910390fd5b6001600160a01b038216610629576040516308cdf45760e41b815260040160405180910390fd5b80356001600160a01b03811681146104ff57600080fd5b60008060408385031215610f4157600080fd5b610f4a83610f17565b946020939093013593505050565b6001600160e01b031981168114610f6e57600080fd5b50565b600060208284031215610f8357600080fd5b8135610f8e81610f58565b9392505050565b60005b83811015610fb0578181015183820152602001610f98565b83811115610fbf576000848401525b50505050565b6020815260008251806020840152610fe4816040850160208701610f95565b601f01601f19169190910160400192915050565b60006020828403121561100a57600080fd5b5035919050565b6000806040838503121561102457600080fd5b50508035926020909101359150565b60006020828403121561104557600080fd5b610f8e82610f17565b60008083601f84011261106057600080fd5b5081356001600160401b0381111561107757600080fd5b60208301915083602082850101111561108f57600080fd5b9250929050565b6000806000604084860312156110ab57600080fd5b8335925060208401356001600160401b038111156110c857600080fd5b6110d48682870161104e565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561111f5761111f6110e1565b604052919050565b60006001600160401b03821115611140576111406110e1565b5060051b60200190565b600082601f83011261115b57600080fd5b8135602061117061116b83611127565b6110f7565b82815260059290921b8401810191818101908684111561118f57600080fd5b8286015b848110156111aa5780358352918301918301611193565b509695505050505050565b600082601f8301126111c657600080fd5b81356001600160401b038111156111df576111df6110e1565b6111f2601f8201601f19166020016110f7565b81815284602083860101111561120757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561123c57600080fd5b61124586610f17565b945061125360208701610f17565b935060408601356001600160401b038082111561126f57600080fd5b61127b89838a0161114a565b9450606088013591508082111561129157600080fd5b61129d89838a0161114a565b935060808801359150808211156112b357600080fd5b506112c0888289016111b5565b9150509295509295909350565b60008083601f8401126112df57600080fd5b5081356001600160401b038111156112f657600080fd5b6020830191508360208260051b850101111561108f57600080fd5b60008060006040848603121561132657600080fd5b83356001600160401b0381111561133c57600080fd5b611348868287016112cd565b909790965060209590950135949350505050565b6000806040838503121561136f57600080fd5b82356001600160401b038082111561138657600080fd5b818501915085601f83011261139a57600080fd5b813560206113aa61116b83611127565b82815260059290921b840181019181810190898411156113c957600080fd5b948201945b838610156113ee576113df86610f17565b825294820194908201906113ce565b9650508601359250508082111561140457600080fd5b506114118582860161114a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561145357835183529284019291840191600101611437565b50909695505050505050565b6000806020838503121561147257600080fd5b82356001600160401b0381111561148857600080fd5b6114948582860161104e565b90969095509350505050565b600080604083850312156114b357600080fd5b6114bc83610f17565b9150602083013580151581146114d157600080fd5b809150509250929050565b6000806000604084860312156114f157600080fd5b8335925060208401356001600160401b0381111561150e57600080fd5b6110d4868287016112cd565b6000806040838503121561152d57600080fd5b61153683610f17565b915061154460208401610f17565b90509250929050565b600080600080600060a0868803121561156557600080fd5b61156e86610f17565b945061157c60208701610f17565b9350604086013592506060860135915060808601356001600160401b038111156115a557600080fd5b6112c0888289016111b5565b600181811c908216806115c557607f821691505b6020821081036115e557634e487b7160e01b600052602260045260246000fd5b50919050565b60008084546115f9816115b1565b60018281168015611611576001811461162657611655565b60ff1984168752821515830287019450611655565b8860005260208060002060005b8581101561164c5781548a820152908401908201611633565b50505082870194505b505050508351611669818360208801610f95565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561169b5761169b611672565b500190565b601f8211156116ea57600081815260208120601f850160051c810160208610156116c75750805b601f850160051c820191505b818110156116e6578281556001016116d3565b5050505b505050565b6001600160401b03831115611706576117066110e1565b61171a8361171483546115b1565b836116a0565b6000601f84116001811461174e57600085156117365750838201355b600019600387901b1c1916600186901b1783556117a8565b600083815260209020601f19861690835b8281101561177f578685013582556020948501946001909201910161175f565b508682101561179c5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8381526040602082015260006117f26040830184866117af565b95945050505050565b60006001820161180d5761180d611672565b5060010190565b634e487b7160e01b600052603260045260246000fd5b602081526000610ccd6020830184866117af565b634e487b7160e01b600052601260045260246000fd5b6000826118635761186361183e565b500490565b60008282101561187a5761187a611672565b500390565b60008261188e5761188e61183e565b500690565b6000602082840312156118a557600080fd5b8151610f8e81610f5856fea2646970667358221220e530659b06d015f53fa3b434b1b20e5324c5477ec18e75843eca0bb4a0ddfe2f64736f6c634300080f00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002d68747470733a2f2f6170692e646f70616d696e652e78797a2f70617274792d6e6674732f6d657461646174612f00000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012b5760003560e01c806355f804b3116100ad578063bd85b03911610071578063bd85b03914610293578063bdf7a8e6146102b3578063c87b56dd146102c6578063e985e9c5146102d9578063f242432a146102ef57600080fd5b806355f804b3146102375780636c0360eb1461024a5780638da5cb5b1461025257806395d89b411461027d578063a22cb4651461028557600080fd5b806313af4035116100f457806313af4035146101cb578063162094c4146101de5780632eb2c2d6146101f15780633b439351146102045780634e1273f41461021757600080fd5b8062fdd58e1461013057806301ffc9a71461016b57806306fdde031461018e5780630e89341c146101a35780631078ea1c146101b6575b600080fd5b61015861013e366004610f2e565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61017e610179366004610f71565b6102fd565b6040519015158152602001610162565b61019661034f565b6040516101629190610fc5565b6101966101b1366004610ff8565b6103dd565b6101c96101c4366004611011565b610504565b005b6101c96101d9366004611033565b61062d565b6101c96101ec366004611096565b6106b4565b6101c96101ff366004611224565b610794565b6101c9610212366004611311565b6107ad565b61022a61022536600461135c565b610884565b604051610162919061141b565b6101c961024536600461145f565b61098d565b610196610a03565b600354610265906001600160a01b031681565b6040516001600160a01b039091168152602001610162565b610196610a10565b6101c96101ff3660046114a0565b6101586102a1366004610ff8565b60066020526000908152604090205481565b6101c96102c13660046114dc565b610a1d565b6101966102d4366004610ff8565b610bb4565b61017e6102e736600461151a565b600092915050565b6101c96101ff36600461154d565b60006001600160e01b031982166301ffc9a760e01b148061032e57506001600160e01b03198216636cdb3d1360e11b145b8061034957506001600160e01b031982166303a24d0760e21b145b92915050565b6001805461035c906115b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610388906115b1565b80156103d55780601f106103aa576101008083540402835291602001916103d5565b820191906000526020600020905b8154815290600101906020018083116103b857829003601f168201915b505050505081565b6000818152600660205260408120546060910361040d576040516374fc75bf60e01b815260040160405180910390fd5b60008281526005602052604090208054610426906115b1565b905060000361046157600461043a83610bcd565b60405160200161044b9291906115eb565b6040516020818303038152906040529050919050565b6000828152600560205260409020805461047a906115b1565b80601f01602080910402602001604051908101604052809291908181526020018280546104a6906115b1565b80156104f35780601f106104c8576101008083540402835291602001916104f3565b820191906000526020600020905b8154815290600101906020018083116104d657829003601f168201915b50505050509050919050565b919050565b6003546001600160a01b0316331461052f57604051630b2db9b760e31b815260040160405180910390fd5b600854821115610552576040516374fc75bf60e01b815260040160405180910390fd5b6000828152600560205260409020805461056b906115b1565b15905061058b5760405163744d6a3360e01b815260040160405180910390fd5b600082815260076020526040902081905560085482036105f7576001600860008282546105b89190611688565b909155505060405181815282907fbfb89d0afddd5ce1c3524b6e7990e2ccd05e618537ffc5072c29575966c53c8e906020015b60405180910390a25050565b817f94d9e4b71c51ed4f5320de6710f6d41319c7bddd7768876e2d7a9abf161bce5f826040516105eb91815260200190565b5050565b6003546001600160a01b0316331461065857604051630b2db9b760e31b815260040160405180910390fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146106df57604051630b2db9b760e31b815260040160405180910390fd5b6008548310610701576040516374fc75bf60e01b815260040160405180910390fd5b6000838152600560205260409020805461071a906115b1565b15905061073a5760405163744d6a3360e01b815260040160405180910390fd5b60008381526005602052604090206107538284836116ef565b507fda84ca2183491f179a603e877b2cb058e42195041c2b9c53d746427e519a34df838383604051610787939291906117d8565b60405180910390a1505050565b60405163fcd0178f60e01b815260040160405180910390fd5b60008181526007602090815260408083205490516bffffffffffffffffffffffff193360601b1692810192909252919060340160405160208183030381529060405280519060200120905061083782868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250610cd5915050565b61085457604051631ff3747d60e21b815260040160405180910390fd5b61085e3384610d84565b6000838152600660205260408120805491610878836117fb565b91905055505050505050565b606081518351146108a85760405163c21fe6bf60e01b815260040160405180910390fd5b82516001600160401b038111156108c1576108c16110e1565b6040519080825280602002602001820160405280156108ea578160200160208202803683370190505b50905060005b83518110156109865760008085838151811061090e5761090e611814565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600084838151811061094a5761094a611814565b602002602001015181526020019081526020016000205482828151811061097357610973611814565b60209081029190910101526001016108f0565b5092915050565b6003546001600160a01b031633146109b857604051630b2db9b760e31b815260040160405180910390fd5b60046109c58284836116ef565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f682826040516109f792919061182a565b60405180910390a15050565b6004805461035c906115b1565b6002805461035c906115b1565b6003546001600160a01b03163314610a4857604051630b2db9b760e31b815260040160405180910390fd5b600854831115610a6b576040516374fc75bf60e01b815260040160405180910390fd5b60008381526005602052604090208054610a84906115b1565b159050610aa45760405163744d6a3360e01b815260040160405180910390fd5b6008548303610b0057600160086000828254610ac09190611688565b90915550506040516000815283907fbfb89d0afddd5ce1c3524b6e7990e2ccd05e618537ffc5072c29575966c53c8e9060200160405180910390a2610b3c565b827f94d9e4b71c51ed4f5320de6710f6d41319c7bddd7768876e2d7a9abf161bce5f604051610b33906000815260200190565b60405180910390a25b8060005b81811015610b8a57610b78848483818110610b5d57610b5d611814565b9050602002016020810190610b729190611033565b86610d84565b80610b82816117fb565b915050610b40565b5060008481526006602052604081208054839290610ba9908490611688565b909155505050505050565b6005602052600090815260409020805461035c906115b1565b606081600003610bf45750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610c1e5780610c08816117fb565b9150610c179050600a83611854565b9150610bf8565b6000816001600160401b03811115610c3857610c386110e1565b6040519080825280601f01601f191660200182016040528015610c62576020820181803683370190505b5090505b8415610ccd57610c77600183611868565b9150610c84600a8661187f565b610c8f906030611688565b60f81b818381518110610ca457610ca4611814565b60200101906001600160f81b031916908160001a905350610cc6600a86611854565b9450610c66565b949350505050565b600081815b8451811015610d79576000858281518110610cf757610cf7611814565b60200260200101519050808311610d39576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610d66565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610d71816117fb565b915050610cda565b509093149392505050565b6001600160a01b038216600090815260208181526040808320848452909152902054600103610dc55760405162a5a1f560e01b815260040160405180910390fd5b6001600160a01b038216600081815260208181526040808320858452825280832060019081905581518681529283015233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0382163b15801590610ed2575060405163f23a6e6160e01b808252336004830152600060248301819052604483018490526001606484015260a0608484015260a4830152906001600160a01b0384169063f23a6e619060c4016020604051808303816000875af1158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec59190611893565b6001600160e01b03191614155b15610ef0576040516307dcd0fb60e51b815260040160405180910390fd5b6001600160a01b038216610629576040516308cdf45760e41b815260040160405180910390fd5b80356001600160a01b03811681146104ff57600080fd5b60008060408385031215610f4157600080fd5b610f4a83610f17565b946020939093013593505050565b6001600160e01b031981168114610f6e57600080fd5b50565b600060208284031215610f8357600080fd5b8135610f8e81610f58565b9392505050565b60005b83811015610fb0578181015183820152602001610f98565b83811115610fbf576000848401525b50505050565b6020815260008251806020840152610fe4816040850160208701610f95565b601f01601f19169190910160400192915050565b60006020828403121561100a57600080fd5b5035919050565b6000806040838503121561102457600080fd5b50508035926020909101359150565b60006020828403121561104557600080fd5b610f8e82610f17565b60008083601f84011261106057600080fd5b5081356001600160401b0381111561107757600080fd5b60208301915083602082850101111561108f57600080fd5b9250929050565b6000806000604084860312156110ab57600080fd5b8335925060208401356001600160401b038111156110c857600080fd5b6110d48682870161104e565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561111f5761111f6110e1565b604052919050565b60006001600160401b03821115611140576111406110e1565b5060051b60200190565b600082601f83011261115b57600080fd5b8135602061117061116b83611127565b6110f7565b82815260059290921b8401810191818101908684111561118f57600080fd5b8286015b848110156111aa5780358352918301918301611193565b509695505050505050565b600082601f8301126111c657600080fd5b81356001600160401b038111156111df576111df6110e1565b6111f2601f8201601f19166020016110f7565b81815284602083860101111561120757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561123c57600080fd5b61124586610f17565b945061125360208701610f17565b935060408601356001600160401b038082111561126f57600080fd5b61127b89838a0161114a565b9450606088013591508082111561129157600080fd5b61129d89838a0161114a565b935060808801359150808211156112b357600080fd5b506112c0888289016111b5565b9150509295509295909350565b60008083601f8401126112df57600080fd5b5081356001600160401b038111156112f657600080fd5b6020830191508360208260051b850101111561108f57600080fd5b60008060006040848603121561132657600080fd5b83356001600160401b0381111561133c57600080fd5b611348868287016112cd565b909790965060209590950135949350505050565b6000806040838503121561136f57600080fd5b82356001600160401b038082111561138657600080fd5b818501915085601f83011261139a57600080fd5b813560206113aa61116b83611127565b82815260059290921b840181019181810190898411156113c957600080fd5b948201945b838610156113ee576113df86610f17565b825294820194908201906113ce565b9650508601359250508082111561140457600080fd5b506114118582860161114a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561145357835183529284019291840191600101611437565b50909695505050505050565b6000806020838503121561147257600080fd5b82356001600160401b0381111561148857600080fd5b6114948582860161104e565b90969095509350505050565b600080604083850312156114b357600080fd5b6114bc83610f17565b9150602083013580151581146114d157600080fd5b809150509250929050565b6000806000604084860312156114f157600080fd5b8335925060208401356001600160401b0381111561150e57600080fd5b6110d4868287016112cd565b6000806040838503121561152d57600080fd5b61153683610f17565b915061154460208401610f17565b90509250929050565b600080600080600060a0868803121561156557600080fd5b61156e86610f17565b945061157c60208701610f17565b9350604086013592506060860135915060808601356001600160401b038111156115a557600080fd5b6112c0888289016111b5565b600181811c908216806115c557607f821691505b6020821081036115e557634e487b7160e01b600052602260045260246000fd5b50919050565b60008084546115f9816115b1565b60018281168015611611576001811461162657611655565b60ff1984168752821515830287019450611655565b8860005260208060002060005b8581101561164c5781548a820152908401908201611633565b50505082870194505b505050508351611669818360208801610f95565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561169b5761169b611672565b500190565b601f8211156116ea57600081815260208120601f850160051c810160208610156116c75750805b601f850160051c820191505b818110156116e6578281556001016116d3565b5050505b505050565b6001600160401b03831115611706576117066110e1565b61171a8361171483546115b1565b836116a0565b6000601f84116001811461174e57600085156117365750838201355b600019600387901b1c1916600186901b1783556117a8565b600083815260209020601f19861690835b8281101561177f578685013582556020948501946001909201910161175f565b508682101561179c5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8381526040602082015260006117f26040830184866117af565b95945050505050565b60006001820161180d5761180d611672565b5060010190565b634e487b7160e01b600052603260045260246000fd5b602081526000610ccd6020830184866117af565b634e487b7160e01b600052601260045260246000fd5b6000826118635761186361183e565b500490565b60008282101561187a5761187a611672565b500390565b60008261188e5761188e61183e565b500690565b6000602082840312156118a557600080fd5b8151610f8e81610f5856fea2646970667358221220e530659b06d015f53fa3b434b1b20e5324c5477ec18e75843eca0bb4a0ddfe2f64736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002d68747470733a2f2f6170692e646f70616d696e652e78797a2f70617274792d6e6674732f6d657461646174612f00000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : baseURI_ (string): https://api.dopamine.xyz/party-nfts/metadata/
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000002d
Arg [2] : 68747470733a2f2f6170692e646f70616d696e652e78797a2f70617274792d6e
Arg [3] : 6674732f6d657461646174612f00000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.