Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 15 from a total of 15 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint Token | 16207665 | 709 days ago | IN | 0 ETH | 0.00261834 | ||||
Mint Token | 16205415 | 710 days ago | IN | 0 ETH | 0.0026568 | ||||
Mint Token | 16205343 | 710 days ago | IN | 0 ETH | 0.0025368 | ||||
Mint Token | 16202103 | 710 days ago | IN | 0 ETH | 0.00295365 | ||||
Mint Token | 16201985 | 710 days ago | IN | 0 ETH | 0.00257252 | ||||
Mint Token | 16201519 | 710 days ago | IN | 0 ETH | 0.0035502 | ||||
Mint Token | 16179023 | 713 days ago | IN | 0 ETH | 0.00327486 | ||||
Mint Token | 16169257 | 715 days ago | IN | 0 ETH | 0.00454252 | ||||
Mint Token | 16168891 | 715 days ago | IN | 0 ETH | 0.00291937 | ||||
Mint Token | 16156501 | 716 days ago | IN | 0 ETH | 0.00331366 | ||||
Mint Token | 16148054 | 718 days ago | IN | 0 ETH | 0.00619093 | ||||
Mint Token | 16131819 | 720 days ago | IN | 0 ETH | 0.00337065 | ||||
Mint Token | 16080245 | 727 days ago | IN | 0 ETH | 0.00227852 | ||||
Mint Token | 16048228 | 732 days ago | IN | 0 ETH | 0.00230876 | ||||
0x60806040 | 15148428 | 865 days ago | IN | 0 ETH | 0.01023627 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ERC721FrozenMetadata
Compiler Version
v0.8.14+commit.80d49f37
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "@manifoldxyz/libraries-solidity/contracts/access/IAdminControl.sol"; import "@manifoldxyz/creator-core-solidity/contracts/core/IERC721CreatorCore.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import "./IERC721FrozenMetadata.sol"; /** * Manifold ERC721 Frozen Metadata Implementation */ contract ERC721FrozenMetadata is IERC165, IERC721FrozenMetadata, ReentrancyGuard { /** * @dev Only allows approved admins to call the specified function */ modifier creatorAdminRequired(address creator) { require(IAdminControl(creator).isAdmin(msg.sender), "Must be owner or admin of creator contract"); _; } function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165) returns (bool) { return interfaceId == type(IERC721FrozenMetadata).interfaceId; } /** * @dev See {IManifoldERC721Edition-mint}. */ function mintToken(address creator, address recipient, string calldata tokenURI) external override nonReentrant creatorAdminRequired(creator) returns(uint256) { require(bytes(tokenURI).length > 0, "Cannot mint blank string"); return IERC721CreatorCore(creator).mintExtension(recipient, tokenURI); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz /** * Manifold ERC721 Frozen Metadata interface */ interface IERC721FrozenMetadata { /** * @dev Mints a new token. Returns the tokenId */ function mintToken(address creator, address recipient, string calldata tokenURI) external returns(uint256); }
// 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: 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 // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "./ICreatorCore.sol"; /** * @dev Core ERC721 creator interface */ interface IERC721CreatorCore is ICreatorCore { /** * @dev mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBase(address to) external returns (uint256); /** * @dev mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBase(address to, string calldata uri) external returns (uint256); /** * @dev batch mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBaseBatch(address to, uint16 count) external returns (uint256[] memory); /** * @dev batch mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBaseBatch(address to, string[] calldata uris) external returns (uint256[] memory); /** * @dev mint a token. Can only be called by a registered extension. * Returns tokenId minted */ function mintExtension(address to) external returns (uint256); /** * @dev mint a token. Can only be called by a registered extension. * Returns tokenId minted */ function mintExtension(address to, string calldata uri) external returns (uint256); /** * @dev batch mint a token. Can only be called by a registered extension. * Returns tokenIds minted */ function mintExtensionBatch(address to, uint16 count) external returns (uint256[] memory); /** * @dev batch mint a token. Can only be called by a registered extension. * Returns tokenId minted */ function mintExtensionBatch(address to, string[] calldata uris) external returns (uint256[] memory); /** * @dev burn a token. Can only be called by token owner or approved address. * On burn, calls back to the registered extension's onBurn method */ function burn(uint256 tokenId) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; /** * @dev Interface for admin control */ interface IAdminControl is IERC165 { event AdminApproved(address indexed account, address indexed sender); event AdminRevoked(address indexed account, address indexed sender); /** * @dev gets address of all admins */ function getAdmins() external view returns (address[] memory); /** * @dev add an admin. Can only be called by contract owner. */ function approveAdmin(address admin) external; /** * @dev remove an admin. Can only be called by contract owner. */ function revokeAdmin(address admin) external; /** * @dev checks whether or not given address is an admin * Returns True if they are */ function isAdmin(address admin) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; /** * @dev Core creator interface */ interface ICreatorCore is IERC165 { event ExtensionRegistered(address indexed extension, address indexed sender); event ExtensionUnregistered(address indexed extension, address indexed sender); event ExtensionBlacklisted(address indexed extension, address indexed sender); event MintPermissionsUpdated(address indexed extension, address indexed permissions, address indexed sender); event RoyaltiesUpdated(uint256 indexed tokenId, address payable[] receivers, uint256[] basisPoints); event DefaultRoyaltiesUpdated(address payable[] receivers, uint256[] basisPoints); event ExtensionRoyaltiesUpdated(address indexed extension, address payable[] receivers, uint256[] basisPoints); event ExtensionApproveTransferUpdated(address indexed extension, bool enabled); /** * @dev gets address of all extensions */ function getExtensions() external view returns (address[] memory); /** * @dev add an extension. Can only be called by contract owner or admin. * extension address must point to a contract implementing ICreatorExtension. * Returns True if newly added, False if already added. */ function registerExtension(address extension, string calldata baseURI) external; /** * @dev add an extension. Can only be called by contract owner or admin. * extension address must point to a contract implementing ICreatorExtension. * Returns True if newly added, False if already added. */ function registerExtension(address extension, string calldata baseURI, bool baseURIIdentical) external; /** * @dev add an extension. Can only be called by contract owner or admin. * Returns True if removed, False if already removed. */ function unregisterExtension(address extension) external; /** * @dev blacklist an extension. Can only be called by contract owner or admin. * This function will destroy all ability to reference the metadata of any tokens created * by the specified extension. It will also unregister the extension if needed. * Returns True if removed, False if already removed. */ function blacklistExtension(address extension) external; /** * @dev set the baseTokenURI of an extension. Can only be called by extension. */ function setBaseTokenURIExtension(string calldata uri) external; /** * @dev set the baseTokenURI of an extension. Can only be called by extension. * For tokens with no uri configured, tokenURI will return "uri+tokenId" */ function setBaseTokenURIExtension(string calldata uri, bool identical) external; /** * @dev set the common prefix of an extension. Can only be called by extension. * If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI" * Useful if you want to use ipfs/arweave */ function setTokenURIPrefixExtension(string calldata prefix) external; /** * @dev set the tokenURI of a token extension. Can only be called by extension that minted token. */ function setTokenURIExtension(uint256 tokenId, string calldata uri) external; /** * @dev set the tokenURI of a token extension for multiple tokens. Can only be called by extension that minted token. */ function setTokenURIExtension(uint256[] memory tokenId, string[] calldata uri) external; /** * @dev set the baseTokenURI for tokens with no extension. Can only be called by owner/admin. * For tokens with no uri configured, tokenURI will return "uri+tokenId" */ function setBaseTokenURI(string calldata uri) external; /** * @dev set the common prefix for tokens with no extension. Can only be called by owner/admin. * If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI" * Useful if you want to use ipfs/arweave */ function setTokenURIPrefix(string calldata prefix) external; /** * @dev set the tokenURI of a token with no extension. Can only be called by owner/admin. */ function setTokenURI(uint256 tokenId, string calldata uri) external; /** * @dev set the tokenURI of multiple tokens with no extension. Can only be called by owner/admin. */ function setTokenURI(uint256[] memory tokenIds, string[] calldata uris) external; /** * @dev set a permissions contract for an extension. Used to control minting. */ function setMintPermissions(address extension, address permissions) external; /** * @dev Configure so transfers of tokens created by the caller (must be extension) gets approval * from the extension before transferring */ function setApproveTransferExtension(bool enabled) external; /** * @dev get the extension of a given token */ function tokenExtension(uint256 tokenId) external view returns (address); /** * @dev Set default royalties */ function setRoyalties(address payable[] calldata receivers, uint256[] calldata basisPoints) external; /** * @dev Set royalties of a token */ function setRoyalties(uint256 tokenId, address payable[] calldata receivers, uint256[] calldata basisPoints) external; /** * @dev Set royalties of an extension */ function setRoyaltiesExtension(address extension, address payable[] calldata receivers, uint256[] calldata basisPoints) external; /** * @dev Get royalites of a token. Returns list of receivers and basisPoints */ function getRoyalties(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory); // Royalty support for various other standards function getFeeRecipients(uint256 tokenId) external view returns (address payable[] memory); function getFeeBps(uint256 tokenId) external view returns (uint[] memory); function getFees(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory); function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256); }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"mintToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060016000556104d8806100256000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b5780633595bee3146100a5575b600080fd5b61009061004936600461031b565b7fffffffff00000000000000000000000000000000000000000000000000000000167f3595bee3000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6100b86100b336600461038d565b6100c6565b60405190815260200161009c565b600060026000540361011f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556040517f24d7806c000000000000000000000000000000000000000000000000000000008152336004820152859073ffffffffffffffffffffffffffffffffffffffff8216906324d7806c90602401602060405180830381865afa158015610190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b4919061041b565b6102265760405162461bcd60e51b815260206004820152602a60248201527f4d757374206265206f776e6572206f722061646d696e206f662063726561746f60448201527f7220636f6e7472616374000000000000000000000000000000000000000000006064820152608401610116565b826102735760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74206d696e7420626c616e6b20737472696e6700000000000000006044820152606401610116565b6040517ffe2e1f5800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063fe2e1f58906102c99088908890889060040161043d565b6020604051808303816000875af11580156102e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030c9190610489565b60016000559695505050505050565b60006020828403121561032d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035d57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461038857600080fd5b919050565b600080600080606085870312156103a357600080fd5b6103ac85610364565b93506103ba60208601610364565b9250604085013567ffffffffffffffff808211156103d757600080fd5b818701915087601f8301126103eb57600080fd5b8135818111156103fa57600080fd5b88602082850101111561040c57600080fd5b95989497505060200194505050565b60006020828403121561042d57600080fd5b8151801515811461035d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561049b57600080fd5b505191905056fea2646970667358221220635bc23ae2d863dd2b204562e18e72b0a3848da7e2ed81f32ceeec834e53bdcd64736f6c634300080e0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b5780633595bee3146100a5575b600080fd5b61009061004936600461031b565b7fffffffff00000000000000000000000000000000000000000000000000000000167f3595bee3000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6100b86100b336600461038d565b6100c6565b60405190815260200161009c565b600060026000540361011f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556040517f24d7806c000000000000000000000000000000000000000000000000000000008152336004820152859073ffffffffffffffffffffffffffffffffffffffff8216906324d7806c90602401602060405180830381865afa158015610190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b4919061041b565b6102265760405162461bcd60e51b815260206004820152602a60248201527f4d757374206265206f776e6572206f722061646d696e206f662063726561746f60448201527f7220636f6e7472616374000000000000000000000000000000000000000000006064820152608401610116565b826102735760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74206d696e7420626c616e6b20737472696e6700000000000000006044820152606401610116565b6040517ffe2e1f5800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063fe2e1f58906102c99088908890889060040161043d565b6020604051808303816000875af11580156102e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030c9190610489565b60016000559695505050505050565b60006020828403121561032d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035d57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461038857600080fd5b919050565b600080600080606085870312156103a357600080fd5b6103ac85610364565b93506103ba60208601610364565b9250604085013567ffffffffffffffff808211156103d757600080fd5b818701915087601f8301126103eb57600080fd5b8135818111156103fa57600080fd5b88602082850101111561040c57600080fd5b95989497505060200194505050565b60006020828403121561042d57600080fd5b8151801515811461035d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561049b57600080fd5b505191905056fea2646970667358221220635bc23ae2d863dd2b204562e18e72b0a3848da7e2ed81f32ceeec834e53bdcd64736f6c634300080e0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.