ERC-721
Overview
Max Total Supply
4,444 BBIRD
Holders
2,080
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
0 BBIRDLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Minimal Proxy Contract for 0x0b83baedcec970eb2f695fd0eb07cd6a7f31e485
Contract Name:
ERC721AFullFeaturedCollection
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/access/Ownable.sol";import "../../../common/meta-transactions/ERC2771ContextOwnable.sol";import "../../ERC721/extensions/ERC721SimpleProceedsExtension.sol";import "../../ERC721/extensions/ERC721RoyaltyExtension.sol";import "../extensions/ERC721ACollectionMetadataExtension.sol";import "../extensions/ERC721APrefixedMetadataExtension.sol";import "../extensions/ERC721AMinterExtension.sol";import "../extensions/ERC721AOwnerMintExtension.sol";import "../extensions/ERC721APreSaleExtension.sol";import "../extensions/ERC721APublicSaleExtension.sol";import "../extensions/ERC721ARoleBasedMintExtension.sol";import "../extensions/ERC721ARoleBasedLockableExtension.sol";import "../extensions/ERC721AOpenSeaNoGasExtension.sol";contract ERC721AFullFeaturedCollection isOwnable,ERC165Storage,ERC721A,ERC2771ContextOwnable,ERC721ACollectionMetadataExtension,ERC721APrefixedMetadataExtension,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;/// @author: manifold.xyzimport "@openzeppelin/contracts/utils/introspection/IERC165.sol";/*** Simple EIP2981 reference override implementation*/interface IEIP2981RoyaltyOverride is IERC165 {event TokenRoyaltyRemoved(uint256 tokenId);event TokenRoyaltySet(uint256 tokenId, address recipient, uint16 bps);event DefaultRoyaltySet(address recipient, uint16 bps);struct TokenRoyalty {address recipient;uint16 bps;}struct TokenRoyaltyConfig {uint256 tokenId;address recipient;uint16 bps;
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity ^0.8.0;/// @author: manifold.xyzimport "@openzeppelin/contracts/utils/introspection/ERC165.sol";import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";import "./IRoyaltyOverride.sol";import "../specs/IEIP2981.sol";/*** Simple EIP2981 reference override implementation*/abstract contract EIP2981RoyaltyOverrideCore is IEIP2981, IEIP2981RoyaltyOverride, ERC165 {using EnumerableSet for EnumerableSet.UintSet;TokenRoyalty public defaultRoyalty;mapping(uint256 => TokenRoyalty) private _tokenRoyalties;EnumerableSet.UintSet private _tokensWithRoyalties;function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {return interfaceId == type(IEIP2981).interfaceId || interfaceId == type(IEIP2981RoyaltyOverride).interfaceId || super.supportsInterface(interfaceId);}
123456789101112131415// SPDX-License-Identifier: MITpragma solidity ^0.8.0;/*** EIP-2981*/interface IEIP2981 {/*** bytes4(keccak256("royaltyInfo(uint256,uint256)")) == 0x2a55205a** => 0x2a55205a = 0x2a55205a*/function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (access/AccessControl.sol)pragma solidity ^0.8.0;import "./IAccessControl.sol";import "../utils/Context.sol";import "../utils/Strings.sol";import "../utils/introspection/ERC165.sol";/*** @dev Contract module that allows children to implement role-based access* control mechanisms. This is a lightweight version that doesn't allow enumerating role* members except through off-chain means by accessing the contract event logs. Some* applications may benefit from on-chain enumerability, for those cases see* {AccessControlEnumerable}.** Roles are referred to by their `bytes32` identifier. These should be exposed* in the external API and be unique. The best way to achieve this is by* using `public constant` hash digests:** ```* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");* ```** Roles can be used to represent a set of permissions. To restrict access to a
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)pragma solidity ^0.8.0;/*** @dev External interface of AccessControl declared to support ERC165 detection.*/interface IAccessControl {/*** @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`** `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite* {RoleAdminChanged} not being emitted signaling this.** _Available since v3.1._*/event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);/*** @dev Emitted when `account` is granted `role`.** `sender` is the account that originated the contract call, an admin role* bearer except when using {AccessControl-_setupRole}.*/event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract Ownable is Context {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (proxy/utils/Initializable.sol)pragma solidity ^0.8.2;import "../../utils/Address.sol";/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** The initialization functions use a version number. Once a version number is used, it is consumed and cannot be* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in* case an upgrade adds a module that needs to be initialized.** For example:** [.hljs-theme-light.nopadding]* ```* contract MyToken is ERC20Upgradeable {* function initialize() initializer public {* __ERC20_init("MyToken", "MTK");* }* }
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)pragma solidity ^0.8.0;/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].*/abstract contract ReentrancyGuard {// Booleans are more expensive than uint256 or any type that takes up a full// word because each write operation emits an extra SLOAD to first read the// slot's contents, replace the bits taken up by the boolean, and then write// back. This is the compiler's defense against contract upgrades and
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.0;import "./IERC721.sol";import "./IERC721Receiver.sol";import "./extensions/IERC721Metadata.sol";import "../../utils/Address.sol";import "../../utils/Context.sol";import "../../utils/Strings.sol";import "../../utils/introspection/ERC165.sol";/*** @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including* the Metadata extension, but not including the Enumerable extension, which is available separately as* {ERC721Enumerable}.*/contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {using Address for address;using Strings for uint256;// Token namestring private _name;// Token symbol
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.sol";/*** @dev Required interface of an ERC721 compliant contract.*/interface IERC721 is IERC165 {/*** @dev Emitted when `tokenId` token is transferred from `from` to `to`.*/event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.*/event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.*/event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.0;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.** The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.0;import "../IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Metadata is IERC721 {/*** @dev Returns the token collection name.*/function name() external view returns (string memory);/*** @dev Returns the token collection symbol.*/function symbol() external view returns (string memory);/*** @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.*/function tokenURI(uint256 tokenId) external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)pragma solidity ^0.8.0;/*** @dev String operations.*/library Strings {bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {// Inspired by OraclizeAPI's implementation - MIT licence// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.solif (value == 0) {return "0";}uint256 temp = value;uint256 digits;while (temp != 0) {digits++;temp /= 10;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (utils/cryptography/MerkleProof.sol)pragma solidity ^0.8.0;/*** @dev These functions deal with verification of Merkle Trees proofs.** The proofs can be generated using the JavaScript library* https://github.com/miguelmota/merkletreejs[merkletreejs].* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.** See `test/utils/cryptography/MerkleProof.test.js` for some examples.** WARNING: You should avoid using leaf values that are 64 bytes long prior to* hashing, or use a hash function other than keccak256 for hashing leaves.* This is because the concatenation of a sorted pair of internal nodes in* the merkle tree could be reinterpreted as a leaf value.*/library MerkleProof {/*** @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree* defined by `root`. For this, a `proof` must be provided, containing* sibling hashes on the branch from the leaf to the root of the tree. Each* pair of leaves and each pair of pre-images are assumed to be sorted.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)pragma solidity ^0.8.0;import "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check* for the additional interface id that will be supported. For example:** ```solidity* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);* }* ```** Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.*/abstract contract ERC165 is IERC165 {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165Storage.sol)pragma solidity ^0.8.0;import "./ERC165.sol";/*** @dev Storage based implementation of the {IERC165} interface.** Contracts may inherit from this and call {_registerInterface} to declare* their support of an interface.*/abstract contract ERC165Storage is ERC165 {/*** @dev Mapping of interface ids to whether or not it's supported.*/mapping(bytes4 => bool) private _supportedInterfaces;/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {return super.supportsInterface(interfaceId) || _supportedInterfaces[interfaceId];}
12345678910111213141516171819202122232425// 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);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)pragma solidity ^0.8.0;// CAUTION// This version of SafeMath should only be used with Solidity 0.8 or later,// because it relies on the compiler's built in overflow checks./*** @dev Wrappers over Solidity's arithmetic operations.** NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler* now has built in overflow checking.*/library SafeMath {/*** @dev Returns the addition of two unsigned integers, with an overflow flag.** _Available since v3.4._*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {uint256 c = a + b;if (c < a) return (false, 0);return (true, c);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/structs/BitMaps.sol)pragma solidity ^0.8.0;/*** @dev Library for managing uint256 to bool mapping in a compact and efficient way, providing the keys are sequential.* Largelly inspired by Uniswap's https://github.com/Uniswap/merkle-distributor/blob/master/contracts/MerkleDistributor.sol[merkle-distributor].*/library BitMaps {struct BitMap {mapping(uint256 => uint256) _data;}/*** @dev Returns whether the bit at `index` is set.*/function get(BitMap storage bitmap, uint256 index) internal view returns (bool) {uint256 bucket = index >> 8;uint256 mask = 1 << (index & 0xff);return bitmap._data[bucket] & mask != 0;}/*** @dev Sets the bit at `index` to the boolean `value`.*/function setTo(
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (utils/structs/EnumerableSet.sol)pragma solidity ^0.8.0;/*** @dev Library for managing* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive* types.** Sets have the following properties:** - Elements are added, removed, and checked for existence in constant time* (O(1)).* - Elements are enumerated in O(n). No guarantees are made on the ordering.** ```* contract Example {* // Add the library methods* using EnumerableSet for EnumerableSet.AddressSet;** // Declare a set state variable* EnumerableSet.AddressSet private mySet;* }* ```*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721CollectionMetadataExtension.sol";interface IERC721AutoIdMinterExtension {function setMaxSupply(uint256 newValue) external;function freezeMaxSupply() external;function totalSupply() external view returns (uint256);}/*** @dev Extension to add minting capability with an auto incremented ID for each token and a maximum supply setting.*/abstract contract ERC721AutoIdMinterExtension isIERC721AutoIdMinterExtension,Initializable,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";interface IERC721CollectionMetadataExtension {function setContractURI(string memory newValue) external;function contractURI() external view returns (string memory);}/*** @dev Extension to allow configuring contract-level collection metadata URI.*/abstract contract ERC721CollectionMetadataExtension isIERC721CollectionMetadataExtension,Initializable,Ownable,ERC165Storage,IERC721Metadata{
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "../../../misc/opensea/ProxyRegistry.sol";interface IERC721OpenSeaNoGasExtension {function setOpenSeaProxyRegistryAddress(address addr) external;function setOpenSeaExchangeAddress(address addr) external;function isApprovedForAll(address owner, address operator)externalviewreturns (bool);}/*** @dev Extension that automatically approves OpenSea to avoid having users to "Approve" your collection before trading.*/abstract contract ERC721OpenSeaNoGasExtension is
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721AutoIdMinterExtension.sol";interface IERC721OwnerMintExtension {function mintByOwner(address to, uint256 count) external;}/*** @dev Extension to allow owner to mint directly without paying.*/abstract contract ERC721OwnerMintExtension isIERC721OwnerMintExtension,Initializable,Ownable,ERC165Storage,ERC721AutoIdMinterExtension{function __ERC721OwnerMintExtension_init() internal onlyInitializing {__ERC721OwnerMintExtension_init_unchained();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721AutoIdMinterExtension.sol";interface IERC721PreSaleExtension {function setPreSalePrice(uint256 newValue) external;function setPreSaleMaxMintPerWallet(uint256 newValue) external;function setAllowlistMerkleRoot(bytes32 newRoot) external;function togglePreSaleStatus(bool isActive) external;function onPreSaleAllowList(address minter, bytes32[] calldata proof)externalviewreturns (bool);function mintPreSale(uint256 count, bytes32[] calldata proof)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/utils/Strings.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721CollectionMetadataExtension.sol";interface IERC721PrefixedMetadataExtension {function setPlaceholderURI(string memory newValue) external;function setTokenURIPrefix(string memory newValue) external;function setTokenURISuffix(string memory newValue) external;function placeholderURI() external view returns (string memory);function tokenURIPrefix() external view returns (string memory);function tokenURISuffix() external view returns (string memory);function tokenURI(uint256 _tokenId) external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721AutoIdMinterExtension.sol";interface IERC721PublicSaleExtension {function setPublicSalePrice(uint256 newValue) external;function setPublicSaleMaxMintPerTx(uint256 newValue) external;function togglePublicSaleStatus(bool isActive) external;function mintPublicSale(address to, uint256 count) external payable;}/*** @dev Extension to provide pre-sale and public-sale capabilities for collectors to mint for a specific price.*/abstract contract ERC721PublicSaleExtension isInitializable,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/access/AccessControl.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721AutoIdMinterExtension.sol";interface IERC721RoleBasedMintExtension {function mintByRole(address to, uint256 count) external;}/*** @dev Extension to allow holders of a OpenZepplin-based role to mint directly.*/abstract contract ERC721RoleBasedMintExtension isIERC721RoleBasedMintExtension,ERC165Storage,ERC721AutoIdMinterExtension,AccessControl{bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");function __ERC721RoleBasedMintExtension_init(address minter)internal
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@manifoldxyz/royalty-registry-solidity/contracts/overrides/IRoyaltyOverride.sol";import "@manifoldxyz/royalty-registry-solidity/contracts/overrides/RoyaltyOverrideCore.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "../../../misc/rarible/IRoyalties.sol";import "../../../misc/rarible/LibPart.sol";import "../../../misc/rarible/LibRoyaltiesV2.sol";interface IERC721RoyaltyExtension {function setTokenRoyalties(IEIP2981RoyaltyOverride.TokenRoyaltyConfig[] calldata royaltyConfigs) external;function setDefaultRoyalty(IEIP2981RoyaltyOverride.TokenRoyalty calldata royalty) external;function getRaribleV2Royalties(uint256 id)externalview
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";interface IERC721SimpleProceedsExtension {function setProceedsRecipient(address _proceedsRecipient) external;function lockProceedsRecipient() external;function withdraw() external;}/*** @dev Extension to allow contract owner to withdraw all the funds directly.*/abstract contract ERC721SimpleProceedsExtension isInitializable,IERC721SimpleProceedsExtension,Ownable,ERC165Storage{address public proceedsRecipient;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "@openzeppelin/contracts/token/ERC721/IERC721.sol";import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";import {IERC721CollectionMetadataExtension} from "../../ERC721/extensions/ERC721CollectionMetadataExtension.sol";/*** @dev Extension to allow configuring contract-level collection metadata URI.*/abstract contract ERC721ACollectionMetadataExtension isIERC721CollectionMetadataExtension,Initializable,Ownable,ERC165Storage{string private _name;string private _symbol;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity ^0.8.9;import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "@openzeppelin/contracts/utils/structs/BitMaps.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "./ERC721AMinterExtension.sol";interface IERC721ALockableExtension {function locked(uint256 tokenId) external view returns (bool);function lock(uint256 tokenId) external;function lock(uint256[] calldata tokenIds) external;function unlock(uint256 tokenId) external;function unlock(uint256[] calldata tokenIds) external;}/*** @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/token/ERC721/IERC721.sol";import "@openzeppelin/contracts/utils/math/SafeMath.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "erc721a/contracts/ERC721A.sol";import {IERC721AutoIdMinterExtension} from "../../ERC721/extensions/ERC721AutoIdMinterExtension.sol";/*** @dev Extension to add minting capability with an auto incremented ID for each token and a maximum supply setting.*/abstract contract ERC721AMinterExtension isInitializable,Ownable,ERC165Storage,ERC721A{using SafeMath for uint256;uint256 public maxSupply;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "erc721a/contracts/ERC721A.sol";import "../../../misc/opensea/ProxyRegistry.sol";import {IERC721OpenSeaNoGasExtension} from "../../ERC721/extensions/ERC721OpenSeaNoGasExtension.sol";/*** @dev Extension that automatically approves OpenSea to avoid having users to "Approve" your collection before trading.*/abstract contract ERC721AOpenSeaNoGasExtension isIERC721OpenSeaNoGasExtension,Initializable,Ownable,ERC165Storage,ERC721A{address internal _openSeaProxyRegistryAddress;address private _openSeaExchangeAddress;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721AMinterExtension.sol";import {IERC721OwnerMintExtension} from "../../ERC721/extensions/ERC721OwnerMintExtension.sol";/*** @dev Extension to allow owner to mint directly without paying.*/abstract contract ERC721AOwnerMintExtension isIERC721OwnerMintExtension,Initializable,Ownable,ERC165Storage,ERC721AMinterExtension{function __ERC721AOwnerMintExtension_init() internal onlyInitializing {__ERC721AOwnerMintExtension_init_unchained();}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "erc721a/contracts/ERC721A.sol";import "./ERC721AMinterExtension.sol";import {IERC721PreSaleExtension} from "../../ERC721/extensions/ERC721PreSaleExtension.sol";/*** @dev Extension to provide pre-sale capabilities for certain collectors to mint for a specific price.*/abstract contract ERC721APreSaleExtension isIERC721PreSaleExtension,Initializable,ERC165Storage,ERC721AMinterExtension,ReentrancyGuard{uint256 public preSalePrice;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/Strings.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "erc721a/contracts/ERC721A.sol";import {IERC721PrefixedMetadataExtension} from "../../ERC721/extensions/ERC721PrefixedMetadataExtension.sol";/*** @dev Extension to allow configuring tokens metadata URI.* In this extension tokens will have a shared token URI prefix,* therefore on tokenURI() token's ID will be appended to the base URI.* It also allows configuring a fallback "placeholder" URI when prefix is not set yet.*/abstract contract ERC721APrefixedMetadataExtension isIERC721PrefixedMetadataExtension,Initializable,Ownable,ERC165Storage,ERC721A
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721AMinterExtension.sol";import {IERC721PublicSaleExtension} from "../../ERC721/extensions/ERC721PublicSaleExtension.sol";/*** @dev Extension to provide pre-sale and public-sale capabilities for collectors to mint for a specific price.*/abstract contract ERC721APublicSaleExtension isIERC721PublicSaleExtension,Initializable,Ownable,ERC165Storage,ERC721AMinterExtension,ReentrancyGuard{uint256 public publicSalePrice;uint256 public publicSaleMaxMintPerTx;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity ^0.8.9;import "@openzeppelin/contracts/access/AccessControl.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "@openzeppelin/contracts/utils/structs/BitMaps.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import "./ERC721ALockableExtension.sol";interface IERC721ARoleBasedLockableExtension {function hasRoleBasedLockableExtension() external view returns (bool);}/*** @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet, using roles.*/abstract contract ERC721ARoleBasedLockableExtension isIERC721ARoleBasedLockableExtension,ERC721ALockableExtension,AccessControl{using BitMaps for BitMaps.BitMap;bytes32 public constant LOCKER_ROLE = keccak256("LOCKER_ROLE");
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0pragma solidity 0.8.9;import "@openzeppelin/contracts/access/AccessControl.sol";import "@openzeppelin/contracts/utils/introspection/ERC165Storage.sol";import "./ERC721AMinterExtension.sol";import {IERC721RoleBasedMintExtension} from "../../ERC721/extensions/ERC721RoleBasedMintExtension.sol";/*** @dev Extension to allow holders of a OpenZepplin-based role to mint directly.*/abstract contract ERC721ARoleBasedMintExtension isIERC721RoleBasedMintExtension,ERC165Storage,ERC721AMinterExtension,AccessControl{bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");function __ERC721ARoleBasedMintExtension_init(address minter)internalonlyInitializing{
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.9;import "@openzeppelin/contracts/utils/Context.sol";import "@openzeppelin/contracts/proxy/utils/Initializable.sol";import "@openzeppelin/contracts/access/Ownable.sol";/*** @dev Context variant with ERC2771 support.*/abstract contract ERC2771ContextOwnable is Initializable, Context, Ownable {address public _trustedForwarder;function __ERC2771ContextOwnable_init(address trustedForwarder)internalonlyInitializing{__ERC2771ContextOwnable_init_unchained(trustedForwarder);}function __ERC2771ContextOwnable_init_unchained(address trustedForwarder)internalonlyInitializing{_trustedForwarder = trustedForwarder;
123456789// SPDX-License-Identifier: MITpragma solidity 0.8.9;contract OwnableDelegateProxy {}contract ProxyRegistry {mapping(address => OwnableDelegateProxy) public proxies;}
12345678910111213// SPDX-License-Identifier: MITpragma solidity 0.8.9;pragma abicoder v2;import "./LibPart.sol";interface IRoyalties {function getRaribleV2Royalties(uint256 id)externalviewreturns (LibPart.Part[] memory);}
1234567891011121314151617// SPDX-License-Identifier: MITpragma solidity 0.8.9;library LibPart {bytes32 public constant TYPE_HASH =keccak256("Part(address account,uint96 value)");struct Part {address payable account;uint96 value;}function hash(Part memory part) internal pure returns (bytes32) {return keccak256(abi.encode(TYPE_HASH, part.account, part.value));}}
12345678910// SPDX-License-Identifier: MITpragma solidity 0.8.9;library LibRoyaltiesV2 {/** bytes4(keccak256('getRaribleV2Royalties(uint256)')) == 0xcad96cca*/bytes4 constant _INTERFACE_ID_ROYALTIES = 0xcad96cca;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.1.0// Creator: Chiru Labspragma solidity ^0.8.4;import './IERC721A.sol';/*** @dev ERC721 token receiver interface.*/interface ERC721A__IERC721Receiver {function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);}/*** @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard,* including the Metadata extension. Built to optimize for lower gas during batch mints.** Assumes serials are sequentially minted starting at `_startTokenId()`* (defaults to 0, e.g. 0, 1, 2, 3..).
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.1.0// Creator: Chiru Labspragma solidity ^0.8.4;/*** @dev Interface of an ERC721A compliant contract.*/interface IERC721A {/*** The caller must own the token or be an approved operator.*/error ApprovalCallerNotOwnerNorApproved();/*** The token does not exist.*/error ApprovalQueryForNonexistentToken();/*** The caller cannot approve to their own address.*/error ApproveToCaller();/**
12345678910111213141516171819202122232425{"evmVersion": "london","libraries": {},"metadata": {"bytecodeHash": "ipfs","useLiteralContent": true},"optimizer": {"enabled": true,"runs": 5},"remappings": [],"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}}}
[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"openSeaProxyRegistryAddress","type":"address"},{"internalType":"address","name":"openSeaExchangeAddress","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"}],"internalType":"struct ERC721AFullFeaturedCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","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"},{"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":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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","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":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"},{"internalType":"uint256","name":"_preSalePrice","type":"uint256"},{"internalType":"uint256","name":"_preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"_preSaleAlreadyClaimed","type":"uint256"},{"internalType":"bool","name":"_preSaleActive","type":"bool"},{"internalType":"uint256","name":"_publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"_publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"bool","name":"_publicSaleActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"openSeaProxyRegistryAddress","type":"address"},{"internalType":"address","name":"openSeaExchangeAddress","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"}],"internalType":"struct ERC721AFullFeaturedCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","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":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockProceedsRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proceedsRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proceedsRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setOpenSeaExchangeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setOpenSeaProxyRegistryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proceedsRecipient","type":"address"}],"name":"setProceedsRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","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":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
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.