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 8,282 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Purchase | 19141658 | 357 days ago | IN | 0 ETH | 0.00761746 | ||||
Update Price Per... | 19141618 | 357 days ago | IN | 0 ETH | 0.00085259 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.00183582 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.00183582 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.00184315 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.00225089 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.00225089 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.00229973 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.00268576 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.0048832 | ||||
Purchase | 15833634 | 821 days ago | IN | 0.2 ETH | 0.0048832 | ||||
Purchase | 15833633 | 821 days ago | IN | 0.2 ETH | 0.0023631 | ||||
Purchase | 15833633 | 821 days ago | IN | 0.2 ETH | 0.00296435 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.0019334 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.0019334 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.0019334 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.0019334 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.0019334 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.0019334 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.0019334 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.01416768 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.01515877 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.01473386 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.01459259 | ||||
Purchase | 15833632 | 821 days ago | IN | 0.2 ETH | 0.01491992 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH | ||||
15833632 | 821 days ago | 0.027 ETH | ||||
15833632 | 821 days ago | 0.02 ETH | ||||
15833632 | 821 days ago | 0.153 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MinterSetPriceV1
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 100 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: LGPL-3.0-only // Created By: Art Blocks Inc. import "../interfaces/0.8.x/IGenArt721CoreContractV1.sol"; import "../interfaces/0.8.x/IMinterFilterV0.sol"; import "../interfaces/0.8.x/IFilteredMinterV0.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; pragma solidity 0.8.9; /** * @title Filtered Minter contract that allows tokens to be minted with ETH. * @author Art Blocks Inc. */ contract MinterSetPriceV1 is ReentrancyGuard, IFilteredMinterV0 { /// Core contract address this minter interacts with address public immutable genArt721CoreAddress; /// This contract handles cores with interface IV1 IGenArt721CoreContractV1 private immutable genArtCoreContract; /// Minter filter address this minter interacts with address public immutable minterFilterAddress; /// Minter filter this minter may interact with. IMinterFilterV0 private immutable minterFilter; /// minterType for this minter string public constant minterType = "MinterSetPriceV1"; uint256 constant ONE_MILLION = 1_000_000; /// projectId => has project reached its maximum number of invocations? mapping(uint256 => bool) public projectMaxHasBeenInvoked; /// projectId => project's maximum number of invocations mapping(uint256 => uint256) public projectMaxInvocations; /// projectId => price per token in wei - supersedes any defined core price mapping(uint256 => uint256) private projectIdToPricePerTokenInWei; /// projectId => price per token has been configured on this minter mapping(uint256 => bool) private projectIdToPriceIsConfigured; modifier onlyCoreWhitelisted() { require( genArtCoreContract.isWhitelisted(msg.sender), "Only Core whitelisted" ); _; } modifier onlyArtist(uint256 _projectId) { require( msg.sender == genArtCoreContract.projectIdToArtistAddress(_projectId), "Only Artist" ); _; } /** * @notice Initializes contract to be a Filtered Minter for * `_minterFilter`, integrated with Art Blocks core contract * at address `_genArt721Address`. * @param _genArt721Address Art Blocks core contract address for * which this contract will be a minter. * @param _minterFilter Minter filter for whichccthis will a * filtered minter. */ constructor(address _genArt721Address, address _minterFilter) ReentrancyGuard() { genArt721CoreAddress = _genArt721Address; genArtCoreContract = IGenArt721CoreContractV1(_genArt721Address); minterFilterAddress = _minterFilter; minterFilter = IMinterFilterV0(_minterFilter); require( minterFilter.genArt721CoreAddress() == _genArt721Address, "Illegal contract pairing" ); } /** * @notice Sets the maximum invocations of project `_projectId` based * on the value currently defined in the core contract. * @param _projectId Project ID to set the maximum invocations for. * @dev also checks and may refresh projectMaxHasBeenInvoked for project * @dev this enables gas reduction after maxInvocations have been reached - * core contracts shall still enforce a maxInvocation check during mint. */ function setProjectMaxInvocations(uint256 _projectId) external onlyCoreWhitelisted { uint256 invocations; uint256 maxInvocations; (, , invocations, maxInvocations, , , , , ) = genArtCoreContract .projectTokenInfo(_projectId); // update storage with results projectMaxInvocations[_projectId] = maxInvocations; if (invocations < maxInvocations) { projectMaxHasBeenInvoked[_projectId] = false; } } /** * @notice Warning: Disabling purchaseTo is not supported on this minter. * This method exists purely for interface-conformance purposes. */ function togglePurchaseToDisabled(uint256 _projectId) external view onlyArtist(_projectId) { revert("Action not supported"); } /** * @notice Updates this minter's price per token of project `_projectId` * to be '_pricePerTokenInWei`, in Wei. * This price supersedes any legacy core contract price per token value. */ function updatePricePerTokenInWei( uint256 _projectId, uint256 _pricePerTokenInWei ) external onlyArtist(_projectId) { projectIdToPricePerTokenInWei[_projectId] = _pricePerTokenInWei; projectIdToPriceIsConfigured[_projectId] = true; emit PricePerTokenInWeiUpdated(_projectId, _pricePerTokenInWei); } /** * @notice Purchases a token from project `_projectId`. * @param _projectId Project ID to mint a token on. * @return tokenId Token ID of minted token */ function purchase(uint256 _projectId) external payable returns (uint256 tokenId) { tokenId = purchaseTo(msg.sender, _projectId); return tokenId; } /** * @notice Purchases a token from project `_projectId` and sets * the token's owner to `_to`. * @param _to Address to be the new token's owner. * @param _projectId Project ID to mint a token on. * @return tokenId Token ID of minted token */ function purchaseTo(address _to, uint256 _projectId) public payable nonReentrant returns (uint256 tokenId) { // CHECKS require( !projectMaxHasBeenInvoked[_projectId], "Maximum number of invocations reached" ); // require artist to have configured price of token on this minter require( projectIdToPriceIsConfigured[_projectId], "Price not configured" ); require( msg.value >= projectIdToPricePerTokenInWei[_projectId], "Must send minimum value to mint!" ); // EFFECTS tokenId = minterFilter.mint(_to, _projectId, msg.sender); // what if projectMaxInvocations[_projectId] is 0 (default value)? // that is intended, so that by default the minter allows infinite transactions, // allowing the artblocks contract to stop minting // uint256 tokenInvocation = tokenId % ONE_MILLION; if ( projectMaxInvocations[_projectId] > 0 && tokenId % ONE_MILLION == projectMaxInvocations[_projectId] - 1 ) { projectMaxHasBeenInvoked[_projectId] = true; } // INTERACTIONS _splitFundsETH(_projectId); return tokenId; } /** * @dev splits ETH funds between sender (if refund), foundation, * artist, and artist's additional payee for a token purchased on * project `_projectId`. * @dev utilizes transfer() to send ETH, so access lists may need to be * populated when purchasing tokens. */ function _splitFundsETH(uint256 _projectId) internal { if (msg.value > 0) { uint256 pricePerTokenInWei = projectIdToPricePerTokenInWei[ _projectId ]; uint256 refund = msg.value - pricePerTokenInWei; if (refund > 0) { (bool success_, ) = msg.sender.call{value: refund}(""); require(success_, "Refund failed"); } uint256 foundationAmount = (pricePerTokenInWei * genArtCoreContract.artblocksPercentage()) / 100; if (foundationAmount > 0) { (bool success_, ) = genArtCoreContract.artblocksAddress().call{ value: foundationAmount }(""); require(success_, "Foundation payment failed"); } uint256 projectFunds = pricePerTokenInWei - foundationAmount; uint256 additionalPayeeAmount; if ( genArtCoreContract.projectIdToAdditionalPayeePercentage( _projectId ) > 0 ) { additionalPayeeAmount = (projectFunds * genArtCoreContract.projectIdToAdditionalPayeePercentage( _projectId )) / 100; if (additionalPayeeAmount > 0) { (bool success_, ) = genArtCoreContract .projectIdToAdditionalPayee(_projectId) .call{value: additionalPayeeAmount}(""); require(success_, "Additional payment failed"); } } uint256 creatorFunds = projectFunds - additionalPayeeAmount; if (creatorFunds > 0) { (bool success_, ) = genArtCoreContract .projectIdToArtistAddress(_projectId) .call{value: creatorFunds}(""); require(success_, "Artist payment failed"); } } } /** * @notice Gets if price of token is configured, price of minting a * token on project `_projectId`, and currency symbol and address to be * used as payment. Supersedes any core contract price information. * @param _projectId Project ID to get price information for. * @return isConfigured true only if token price has been configured on * this minter * @return tokenPriceInWei current price of token on this minter - invalid * if price has not yet been configured * @return currencySymbol currency symbol for purchases of project on this * minter. This minter always returns "ETH" * @return currencyAddress currency address for purchases of project on * this minter. This minter always returns null address, reserved for ether */ function getPriceInfo(uint256 _projectId) external view returns ( bool isConfigured, uint256 tokenPriceInWei, string memory currencySymbol, address currencyAddress ) { isConfigured = projectIdToPriceIsConfigured[_projectId]; tokenPriceInWei = projectIdToPricePerTokenInWei[_projectId]; currencySymbol = "ETH"; currencyAddress = address(0); } }
// SPDX-License-Identifier: LGPL-3.0-only // Created By: Art Blocks Inc. pragma solidity ^0.8.0; interface IGenArt721CoreContractV1 { event Mint( address indexed _to, uint256 indexed _tokenId, uint256 indexed _projectId ); // getter function of public variable function admin() external view returns (address); // getter function of public variable function nextProjectId() external view returns (uint256); // getter function of public mapping function tokenIdToProjectId(uint256 tokenId) external view returns (uint256 projectId); function isWhitelisted(address sender) external view returns (bool); // @dev this is not available in V0 function isMintWhitelisted(address minter) external view returns (bool); function projectIdToArtistAddress(uint256 _projectId) external view returns (address payable); function projectIdToAdditionalPayee(uint256 _projectId) external view returns (address payable); function projectIdToAdditionalPayeePercentage(uint256 _projectId) external view returns (uint256); function projectTokenInfo(uint256 _projectId) external view returns ( address, uint256, uint256, uint256, bool, address, uint256, string memory, address ); function artblocksAddress() external view returns (address payable); function artblocksPercentage() external view returns (uint256); function mint( address _to, uint256 _projectId, address _by ) external returns (uint256 tokenId); function getRoyaltyData(uint256 _tokenId) external view returns ( address artistAddress, address additionalPayee, uint256 additionalPayeePercentage, uint256 royaltyFeeByID ); }
// SPDX-License-Identifier: LGPL-3.0-only // Created By: Art Blocks Inc. pragma solidity ^0.8.0; interface IMinterFilterV0 { /** * @notice Approved minter `_minterAddress`. */ event MinterApproved(address indexed _minterAddress, string _minterType); /** * @notice Revoked approval for minter `_minterAddress` */ event MinterRevoked(address indexed _minterAddress); /** * @notice Minter `_minterAddress` of type `_minterType` * registered for project `_projectId`. */ event ProjectMinterRegistered( uint256 indexed _projectId, address indexed _minterAddress, string _minterType ); /** * @notice Any active minter removed for project `_projectId`. */ event ProjectMinterRemoved(uint256 indexed _projectId); function genArt721CoreAddress() external returns (address); function setMinterForProject(uint256, address) external; function removeMinterForProject(uint256) external; function mint( address _to, uint256 _projectId, address sender ) external returns (uint256); function getMinterForProject(uint256) external view returns (address); function projectHasMinter(uint256) external view returns (bool); }
// SPDX-License-Identifier: LGPL-3.0-only // Created By: Art Blocks Inc. pragma solidity ^0.8.0; interface IFilteredMinterV0 { /** * @notice Price per token in wei updated for project `_projectId` to * `_pricePerTokenInWei`. */ event PricePerTokenInWeiUpdated( uint256 indexed _projectId, uint256 indexed _pricePerTokenInWei ); /** * @notice Currency updated for project `_projectId` to symbol * `_currencySymbol` and address `_currencyAddress`. */ event ProjectCurrencyInfoUpdated( uint256 indexed _projectId, address indexed _currencyAddress, string _currencySymbol ); /// togglePurchaseToDisabled updated event PurchaseToDisabledUpdated( uint256 indexed _projectId, bool _purchaseToDisabled ); // getter function of public variable function minterType() external view returns (string memory); function genArt721CoreAddress() external returns (address); function minterFilterAddress() external returns (address); // Triggers a purchase of a token from the desired project, to the // TX-sending address. function purchase(uint256 _projectId) external payable returns (uint256 tokenId); // Triggers a purchase of a token from the desired project, to the specified // receiving address. function purchaseTo(address _to, uint256 _projectId) external payable returns (uint256 tokenId); // Toggles the ability for `purchaseTo` to be called directly with a // specified receiving address that differs from the TX-sending address. function togglePurchaseToDisabled(uint256 _projectId) external; // Called to make the minter contract aware of the max invocations for a // given project. function setProjectMaxInvocations(uint256 _projectId) external; // Gets if token price is configured, token price in wei, currency symbol, // and currency address, assuming this is project's minter. // Supersedes any defined core price. function getPriceInfo(uint256 _projectId) external view returns ( bool isConfigured, uint256 tokenPriceInWei, string memory currencySymbol, address currencyAddress ); }
// 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; } }
{ "optimizer": { "enabled": true, "runs": 100 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_genArt721Address","type":"address"},{"internalType":"address","name":"_minterFilter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_projectId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_pricePerTokenInWei","type":"uint256"}],"name":"PricePerTokenInWeiUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_projectId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"string","name":"_currencySymbol","type":"string"}],"name":"ProjectCurrencyInfoUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_projectId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_purchaseToDisabled","type":"bool"}],"name":"PurchaseToDisabledUpdated","type":"event"},{"inputs":[],"name":"genArt721CoreAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"getPriceInfo","outputs":[{"internalType":"bool","name":"isConfigured","type":"bool"},{"internalType":"uint256","name":"tokenPriceInWei","type":"uint256"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"address","name":"currencyAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minterFilterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minterType","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectMaxHasBeenInvoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectMaxInvocations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"purchase","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"purchaseTo","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"setProjectMaxInvocations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"togglePurchaseToDisabled","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"_pricePerTokenInWei","type":"uint256"}],"name":"updatePricePerTokenInWei","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b50604051620015e9380380620015e9833981016040819052620000359162000157565b600160009081556001600160a01b03808416608081905260a081905290831660c081905260e0819052604080516392a10f8360e01b81529051929391926392a10f8392600480840193602093929083900390910190829087803b1580156200009c57600080fd5b505af1158015620000b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d791906200018f565b6001600160a01b031614620001325760405162461bcd60e51b815260206004820152601860248201527f496c6c6567616c20636f6e74726163742070616972696e670000000000000000604482015260640160405180910390fd5b5050620001b4565b80516001600160a01b03811681146200015257600080fd5b919050565b600080604083850312156200016b57600080fd5b62000176836200013a565b915062000186602084016200013a565b90509250929050565b600060208284031215620001a257600080fd5b620001ad826200013a565b9392505050565b60805160a05160c05160e0516113bc6200022d60003960006106b20152600061023d0152600081816102f301528181610405015281816107d0015281816108b901528181610a3001528181610adf01528181610c1f01528181610cda01528181610d910152610ede015260006101f101526113bc6000f3fe60806040526004361061009c5760003560e01c8063891407c011610064578063891407c0146101cc57806392a10f83146101df578063dd85582f1461022b578063e9d1e8ac1461025f578063efef39a1146102a8578063f7bd4b88146102bb57600080fd5b806340d1397e146100a1578063462add46146100c357806356690aaf146101085780636cb9b7ff14610143578063774159c614610163575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004611004565b6102db565b005b3480156100cf57600080fd5b506100f36100de366004611004565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561011457600080fd5b50610135610123366004611004565b60026020526000908152604090205481565b6040519081526020016100ff565b34801561014f57600080fd5b506100c161015e36600461101d565b6103ed565b34801561016f57600080fd5b506101bc61017e366004611004565b60009081526004602090815260408083205460038084528285205483518085019094529083526208aa8960eb1b9383019390935260ff169391929091565b6040516100ff949392919061109b565b6101356101da3660046110ea565b61050c565b3480156101eb57600080fd5b506102137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ff565b34801561023757600080fd5b506102137f000000000000000000000000000000000000000000000000000000000000000081565b34801561026b57600080fd5b5061029b6040518060400160405280601081526020016f4d696e7465725365745072696365563160801b81525081565b6040516100ff9190611116565b6101356102b6366004611004565b6107a9565b3480156102c757600080fd5b506100c16102d6366004611004565b6107bb565b60405163a47d29cb60e01b81526004810182905281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a47d29cb9060240160206040518083038186803b15801561033d57600080fd5b505afa158015610351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103759190611130565b6001600160a01b0316336001600160a01b0316146103ae5760405162461bcd60e51b81526004016103a59061114d565b60405180910390fd5b60405162461bcd60e51b81526020600482015260146024820152731058dd1a5bdb881b9bdd081cdd5c1c1bdc9d195960621b60448201526064016103a5565b60405163a47d29cb60e01b81526004810183905282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a47d29cb9060240160206040518083038186803b15801561044f57600080fd5b505afa158015610463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104879190611130565b6001600160a01b0316336001600160a01b0316146104b75760405162461bcd60e51b81526004016103a59061114d565b60008381526003602090815260408083208590556004909152808220805460ff1916600117905551839185917f26118a27aca826f829f3bfe21b140b4455c00b434849bd0da50d1e1a9720fb5c9190a3505050565b6000600260005414156105615760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103a5565b600260009081558281526001602052604090205460ff16156105d35760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d206e756d626572206f6620696e766f636174696f6e732072656044820152641858da195960da1b60648201526084016103a5565b60008281526004602052604090205460ff166106285760405162461bcd60e51b8152602060048201526014602482015273141c9a58d9481b9bdd0818dbdb999a59dd5c995960621b60448201526064016103a5565b6000828152600360205260409020543410156106865760405162461bcd60e51b815260206004820181905260248201527f4d7573742073656e64206d696e696d756d2076616c756520746f206d696e742160448201526064016103a5565b604051630d4d151360e01b81526001600160a01b038481166004830152602482018490523360448301527f00000000000000000000000000000000000000000000000000000000000000001690630d4d151390606401602060405180830381600087803b1580156106f657600080fd5b505af115801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190611172565b600083815260026020526040902054909150158015906107735750600082815260026020526040902054610764906001906111a1565b610771620f4240836111ce565b145b15610795576000828152600160208190526040909120805460ff191690911790555b61079e82610978565b600160005592915050565b60006107b5338361050c565b92915050565b604051633af32abf60e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633af32abf9060240160206040518083038186803b15801561081a57600080fd5b505afa15801561082e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085291906111f7565b6108965760405162461bcd60e51b815260206004820152601560248201527413db9b1e4810dbdc99481dda1a5d195b1a5cdd1959605a1b60448201526064016103a5565b6040516346161b1160e11b81526004810182905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638c2c36229060240160006040518083038186803b1580156108fb57600080fd5b505afa15801561090f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109379190810190611233565b505050600089815260026020526040902083905550919550935050505080821015610973576000838152600160205260409020805460ff191690555b505050565b3415611001576000818152600360205260408120549061099882346111a1565b90508015610a2a57604051600090339083908381818185875af1925050503d80600081146109e2576040519150601f19603f3d011682016040523d82523d6000602084013e6109e7565b606091505b5050905080610a285760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016103a5565b505b600060647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634f029c396040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8757600080fd5b505afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611172565b610ac99085611353565b610ad39190611372565b90508015610c0c5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633949f9066040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190611130565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610bb8576040519150601f19603f3d011682016040523d82523d6000602084013e610bbd565b606091505b5050905080610c0a5760405162461bcd60e51b8152602060048201526019602482015278119bdd5b99185d1a5bdb881c185e5b595b9d0819985a5b1959603a1b60448201526064016103a5565b505b6000610c1882856111a1565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cc74234b886040518263ffffffff1660e01b8152600401610c6b91815260200190565b60206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190611172565b1115610eb15760405163cc74234b60e01b8152600481018790526064907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cc74234b9060240160206040518083038186803b158015610d2457600080fd5b505afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190611172565b610d669084611353565b610d709190611372565b90508015610eb157604051636bd8225b60e11b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d7b044b69060240160206040518083038186803b158015610ddb57600080fd5b505afa158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e139190611130565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e5d576040519150601f19603f3d011682016040523d82523d6000602084013e610e62565b606091505b5050905080610eaf5760405162461bcd60e51b81526020600482015260196024820152781059191a5d1a5bdb985b081c185e5b595b9d0819985a5b1959603a1b60448201526064016103a5565b505b6000610ebd82846111a1565b90508015610ffa5760405163a47d29cb60e01b8152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a47d29cb9060240160206040518083038186803b158015610f2857600080fd5b505afa158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f609190611130565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610faa576040519150601f19603f3d011682016040523d82523d6000602084013e610faf565b606091505b5050905080610ff85760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016103a5565b505b5050505050505b50565b60006020828403121561101657600080fd5b5035919050565b6000806040838503121561103057600080fd5b50508035926020909101359150565b60005b8381101561105a578181015183820152602001611042565b83811115611069576000848401525b50505050565b6000815180845261108781602086016020860161103f565b601f01601f19169290920160200192915050565b84151581528360208201526080604082015260006110bc608083018561106f565b905060018060a01b038316606083015295945050505050565b6001600160a01b038116811461100157600080fd5b600080604083850312156110fd57600080fd5b8235611108816110d5565b946020939093013593505050565b602081526000611129602083018461106f565b9392505050565b60006020828403121561114257600080fd5b8151611129816110d5565b6020808252600b908201526a13db9b1e48105c9d1a5cdd60aa1b604082015260600190565b60006020828403121561118457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156111b3576111b361118b565b500390565b634e487b7160e01b600052601260045260246000fd5b6000826111dd576111dd6111b8565b500690565b805180151581146111f257600080fd5b919050565b60006020828403121561120957600080fd5b611129826111e2565b80516111f2816110d5565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060008060006101208a8c03121561125257600080fd5b895161125d816110d5565b8099505060208a0151975060408a0151965060608a0151955061128260808b016111e2565b945060a08a0151611292816110d5565b60c08b015160e08c0151919550935067ffffffffffffffff808211156112b757600080fd5b818c0191508c601f8301126112cb57600080fd5b8151818111156112dd576112dd61121d565b604051601f8201601f19908116603f011681019083821181831017156113055761130561121d565b816040528281528f602084870101111561131e57600080fd5b61132f83602083016020880161103f565b80965050505050506113446101008b01611212565b90509295985092959850929598565b600081600019048311821515161561136d5761136d61118b565b500290565b600082611381576113816111b8565b50049056fea264697066735822122032d47f642a1ebf483585a82f8a7315cc58d6e357877b5f92b761a8a07d23caeb64736f6c63430008090033000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2700000000000000000000000004aafce293b9b0fad169c78049a81e400f518e199
Deployed Bytecode
0x60806040526004361061009c5760003560e01c8063891407c011610064578063891407c0146101cc57806392a10f83146101df578063dd85582f1461022b578063e9d1e8ac1461025f578063efef39a1146102a8578063f7bd4b88146102bb57600080fd5b806340d1397e146100a1578063462add46146100c357806356690aaf146101085780636cb9b7ff14610143578063774159c614610163575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004611004565b6102db565b005b3480156100cf57600080fd5b506100f36100de366004611004565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561011457600080fd5b50610135610123366004611004565b60026020526000908152604090205481565b6040519081526020016100ff565b34801561014f57600080fd5b506100c161015e36600461101d565b6103ed565b34801561016f57600080fd5b506101bc61017e366004611004565b60009081526004602090815260408083205460038084528285205483518085019094529083526208aa8960eb1b9383019390935260ff169391929091565b6040516100ff949392919061109b565b6101356101da3660046110ea565b61050c565b3480156101eb57600080fd5b506102137f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd27081565b6040516001600160a01b0390911681526020016100ff565b34801561023757600080fd5b506102137f0000000000000000000000004aafce293b9b0fad169c78049a81e400f518e19981565b34801561026b57600080fd5b5061029b6040518060400160405280601081526020016f4d696e7465725365745072696365563160801b81525081565b6040516100ff9190611116565b6101356102b6366004611004565b6107a9565b3480156102c757600080fd5b506100c16102d6366004611004565b6107bb565b60405163a47d29cb60e01b81526004810182905281907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063a47d29cb9060240160206040518083038186803b15801561033d57600080fd5b505afa158015610351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103759190611130565b6001600160a01b0316336001600160a01b0316146103ae5760405162461bcd60e51b81526004016103a59061114d565b60405180910390fd5b60405162461bcd60e51b81526020600482015260146024820152731058dd1a5bdb881b9bdd081cdd5c1c1bdc9d195960621b60448201526064016103a5565b60405163a47d29cb60e01b81526004810183905282907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063a47d29cb9060240160206040518083038186803b15801561044f57600080fd5b505afa158015610463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104879190611130565b6001600160a01b0316336001600160a01b0316146104b75760405162461bcd60e51b81526004016103a59061114d565b60008381526003602090815260408083208590556004909152808220805460ff1916600117905551839185917f26118a27aca826f829f3bfe21b140b4455c00b434849bd0da50d1e1a9720fb5c9190a3505050565b6000600260005414156105615760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103a5565b600260009081558281526001602052604090205460ff16156105d35760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d206e756d626572206f6620696e766f636174696f6e732072656044820152641858da195960da1b60648201526084016103a5565b60008281526004602052604090205460ff166106285760405162461bcd60e51b8152602060048201526014602482015273141c9a58d9481b9bdd0818dbdb999a59dd5c995960621b60448201526064016103a5565b6000828152600360205260409020543410156106865760405162461bcd60e51b815260206004820181905260248201527f4d7573742073656e64206d696e696d756d2076616c756520746f206d696e742160448201526064016103a5565b604051630d4d151360e01b81526001600160a01b038481166004830152602482018490523360448301527f0000000000000000000000004aafce293b9b0fad169c78049a81e400f518e1991690630d4d151390606401602060405180830381600087803b1580156106f657600080fd5b505af115801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190611172565b600083815260026020526040902054909150158015906107735750600082815260026020526040902054610764906001906111a1565b610771620f4240836111ce565b145b15610795576000828152600160208190526040909120805460ff191690911790555b61079e82610978565b600160005592915050565b60006107b5338361050c565b92915050565b604051633af32abf60e01b81523360048201527f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b031690633af32abf9060240160206040518083038186803b15801561081a57600080fd5b505afa15801561082e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085291906111f7565b6108965760405162461bcd60e51b815260206004820152601560248201527413db9b1e4810dbdc99481dda1a5d195b1a5cdd1959605a1b60448201526064016103a5565b6040516346161b1160e11b81526004810182905260009081906001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690638c2c36229060240160006040518083038186803b1580156108fb57600080fd5b505afa15801561090f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109379190810190611233565b505050600089815260026020526040902083905550919550935050505080821015610973576000838152600160205260409020805460ff191690555b505050565b3415611001576000818152600360205260408120549061099882346111a1565b90508015610a2a57604051600090339083908381818185875af1925050503d80600081146109e2576040519150601f19603f3d011682016040523d82523d6000602084013e6109e7565b606091505b5050905080610a285760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016103a5565b505b600060647f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b0316634f029c396040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8757600080fd5b505afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611172565b610ac99085611353565b610ad39190611372565b90508015610c0c5760007f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b0316633949f9066040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190611130565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610bb8576040519150601f19603f3d011682016040523d82523d6000602084013e610bbd565b606091505b5050905080610c0a5760405162461bcd60e51b8152602060048201526019602482015278119bdd5b99185d1a5bdb881c185e5b595b9d0819985a5b1959603a1b60448201526064016103a5565b505b6000610c1882856111a1565b90506000807f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b031663cc74234b886040518263ffffffff1660e01b8152600401610c6b91815260200190565b60206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190611172565b1115610eb15760405163cc74234b60e01b8152600481018790526064907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063cc74234b9060240160206040518083038186803b158015610d2457600080fd5b505afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190611172565b610d669084611353565b610d709190611372565b90508015610eb157604051636bd8225b60e11b8152600481018790526000907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063d7b044b69060240160206040518083038186803b158015610ddb57600080fd5b505afa158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e139190611130565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e5d576040519150601f19603f3d011682016040523d82523d6000602084013e610e62565b606091505b5050905080610eaf5760405162461bcd60e51b81526020600482015260196024820152781059191a5d1a5bdb985b081c185e5b595b9d0819985a5b1959603a1b60448201526064016103a5565b505b6000610ebd82846111a1565b90508015610ffa5760405163a47d29cb60e01b8152600481018890526000907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063a47d29cb9060240160206040518083038186803b158015610f2857600080fd5b505afa158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f609190611130565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610faa576040519150601f19603f3d011682016040523d82523d6000602084013e610faf565b606091505b5050905080610ff85760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016103a5565b505b5050505050505b50565b60006020828403121561101657600080fd5b5035919050565b6000806040838503121561103057600080fd5b50508035926020909101359150565b60005b8381101561105a578181015183820152602001611042565b83811115611069576000848401525b50505050565b6000815180845261108781602086016020860161103f565b601f01601f19169290920160200192915050565b84151581528360208201526080604082015260006110bc608083018561106f565b905060018060a01b038316606083015295945050505050565b6001600160a01b038116811461100157600080fd5b600080604083850312156110fd57600080fd5b8235611108816110d5565b946020939093013593505050565b602081526000611129602083018461106f565b9392505050565b60006020828403121561114257600080fd5b8151611129816110d5565b6020808252600b908201526a13db9b1e48105c9d1a5cdd60aa1b604082015260600190565b60006020828403121561118457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156111b3576111b361118b565b500390565b634e487b7160e01b600052601260045260246000fd5b6000826111dd576111dd6111b8565b500690565b805180151581146111f257600080fd5b919050565b60006020828403121561120957600080fd5b611129826111e2565b80516111f2816110d5565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060008060006101208a8c03121561125257600080fd5b895161125d816110d5565b8099505060208a0151975060408a0151965060608a0151955061128260808b016111e2565b945060a08a0151611292816110d5565b60c08b015160e08c0151919550935067ffffffffffffffff808211156112b757600080fd5b818c0191508c601f8301126112cb57600080fd5b8151818111156112dd576112dd61121d565b604051601f8201601f19908116603f011681019083821181831017156113055761130561121d565b816040528281528f602084870101111561131e57600080fd5b61132f83602083016020880161103f565b80965050505050506113446101008b01611212565b90509295985092959850929598565b600081600019048311821515161561136d5761136d61118b565b500290565b600082611381576113816111b8565b50049056fea264697066735822122032d47f642a1ebf483585a82f8a7315cc58d6e357877b5f92b761a8a07d23caeb64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2700000000000000000000000004aafce293b9b0fad169c78049a81e400f518e199
-----Decoded View---------------
Arg [0] : _genArt721Address (address): 0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270
Arg [1] : _minterFilter (address): 0x4aafCE293b9B0faD169c78049A81e400f518E199
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270
Arg [1] : 0000000000000000000000004aafce293b9b0fad169c78049a81e400f518e199
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.