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 25 from a total of 119 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 18368012 | 300 days ago | IN | 0 ETH | 0.0010525 | ||||
Mint | 18367671 | 300 days ago | IN | 0 ETH | 0.00105774 | ||||
Mint | 18354157 | 302 days ago | IN | 0 ETH | 0.0010065 | ||||
Mint | 18352687 | 302 days ago | IN | 0 ETH | 0.00108171 | ||||
Mint | 18352499 | 302 days ago | IN | 0 ETH | 0.00099673 | ||||
Mint | 18352485 | 302 days ago | IN | 0 ETH | 0.00096782 | ||||
Mint | 18352437 | 302 days ago | IN | 0 ETH | 0.00100676 | ||||
Mint | 18352347 | 302 days ago | IN | 0 ETH | 0.00106868 | ||||
Mint | 18352288 | 302 days ago | IN | 0 ETH | 0.00103994 | ||||
Mint | 18352067 | 302 days ago | IN | 0 ETH | 0.00094512 | ||||
Mint | 18352045 | 302 days ago | IN | 0 ETH | 0.00105585 | ||||
Mint | 18351616 | 302 days ago | IN | 0 ETH | 0.00091081 | ||||
Mint | 18351566 | 302 days ago | IN | 0 ETH | 0.00095811 | ||||
Mint | 18350967 | 302 days ago | IN | 0 ETH | 0.00107396 | ||||
Mint | 18350927 | 302 days ago | IN | 0 ETH | 0.00125641 | ||||
Mint | 18350832 | 302 days ago | IN | 0 ETH | 0.00098038 | ||||
Mint | 18350821 | 302 days ago | IN | 0 ETH | 0.00096528 | ||||
Mint | 18350502 | 302 days ago | IN | 0 ETH | 0.00099139 | ||||
Mint | 18350279 | 302 days ago | IN | 0 ETH | 0.00096913 | ||||
Mint | 18350244 | 302 days ago | IN | 0 ETH | 0.00101408 | ||||
Mint | 18349960 | 302 days ago | IN | 0 ETH | 0.00128846 | ||||
Mint | 18349958 | 302 days ago | IN | 0 ETH | 0.00119247 | ||||
Mint | 18349928 | 302 days ago | IN | 0 ETH | 0.0013058 | ||||
Mint | 18349921 | 302 days ago | IN | 0 ETH | 0.00134486 | ||||
Mint | 18349873 | 302 days ago | IN | 0 ETH | 0.00116018 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
FreeMint
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; import "https://github.com/ProjectOpenSea/opensea-creatures/blob/165d4fe6a90532a7a913b76ef33bfbfc9624c878/contracts/IFactoryERC721.sol"; interface IFactoryERC721 is FactoryERC721 { function transferOwnership(address newOwner) external; } contract FreeMint { uint256 MAX_SUPPLY = 3146; uint256 NUM_OPTIONS = 2; uint256 SINGLE_OPTION = 0; uint256 MULTIPLE_OPTION = 1; uint256 MULTIPLE_OPTION_SUPPLY = 5; address ADMIN = 0x078adfbA8Ed90eD0E6778ddc7951AA362E438c2C; IFactoryERC721 constant public bdi = IFactoryERC721(0xf5D610A5c1D02c6b3e9F9a7f758265a38f537D72); IERC721Enumerable constant public bdp = IERC721Enumerable(0xe41161b8692A2f8aeDa6B85d5b92eC6f5724cEd7); function canMint(uint256 _optionId) public view returns (bool) { if (_optionId >= NUM_OPTIONS) { return false; } uint256 totalSupply = bdp.totalSupply(); uint256 numItemsAllocated = 0; if (_optionId == SINGLE_OPTION) { numItemsAllocated = 1; } else if (_optionId == MULTIPLE_OPTION) { numItemsAllocated = MULTIPLE_OPTION_SUPPLY; } return totalSupply <= (MAX_SUPPLY - numItemsAllocated); } function mint(uint256 _optionId) public { require(canMint(_optionId)); bdi.mint(_optionId, msg.sender); } function transferOwnership(address newOwner) public onlyOwner() { bdi.transferOwnership(newOwner); } modifier onlyOwner() { require(ADMIN == msg.sender); _; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * This is a generic factory contract that can be used to mint tokens. The configuration * for minting is specified by an _optionId, which can be used to delineate various * ways of minting. */ interface FactoryERC721 { /** * Returns the name of this factory. */ function name() external view returns (string memory); /** * Returns the symbol for this factory. */ function symbol() external view returns (string memory); /** * Number of options the factory supports. */ function numOptions() external view returns (uint256); /** * @dev Returns whether the option ID can be minted. Can return false if the developer wishes to * restrict a total supply per option ID (or overall). */ function canMint(uint256 _optionId) external view returns (bool); /** * @dev Returns a URL specifying some metadata about the option. This metadata can be of the * same structure as the ERC721 metadata. */ function tokenURI(uint256 _optionId) external view returns (string memory); /** * Indicates that this is a factory contract. Ideally would use EIP 165 supportsInterface() */ function supportsFactoryInterface() external view returns (bool); /** * @dev Mints asset(s) in accordance to a specific address with a particular "option". This should be * callable only by the contract owner or the owner's Wyvern Proxy (later universal login will solve this). * Options should also be delineated 0 - (numOptions() - 1) for convenient indexing. * @param _optionId the option id * @param _toAddress address of the future owner of the asset(s) */ function mint(uint256 _optionId, address _toAddress) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.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); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// 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); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"bdi","outputs":[{"internalType":"contract IFactoryERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bdp","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_optionId","type":"uint256"}],"name":"canMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_optionId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052610c4a600055600260015560006002556001600355600560045573078adfba8ed90ed0e6778ddc7951aa362e438c2c600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561007f57600080fd5b506106988061008f6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80635dd871a31461005c57806382e8b2a01461008c57806384e387ae146100aa578063a0712d68146100c8578063f2fde38b146100e4575b600080fd5b610076600480360381019061007191906103b7565b610100565b60405161008391906103ff565b60405180910390f35b6100946101da565b6040516100a19190610499565b60405180910390f35b6100b26101f2565b6040516100bf91906104d5565b60405180910390f35b6100e260048036038101906100dd91906103b7565b61020a565b005b6100fe60048036038101906100f9919061052e565b6102a0565b005b6000600154821061011457600090506101d5565b600073e41161b8692a2f8aeda6b85d5b92ec6f5724ced773ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101999190610570565b9050600060025484036101af57600190506101bf565b60035484036101be5760045490505b5b806000546101cd91906105cc565b821115925050505b919050565b73e41161b8692a2f8aeda6b85d5b92ec6f5724ced781565b73f5d610a5c1d02c6b3e9f9a7f758265a38f537d7281565b61021381610100565b61021c57600080fd5b73f5d610a5c1d02c6b3e9f9a7f758265a38f537d7273ffffffffffffffffffffffffffffffffffffffff166394bf804d82336040518363ffffffff1660e01b815260040161026b92919061061e565b600060405180830381600087803b15801561028557600080fd5b505af1158015610299573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102fa57600080fd5b73f5d610a5c1d02c6b3e9f9a7f758265a38f537d7273ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016103479190610647565b600060405180830381600087803b15801561036157600080fd5b505af1158015610375573d6000803e3d6000fd5b5050505050565b600080fd5b6000819050919050565b61039481610381565b811461039f57600080fd5b50565b6000813590506103b18161038b565b92915050565b6000602082840312156103cd576103cc61037c565b5b60006103db848285016103a2565b91505092915050565b60008115159050919050565b6103f9816103e4565b82525050565b600060208201905061041460008301846103f0565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061045f61045a6104558461041a565b61043a565b61041a565b9050919050565b600061047182610444565b9050919050565b600061048382610466565b9050919050565b61049381610478565b82525050565b60006020820190506104ae600083018461048a565b92915050565b60006104bf82610466565b9050919050565b6104cf816104b4565b82525050565b60006020820190506104ea60008301846104c6565b92915050565b60006104fb8261041a565b9050919050565b61050b816104f0565b811461051657600080fd5b50565b60008135905061052881610502565b92915050565b6000602082840312156105445761054361037c565b5b600061055284828501610519565b91505092915050565b60008151905061056a8161038b565b92915050565b6000602082840312156105865761058561037c565b5b60006105948482850161055b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006105d782610381565b91506105e283610381565b92508282039050818111156105fa576105f961059d565b5b92915050565b61060981610381565b82525050565b610618816104f0565b82525050565b60006040820190506106336000830185610600565b610640602083018461060f565b9392505050565b600060208201905061065c600083018461060f565b9291505056fea2646970667358221220f1048ce118c2007688148836762505a7f592cb594c2e56adb5e40b548e7eff6e64736f6c63430008100033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100575760003560e01c80635dd871a31461005c57806382e8b2a01461008c57806384e387ae146100aa578063a0712d68146100c8578063f2fde38b146100e4575b600080fd5b610076600480360381019061007191906103b7565b610100565b60405161008391906103ff565b60405180910390f35b6100946101da565b6040516100a19190610499565b60405180910390f35b6100b26101f2565b6040516100bf91906104d5565b60405180910390f35b6100e260048036038101906100dd91906103b7565b61020a565b005b6100fe60048036038101906100f9919061052e565b6102a0565b005b6000600154821061011457600090506101d5565b600073e41161b8692a2f8aeda6b85d5b92ec6f5724ced773ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101999190610570565b9050600060025484036101af57600190506101bf565b60035484036101be5760045490505b5b806000546101cd91906105cc565b821115925050505b919050565b73e41161b8692a2f8aeda6b85d5b92ec6f5724ced781565b73f5d610a5c1d02c6b3e9f9a7f758265a38f537d7281565b61021381610100565b61021c57600080fd5b73f5d610a5c1d02c6b3e9f9a7f758265a38f537d7273ffffffffffffffffffffffffffffffffffffffff166394bf804d82336040518363ffffffff1660e01b815260040161026b92919061061e565b600060405180830381600087803b15801561028557600080fd5b505af1158015610299573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102fa57600080fd5b73f5d610a5c1d02c6b3e9f9a7f758265a38f537d7273ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016103479190610647565b600060405180830381600087803b15801561036157600080fd5b505af1158015610375573d6000803e3d6000fd5b5050505050565b600080fd5b6000819050919050565b61039481610381565b811461039f57600080fd5b50565b6000813590506103b18161038b565b92915050565b6000602082840312156103cd576103cc61037c565b5b60006103db848285016103a2565b91505092915050565b60008115159050919050565b6103f9816103e4565b82525050565b600060208201905061041460008301846103f0565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061045f61045a6104558461041a565b61043a565b61041a565b9050919050565b600061047182610444565b9050919050565b600061048382610466565b9050919050565b61049381610478565b82525050565b60006020820190506104ae600083018461048a565b92915050565b60006104bf82610466565b9050919050565b6104cf816104b4565b82525050565b60006020820190506104ea60008301846104c6565b92915050565b60006104fb8261041a565b9050919050565b61050b816104f0565b811461051657600080fd5b50565b60008135905061052881610502565b92915050565b6000602082840312156105445761054361037c565b5b600061055284828501610519565b91505092915050565b60008151905061056a8161038b565b92915050565b6000602082840312156105865761058561037c565b5b60006105948482850161055b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006105d782610381565b91506105e283610381565b92508282039050818111156105fa576105f961059d565b5b92915050565b61060981610381565b82525050565b610618816104f0565b82525050565b60006040820190506106336000830185610600565b610640602083018461060f565b9392505050565b600060208201905061065c600083018461060f565b9291505056fea2646970667358221220f1048ce118c2007688148836762505a7f592cb594c2e56adb5e40b548e7eff6e64736f6c63430008100033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.