Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 2,163 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Purchase | 15132284 | 1303 days ago | IN | 0.015 ETH | 0.00246461 | ||||
| Purchase | 14928106 | 1338 days ago | IN | 0.25671824 ETH | 0.00362262 | ||||
| Purchase | 14928100 | 1338 days ago | IN | 0.24348534 ETH | 0.00422639 | ||||
| Purchase | 14928100 | 1338 days ago | IN | 0.24348534 ETH | 0.00422639 | ||||
| Purchase | 14928100 | 1338 days ago | IN | 0.25366449 ETH | 0.00422639 | ||||
| Purchase | 14928100 | 1338 days ago | IN | 0.25366449 ETH | 0.00422639 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.23859934 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.24063517 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.24348534 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.24348534 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.25366449 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.25366449 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.25753257 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.25671824 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.25671824 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.27809446 ETH | 0.00429226 | ||||
| Purchase | 14928097 | 1338 days ago | IN | 0.23493485 ETH | 0.00483016 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.23493485 ETH | 0.00591681 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.23859934 ETH | 0.00591681 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.23859934 ETH | 0.00591681 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.23493485 ETH | 0.00591681 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.25366449 ETH | 0.00591681 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.23859934 ETH | 0.00591681 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.24348534 ETH | 0.00591681 | ||||
| Purchase | 14928090 | 1338 days ago | IN | 0.25671824 ETH | 0.00597732 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.0071254 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.0071254 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.0071254 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.00346091 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.0071254 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.01017915 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.01587947 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02247557 ETH | ||||
| - | 14928082 | 1338 days ago | 0.02890879 ETH | ||||
| - | 14928082 | 1338 days ago | 0.20228013 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MinterDAExpV0
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.
* Pricing is achieved using an automated Dutch-auction mechanism.
* @author Art Blocks Inc.
*/
contract MinterDAExpV0 is ReentrancyGuard, IFilteredMinterV0 {
/// Auction details updated for project `projectId`.
event SetAuctionDetails(
uint256 indexed projectId,
uint256 _auctionTimestampStart,
uint256 _priceDecayHalfLifeSeconds,
uint256 _startPrice,
uint256 _basePrice
);
/// Auction details cleared for project `projectId`.
event ResetAuctionDetails(uint256 indexed projectId);
/// Maximum and minimum allowed price decay half lifes updated.
event AuctionHalfLifeRangeSecondsUpdated(
uint256 _minimumPriceDecayHalfLifeSeconds,
uint256 _maximumPriceDecayHalfLifeSeconds
);
/// 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 = "MinterDAExpV0";
uint256 constant ONE_MILLION = 1_000_000;
/// projectId => are contracts allowed to mint?
mapping(uint256 => bool) public contractMintable;
/// projectId => are tokens allowed to be minted to other addresses?
mapping(uint256 => bool) public purchaseToDisabled;
/// purchaser address => projectId => number of mints purchased
mapping(address => mapping(uint256 => uint256)) public projectMintCounter;
/// projectId => maximum number of mints a given address may invoke
mapping(uint256 => uint256) public projectMintLimit;
/// 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;
/// Minimum price decay half life: price must decay with a half life of at
/// least this amount (must cut in half at least every N seconds).
uint256 public minimumPriceDecayHalfLifeSeconds = 300; // 5 minutes
/// Maximum price decay half life: price may decay with a half life of no
/// more than this amount (may cut in half at no more than every N seconds).
uint256 public maximumPriceDecayHalfLifeSeconds = 3600; // 60 minutes
/// projectId => auction parameters
mapping(uint256 => AuctionParameters) public projectAuctionParameters;
struct AuctionParameters {
uint256 timestampStart;
uint256 priceDecayHalfLifeSeconds;
uint256 startPrice;
uint256 basePrice;
}
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 which
* this 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 mint limit of a single purchaser for project
* `_projectId` to `_limit`.
* @param _projectId Project ID to set the mint limit for.
* @param _limit Number of times a given address may mint the
* project's tokens.
*/
function setProjectMintLimit(uint256 _projectId, uint8 _limit)
external
onlyCoreWhitelisted
{
projectMintLimit[_projectId] = _limit;
}
/**
* @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 Toggles if contracts are allowed to mint tokens for
* project `_projectId`.
* @param _projectId Project ID to be toggled.
*/
function toggleContractMintable(uint256 _projectId)
external
onlyCoreWhitelisted
{
contractMintable[_projectId] = !contractMintable[_projectId];
}
/**
* @notice Toggles if purchases to other address are enabled for
* project `_projectId`.
* @param _projectId Project ID to be toggled.
*/
function togglePurchaseToDisabled(uint256 _projectId)
external
onlyCoreWhitelisted
{
purchaseToDisabled[_projectId] = !purchaseToDisabled[_projectId];
emit PurchaseToDisabledUpdated(
_projectId,
purchaseToDisabled[_projectId]
);
}
/**
* @notice Sets the minimum and maximum values that are settable for
* `_priceDecayHalfLifeSeconds` across all projects.
* @param _minimumPriceDecayHalfLifeSeconds Minimum price decay half life
* (in seconds).
* @param _maximumPriceDecayHalfLifeSeconds Maximum price decay half life
* (in seconds).
*/
function setAllowablePriceDecayHalfLifeRangeSeconds(
uint256 _minimumPriceDecayHalfLifeSeconds,
uint256 _maximumPriceDecayHalfLifeSeconds
) external onlyCoreWhitelisted {
require(
_maximumPriceDecayHalfLifeSeconds >
_minimumPriceDecayHalfLifeSeconds,
"Maximum half life must be greater than minimum"
);
require(
_minimumPriceDecayHalfLifeSeconds > 0,
"Half life of zero not allowed"
);
minimumPriceDecayHalfLifeSeconds = _minimumPriceDecayHalfLifeSeconds;
maximumPriceDecayHalfLifeSeconds = _maximumPriceDecayHalfLifeSeconds;
emit AuctionHalfLifeRangeSecondsUpdated(
_minimumPriceDecayHalfLifeSeconds,
_maximumPriceDecayHalfLifeSeconds
);
}
////// Auction Functions
/**
* @notice Sets auction details for project `_projectId`.
* @param _projectId Project ID to set auction details for.
* @param _auctionTimestampStart Timestamp at which to start the auction.
* @param _priceDecayHalfLifeSeconds The half life with which to decay the
* price (in seconds).
* @param _startPrice Price at which to start the auction, in Wei.
* @param _basePrice Resting price of the auction, in Wei.
*/
function setAuctionDetails(
uint256 _projectId,
uint256 _auctionTimestampStart,
uint256 _priceDecayHalfLifeSeconds,
uint256 _startPrice,
uint256 _basePrice
) external onlyArtist(_projectId) {
AuctionParameters memory auctionParams = projectAuctionParameters[
_projectId
];
require(
auctionParams.timestampStart == 0 ||
block.timestamp < auctionParams.timestampStart,
"No modifications mid-auction"
);
require(
block.timestamp < _auctionTimestampStart,
"Only future auctions"
);
require(
_startPrice > _basePrice,
"Auction start price must be greater than auction end price"
);
require(
(_priceDecayHalfLifeSeconds >= minimumPriceDecayHalfLifeSeconds) &&
(_priceDecayHalfLifeSeconds <=
maximumPriceDecayHalfLifeSeconds),
"Price decay half life must fall between min and max allowable values"
);
projectAuctionParameters[_projectId] = AuctionParameters(
_auctionTimestampStart,
_priceDecayHalfLifeSeconds,
_startPrice,
_basePrice
);
emit SetAuctionDetails(
_projectId,
_auctionTimestampStart,
_priceDecayHalfLifeSeconds,
_startPrice,
_basePrice
);
}
/**
* @notice Resets auction details for project `_projectId`, zero-ing out all
* relevant auction fields. Not intended to be used in normal auction
* operation, but rather only in case of the need to halt an auction.
* @param _projectId Project ID to set auction details for.
*/
function resetAuctionDetails(uint256 _projectId)
external
onlyCoreWhitelisted
{
delete projectAuctionParameters[_projectId];
emit ResetAuctionDetails(_projectId);
}
/**
* @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"
);
// no need to check if price is configured - auction init values fail
// if contract filter is off, allow calls from another contract
if (!contractMintable[_projectId]) {
require(msg.sender == tx.origin, "No Contract Buys");
}
// if purchaseTo is disabled, enforce purchase destination to be the TX
// sending address.
if (purchaseToDisabled[_projectId]) {
require(msg.sender == _to, "No `purchaseTo` Allowed");
}
// _getPrice reverts if auction is unconfigured or has not started
uint256 currentPriceInWei = _getPrice(_projectId);
require(
msg.value >= currentPriceInWei,
"Must send minimum value to mint!"
);
// limit mints per address by project
if (projectMintLimit[_projectId] > 0) {
require(
projectMintCounter[msg.sender][_projectId] <
projectMintLimit[_projectId],
"Reached minting limit"
);
// EFFECTS
projectMintCounter[msg.sender][_projectId]++;
}
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
_splitFundsETHAuction(_projectId, currentPriceInWei);
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, which may fail if access
* lists are not properly populated when purchasing tokens.
* @param _projectId Project ID for which funds shall be split.
* @param _currentPriceInWei Current price of token, in Wei.
*/
function _splitFundsETHAuction(
uint256 _projectId,
uint256 _currentPriceInWei
) internal {
if (msg.value > 0) {
uint256 refund = msg.value - _currentPriceInWei;
if (refund > 0) {
(bool success_, ) = msg.sender.call{value: refund}("");
require(success_, "Refund failed");
}
uint256 foundationAmount = (_currentPriceInWei *
genArtCoreContract.artblocksPercentage()) / 100;
if (foundationAmount > 0) {
(bool success_, ) = genArtCoreContract.artblocksAddress().call{
value: foundationAmount
}("");
require(success_, "Foundation payment failed");
}
uint256 projectFunds = _currentPriceInWei - 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 price of minting a token on project `_projectId` given
* the project's AuctionParameters and current block timestamp.
* Reverts if auction has not yet started or auction is unconfigured.
* @param _projectId Project ID to get price of token for.
* @return current price of token in Wei
* @dev This method calculates price decay using a linear interpolation
* of exponential decay based on the artist-provided half-life for price
* decay, `_priceDecayHalfLifeSeconds`.
*/
function _getPrice(uint256 _projectId) private view returns (uint256) {
AuctionParameters memory auctionParams = projectAuctionParameters[
_projectId
];
require(
block.timestamp > auctionParams.timestampStart,
"Auction not yet started"
);
require(
auctionParams.priceDecayHalfLifeSeconds > 0,
"Only configured auctions"
);
uint256 decayedPrice = auctionParams.startPrice;
uint256 elapsedTimeSeconds = block.timestamp -
auctionParams.timestampStart;
// Divide by two (via bit-shifting) for the number of entirely completed
// half-lives that have elapsed since auction start time.
decayedPrice >>=
elapsedTimeSeconds /
auctionParams.priceDecayHalfLifeSeconds;
// Perform a linear interpolation between partial half-life points, to
// approximate the current place on a perfect exponential decay curve.
decayedPrice -=
(decayedPrice *
(elapsedTimeSeconds %
auctionParams.priceDecayHalfLifeSeconds)) /
auctionParams.priceDecayHalfLifeSeconds /
2;
if (decayedPrice < auctionParams.basePrice) {
// Price may not decay below stay `basePrice`.
return auctionParams.basePrice;
}
return decayedPrice;
}
/**
* @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 project's auction parameters have been
* configured on this minter
* @return tokenPriceInWei current price of token on this minter - invalid
* if auction 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
)
{
AuctionParameters memory auctionParams = projectAuctionParameters[
_projectId
];
isConfigured = (auctionParams.startPrice > 0);
if (block.timestamp <= auctionParams.timestampStart) {
// Provide a reasonable value for `tokenPriceInWei` when it would
// otherwise revert, using the starting price before auction starts.
tokenPriceInWei = auctionParams.startPrice;
} else if (auctionParams.startPrice == 0) {
// In the case of unconfigured auction, return price of zero when
// it would otherwise revert
tokenPriceInWei = 0;
} else {
tokenPriceInWei = _getPrice(_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
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_genArt721Address","type":"address"},{"internalType":"address","name":"_minterFilter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_minimumPriceDecayHalfLifeSeconds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_maximumPriceDecayHalfLifeSeconds","type":"uint256"}],"name":"AuctionHalfLifeRangeSecondsUpdated","type":"event"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"projectId","type":"uint256"}],"name":"ResetAuctionDetails","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"projectId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_auctionTimestampStart","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_priceDecayHalfLifeSeconds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_startPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_basePrice","type":"uint256"}],"name":"SetAuctionDetails","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"contractMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"maximumPriceDecayHalfLifeSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumPriceDecayHalfLifeSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"projectAuctionParameters","outputs":[{"internalType":"uint256","name":"timestampStart","type":"uint256"},{"internalType":"uint256","name":"priceDecayHalfLifeSeconds","type":"uint256"},{"internalType":"uint256","name":"startPrice","type":"uint256"},{"internalType":"uint256","name":"basePrice","type":"uint256"}],"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":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectMintCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"projectMintLimit","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":"","type":"uint256"}],"name":"purchaseToDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"resetAuctionDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumPriceDecayHalfLifeSeconds","type":"uint256"},{"internalType":"uint256","name":"_maximumPriceDecayHalfLifeSeconds","type":"uint256"}],"name":"setAllowablePriceDecayHalfLifeRangeSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint256","name":"_auctionTimestampStart","type":"uint256"},{"internalType":"uint256","name":"_priceDecayHalfLifeSeconds","type":"uint256"},{"internalType":"uint256","name":"_startPrice","type":"uint256"},{"internalType":"uint256","name":"_basePrice","type":"uint256"}],"name":"setAuctionDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"setProjectMaxInvocations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"},{"internalType":"uint8","name":"_limit","type":"uint8"}],"name":"setProjectMintLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"toggleContractMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectId","type":"uint256"}],"name":"togglePurchaseToDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
61010060405261012c600755610e106008553480156200001e57600080fd5b506040516200228438038062002284833981016040819052620000419162000163565b600160009081556001600160a01b03808416608081905260a081905290831660c081905260e0819052604080516392a10f8360e01b81529051929391926392a10f8392600480840193602093929083900390910190829087803b158015620000a857600080fd5b505af1158015620000bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e391906200019b565b6001600160a01b0316146200013e5760405162461bcd60e51b815260206004820152601860248201527f496c6c6567616c20636f6e74726163742070616972696e670000000000000000604482015260640160405180910390fd5b5050620001c0565b80516001600160a01b03811681146200015e57600080fd5b919050565b600080604083850312156200017757600080fd5b620001828362000146565b9150620001926020840162000146565b90509250929050565b600060208284031215620001ae57600080fd5b620001b98262000146565b9392505050565b60805160a05160c05160e05161202f620002556000396000610b5701526000610465015260008181610517015281816105f0015281816106f701528181610c6401528181610d3c01528181610ef20152818161126c01528181611330015281816115f6015281816116a5015281816117e5015281816118a0015281816119570152611aa40152600061034e015261202f6000f3fe6080604052600436106101355760003560e01c806392a10f83116100ab578063cf6681ea1161006f578063cf6681ea1461040d578063cfff5cf114610423578063dd85582f14610453578063e9d1e8ac14610487578063efef39a1146104cd578063f7bd4b88146104e057600080fd5b806392a10f831461033c578063acffea051461037d578063bee560031461039d578063c0ad212e146103cd578063cd379f6e146103ed57600080fd5b8063462add46116100fd578063462add461461024957806356690aaf146102895780635bc1470f146102b657806362f7a7ed146102cc578063774159c6146102f9578063891407c01461032957600080fd5b8063231c22811461013a5780632aedc28e1461015c5780632f077ee61461017c5780633a4657b4146101e357806340d1397e14610229575b600080fd5b34801561014657600080fd5b5061015a610155366004611bca565b610500565b005b34801561016857600080fd5b5061015a610177366004611c00565b6105d9565b34801561018857600080fd5b506101be610197366004611c00565b60096020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b3480156101ef57600080fd5b5061021b6101fe366004611c31565b600360209081526000928352604080842090915290825290205481565b6040519081526020016101da565b34801561023557600080fd5b5061015a610244366004611c00565b6106e0565b34801561025557600080fd5b50610279610264366004611c00565b60056020526000908152604090205460ff1681565b60405190151581526020016101da565b34801561029557600080fd5b5061021b6102a4366004611c00565b60066020526000908152604090205481565b3480156102c257600080fd5b5061021b60085481565b3480156102d857600080fd5b5061021b6102e7366004611c00565b60046020526000908152604090205481565b34801561030557600080fd5b50610319610314366004611c00565b6107f5565b6040516101da9493929190611cb9565b61021b610337366004611c31565b61089b565b34801561034857600080fd5b506103707f000000000000000000000000000000000000000000000000000000000000000081565b6040516101da9190611cf3565b34801561038957600080fd5b5061015a610398366004611c00565b610c4d565b3480156103a957600080fd5b506102796103b8366004611c00565b60016020526000908152604090205460ff1681565b3480156103d957600080fd5b5061015a6103e8366004611d07565b610d25565b3480156103f957600080fd5b5061015a610408366004611d29565b610eda565b34801561041957600080fd5b5061021b60075481565b34801561042f57600080fd5b5061027961043e366004611c00565b60026020526000908152604090205460ff1681565b34801561045f57600080fd5b506103707f000000000000000000000000000000000000000000000000000000000000000081565b34801561049357600080fd5b506104c06040518060400160405280600d81526020016c04d696e7465724441457870563609c1b81525081565b6040516101da9190611d64565b61021b6104db366004611c00565b611243565b3480156104ec57600080fd5b5061015a6104fb366004611c00565b611255565b604051633af32abf60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af32abf9061054c903390600401611cf3565b60206040518083038186803b15801561056457600080fd5b505afa158015610578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059c9190611d93565b6105c15760405162461bcd60e51b81526004016105b890611dae565b60405180910390fd5b60009182526004602052604090912060ff9091169055565b604051633af32abf60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af32abf90610625903390600401611cf3565b60206040518083038186803b15801561063d57600080fd5b505afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190611d93565b6106915760405162461bcd60e51b81526004016105b890611dae565b60008181526009602052604080822082815560018101839055600281018390556003018290555182917f2de6b284414d2e6b72bcc8d8d4de934e3f6410660a8f677c5c978f17f9cc2a9291a250565b604051633af32abf60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af32abf9061072c903390600401611cf3565b60206040518083038186803b15801561074457600080fd5b505afa158015610758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077c9190611d93565b6107985760405162461bcd60e51b81526004016105b890611dae565b600081815260026020908152604091829020805460ff8082161560ff199092168217909255925192161515825282917fce8ced1e9d6979c7589d3c8786f4d51a8034faa5ff2cbc5a2271364f787feccb910160405180910390a250565b6000818152600960209081526040808320815160808101835281548082526001830154948201949094526002820154928101839052600390910154606082810191909152911515939283919042116108535780604001519350610871565b60408101516108655760009350610871565b61086e866113ef565b93505b6040518060400160405280600381526020016208aa8960eb1b815250925060009150509193509193565b6000600260005414156108f05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105b8565b600260009081558281526005602052604090205460ff16156109625760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d206e756d626572206f6620696e766f636174696f6e732072656044820152641858da195960da1b60648201526084016105b8565b60008281526001602052604090205460ff166109ba573332146109ba5760405162461bcd60e51b815260206004820152601060248201526f4e6f20436f6e7472616374204275797360801b60448201526064016105b8565b60008281526002602052604090205460ff1615610a2357336001600160a01b03841614610a235760405162461bcd60e51b8152602060048201526017602482015276139bc8181c1d5c98da185cd9551bd808105b1b1bddd959604a1b60448201526064016105b8565b6000610a2e836113ef565b905080341015610a805760405162461bcd60e51b815260206004820181905260248201527f4d7573742073656e64206d696e696d756d2076616c756520746f206d696e742160448201526064016105b8565b60008381526004602052604090205415610b2b57600083815260046020908152604080832054338452600383528184208785529092529091205410610aff5760405162461bcd60e51b815260206004820152601560248201527414995858da1959081b5a5b9d1a5b99c81b1a5b5a5d605a1b60448201526064016105b8565b3360009081526003602090815260408083208684529091528120805491610b2583611df3565b91905055505b604051630d4d151360e01b81526001600160a01b038581166004830152602482018590523360448301527f00000000000000000000000000000000000000000000000000000000000000001690630d4d151390606401602060405180830381600087803b158015610b9b57600080fd5b505af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611e0e565b60008481526006602052604090205490925015801590610c185750600083815260066020526040902054610c0990600190611e27565b610c16620f424084611e54565b145b15610c37576000838152600560205260409020805460ff191660011790555b610c41838261154c565b50600160005592915050565b604051633af32abf60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af32abf90610c99903390600401611cf3565b60206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190611d93565b610d055760405162461bcd60e51b81526004016105b890611dae565b6000908152600160205260409020805460ff19811660ff90911615179055565b604051633af32abf60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af32abf90610d71903390600401611cf3565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190611d93565b610ddd5760405162461bcd60e51b81526004016105b890611dae565b818111610e435760405162461bcd60e51b815260206004820152602e60248201527f4d6178696d756d2068616c66206c696665206d7573742062652067726561746560448201526d72207468616e206d696e696d756d60901b60648201526084016105b8565b60008211610e935760405162461bcd60e51b815260206004820152601d60248201527f48616c66206c696665206f66207a65726f206e6f7420616c6c6f77656400000060448201526064016105b8565b6007829055600881905560408051838152602081018390527f1d5d9c9b660aace5432c6c7412456d0ad1b5ff4c6ea156a8c551ba93555ed73f910160405180910390a15050565b60405163a47d29cb60e01b81526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a47d29cb9060240160206040518083038186803b158015610f3c57600080fd5b505afa158015610f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f749190611e68565b6001600160a01b0316336001600160a01b031614610fc25760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016105b8565b60008681526009602090815260409182902082516080810184528154808252600183015493820193909352600282015493810193909352600301546060830152158061100e5750805142105b61105a5760405162461bcd60e51b815260206004820152601c60248201527f4e6f206d6f64696669636174696f6e73206d69642d61756374696f6e0000000060448201526064016105b8565b8542106110a05760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206675747572652061756374696f6e7360601b60448201526064016105b8565b8284116111155760405162461bcd60e51b815260206004820152603a60248201527f41756374696f6e207374617274207072696365206d757374206265206772656160448201527f746572207468616e2061756374696f6e20656e6420707269636500000000000060648201526084016105b8565b600754851015801561112957506008548511155b6111a95760405162461bcd60e51b8152602060048201526044602482018190527f50726963652064656361792068616c66206c696665206d7573742066616c6c20908201527f6265747765656e206d696e20616e64206d617820616c6c6f7761626c652076616064820152636c75657360e01b608482015260a4016105b8565b6040805160808082018352888252602080830189815283850189815260608086018a815260008f815260098652889020965187559251600187015590516002860155905160039094019390935583518a815290810189905292830187905290820185905288917f38b3058b75696f9e45bffa9c4b237adcde13d74c7bc1bea63e13c712d0776c74910160405180910390a250505050505050565b600061124f338361089b565b92915050565b604051633af32abf60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af32abf906112a1903390600401611cf3565b60206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f19190611d93565b61130d5760405162461bcd60e51b81526004016105b890611dae565b6040516346161b1160e11b81526004810182905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638c2c36229060240160006040518083038186803b15801561137257600080fd5b505afa158015611386573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113ae9190810190611ea6565b5050506000898152600660205260409020839055509195509350505050808210156113ea576000838152600560205260409020805460ff191690555b505050565b6000818152600960209081526040808320815160808101835281548082526001830154948201949094526002820154928101929092526003015460608201529042116114775760405162461bcd60e51b8152602060048201526017602482015276105d58dd1a5bdb881b9bdd081e595d081cdd185c9d1959604a1b60448201526064016105b8565b60008160200151116114c65760405162461bcd60e51b81526020600482015260186024820152774f6e6c7920636f6e666967757265642061756374696f6e7360401b60448201526064016105b8565b604081015181516000906114da9042611e27565b90508260200151816114ec9190611fc6565b602084015192901c916002906115028184611e54565b61150c9085611fda565b6115169190611fc6565b6115209190611fc6565b61152a9083611e27565b915082606001518210156115445750506060015192915050565b509392505050565b3415611bc657600061155e8234611e27565b905080156115f057604051600090339083908381818185875af1925050503d80600081146115a8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ad565b606091505b50509050806115ee5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016105b8565b505b600060647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634f029c396040518163ffffffff1660e01b815260040160206040518083038186803b15801561164d57600080fd5b505afa158015611661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116859190611e0e565b61168f9085611fda565b6116999190611fc6565b905080156117d25760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633949f9066040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fc57600080fd5b505afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117349190611e68565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811461177e576040519150601f19603f3d011682016040523d82523d6000602084013e611783565b606091505b50509050806117d05760405162461bcd60e51b8152602060048201526019602482015278119bdd5b99185d1a5bdb881c185e5b595b9d0819985a5b1959603a1b60448201526064016105b8565b505b60006117de8285611e27565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cc74234b886040518263ffffffff1660e01b815260040161183191815260200190565b60206040518083038186803b15801561184957600080fd5b505afa15801561185d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118819190611e0e565b1115611a775760405163cc74234b60e01b8152600481018790526064907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cc74234b9060240160206040518083038186803b1580156118ea57600080fd5b505afa1580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119229190611e0e565b61192c9084611fda565b6119369190611fc6565b90508015611a7757604051636bd8225b60e11b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d7b044b69060240160206040518083038186803b1580156119a157600080fd5b505afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d99190611e68565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b5050905080611a755760405162461bcd60e51b81526020600482015260196024820152781059191a5d1a5bdb985b081c185e5b595b9d0819985a5b1959603a1b60448201526064016105b8565b505b6000611a838284611e27565b90508015611bc05760405163a47d29cb60e01b8152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a47d29cb9060240160206040518083038186803b158015611aee57600080fd5b505afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190611e68565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b70576040519150601f19603f3d011682016040523d82523d6000602084013e611b75565b606091505b5050905080611bbe5760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016105b8565b505b50505050505b5050565b60008060408385031215611bdd57600080fd5b82359150602083013560ff81168114611bf557600080fd5b809150509250929050565b600060208284031215611c1257600080fd5b5035919050565b6001600160a01b0381168114611c2e57600080fd5b50565b60008060408385031215611c4457600080fd5b8235611c4f81611c19565b946020939093013593505050565b60005b83811015611c78578181015183820152602001611c60565b83811115611c87576000848401525b50505050565b60008151808452611ca5816020860160208601611c5d565b601f01601f19169290920160200192915050565b8415158152836020820152608060408201526000611cda6080830185611c8d565b905060018060a01b038316606083015295945050505050565b6001600160a01b0391909116815260200190565b60008060408385031215611d1a57600080fd5b50508035926020909101359150565b600080600080600060a08688031215611d4157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602081526000611d776020830184611c8d565b9392505050565b80518015158114611d8e57600080fd5b919050565b600060208284031215611da557600080fd5b611d7782611d7e565b60208082526015908201527413db9b1e4810dbdc99481dda1a5d195b1a5cdd1959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611e0757611e07611ddd565b5060010190565b600060208284031215611e2057600080fd5b5051919050565b600082821015611e3957611e39611ddd565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e6357611e63611e3e565b500690565b600060208284031215611e7a57600080fd5b8151611d7781611c19565b8051611d8e81611c19565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060008060006101208a8c031215611ec557600080fd5b8951611ed081611c19565b8099505060208a0151975060408a0151965060608a01519550611ef560808b01611d7e565b945060a08a0151611f0581611c19565b60c08b015160e08c0151919550935067ffffffffffffffff80821115611f2a57600080fd5b818c0191508c601f830112611f3e57600080fd5b815181811115611f5057611f50611e90565b604051601f8201601f19908116603f01168101908382118183101715611f7857611f78611e90565b816040528281528f6020848701011115611f9157600080fd5b611fa2836020830160208801611c5d565b8096505050505050611fb76101008b01611e85565b90509295985092959850929598565b600082611fd557611fd5611e3e565b500490565b6000816000190483118215151615611ff457611ff4611ddd565b50029056fea264697066735822122057a128f9d72b71b7aecf1ae9c8d3d362b8b755866fbb93494e359725a9e40bbf64736f6c63430008090033000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2700000000000000000000000004aafce293b9b0fad169c78049a81e400f518e199
Deployed Bytecode
0x6080604052600436106101355760003560e01c806392a10f83116100ab578063cf6681ea1161006f578063cf6681ea1461040d578063cfff5cf114610423578063dd85582f14610453578063e9d1e8ac14610487578063efef39a1146104cd578063f7bd4b88146104e057600080fd5b806392a10f831461033c578063acffea051461037d578063bee560031461039d578063c0ad212e146103cd578063cd379f6e146103ed57600080fd5b8063462add46116100fd578063462add461461024957806356690aaf146102895780635bc1470f146102b657806362f7a7ed146102cc578063774159c6146102f9578063891407c01461032957600080fd5b8063231c22811461013a5780632aedc28e1461015c5780632f077ee61461017c5780633a4657b4146101e357806340d1397e14610229575b600080fd5b34801561014657600080fd5b5061015a610155366004611bca565b610500565b005b34801561016857600080fd5b5061015a610177366004611c00565b6105d9565b34801561018857600080fd5b506101be610197366004611c00565b60096020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b3480156101ef57600080fd5b5061021b6101fe366004611c31565b600360209081526000928352604080842090915290825290205481565b6040519081526020016101da565b34801561023557600080fd5b5061015a610244366004611c00565b6106e0565b34801561025557600080fd5b50610279610264366004611c00565b60056020526000908152604090205460ff1681565b60405190151581526020016101da565b34801561029557600080fd5b5061021b6102a4366004611c00565b60066020526000908152604090205481565b3480156102c257600080fd5b5061021b60085481565b3480156102d857600080fd5b5061021b6102e7366004611c00565b60046020526000908152604090205481565b34801561030557600080fd5b50610319610314366004611c00565b6107f5565b6040516101da9493929190611cb9565b61021b610337366004611c31565b61089b565b34801561034857600080fd5b506103707f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd27081565b6040516101da9190611cf3565b34801561038957600080fd5b5061015a610398366004611c00565b610c4d565b3480156103a957600080fd5b506102796103b8366004611c00565b60016020526000908152604090205460ff1681565b3480156103d957600080fd5b5061015a6103e8366004611d07565b610d25565b3480156103f957600080fd5b5061015a610408366004611d29565b610eda565b34801561041957600080fd5b5061021b60075481565b34801561042f57600080fd5b5061027961043e366004611c00565b60026020526000908152604090205460ff1681565b34801561045f57600080fd5b506103707f0000000000000000000000004aafce293b9b0fad169c78049a81e400f518e19981565b34801561049357600080fd5b506104c06040518060400160405280600d81526020016c04d696e7465724441457870563609c1b81525081565b6040516101da9190611d64565b61021b6104db366004611c00565b611243565b3480156104ec57600080fd5b5061015a6104fb366004611c00565b611255565b604051633af32abf60e01b81526001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690633af32abf9061054c903390600401611cf3565b60206040518083038186803b15801561056457600080fd5b505afa158015610578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059c9190611d93565b6105c15760405162461bcd60e51b81526004016105b890611dae565b60405180910390fd5b60009182526004602052604090912060ff9091169055565b604051633af32abf60e01b81526001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690633af32abf90610625903390600401611cf3565b60206040518083038186803b15801561063d57600080fd5b505afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190611d93565b6106915760405162461bcd60e51b81526004016105b890611dae565b60008181526009602052604080822082815560018101839055600281018390556003018290555182917f2de6b284414d2e6b72bcc8d8d4de934e3f6410660a8f677c5c978f17f9cc2a9291a250565b604051633af32abf60e01b81526001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690633af32abf9061072c903390600401611cf3565b60206040518083038186803b15801561074457600080fd5b505afa158015610758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077c9190611d93565b6107985760405162461bcd60e51b81526004016105b890611dae565b600081815260026020908152604091829020805460ff8082161560ff199092168217909255925192161515825282917fce8ced1e9d6979c7589d3c8786f4d51a8034faa5ff2cbc5a2271364f787feccb910160405180910390a250565b6000818152600960209081526040808320815160808101835281548082526001830154948201949094526002820154928101839052600390910154606082810191909152911515939283919042116108535780604001519350610871565b60408101516108655760009350610871565b61086e866113ef565b93505b6040518060400160405280600381526020016208aa8960eb1b815250925060009150509193509193565b6000600260005414156108f05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105b8565b600260009081558281526005602052604090205460ff16156109625760405162461bcd60e51b815260206004820152602560248201527f4d6178696d756d206e756d626572206f6620696e766f636174696f6e732072656044820152641858da195960da1b60648201526084016105b8565b60008281526001602052604090205460ff166109ba573332146109ba5760405162461bcd60e51b815260206004820152601060248201526f4e6f20436f6e7472616374204275797360801b60448201526064016105b8565b60008281526002602052604090205460ff1615610a2357336001600160a01b03841614610a235760405162461bcd60e51b8152602060048201526017602482015276139bc8181c1d5c98da185cd9551bd808105b1b1bddd959604a1b60448201526064016105b8565b6000610a2e836113ef565b905080341015610a805760405162461bcd60e51b815260206004820181905260248201527f4d7573742073656e64206d696e696d756d2076616c756520746f206d696e742160448201526064016105b8565b60008381526004602052604090205415610b2b57600083815260046020908152604080832054338452600383528184208785529092529091205410610aff5760405162461bcd60e51b815260206004820152601560248201527414995858da1959081b5a5b9d1a5b99c81b1a5b5a5d605a1b60448201526064016105b8565b3360009081526003602090815260408083208684529091528120805491610b2583611df3565b91905055505b604051630d4d151360e01b81526001600160a01b038581166004830152602482018590523360448301527f0000000000000000000000004aafce293b9b0fad169c78049a81e400f518e1991690630d4d151390606401602060405180830381600087803b158015610b9b57600080fd5b505af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611e0e565b60008481526006602052604090205490925015801590610c185750600083815260066020526040902054610c0990600190611e27565b610c16620f424084611e54565b145b15610c37576000838152600560205260409020805460ff191660011790555b610c41838261154c565b50600160005592915050565b604051633af32abf60e01b81526001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690633af32abf90610c99903390600401611cf3565b60206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190611d93565b610d055760405162461bcd60e51b81526004016105b890611dae565b6000908152600160205260409020805460ff19811660ff90911615179055565b604051633af32abf60e01b81526001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690633af32abf90610d71903390600401611cf3565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190611d93565b610ddd5760405162461bcd60e51b81526004016105b890611dae565b818111610e435760405162461bcd60e51b815260206004820152602e60248201527f4d6178696d756d2068616c66206c696665206d7573742062652067726561746560448201526d72207468616e206d696e696d756d60901b60648201526084016105b8565b60008211610e935760405162461bcd60e51b815260206004820152601d60248201527f48616c66206c696665206f66207a65726f206e6f7420616c6c6f77656400000060448201526064016105b8565b6007829055600881905560408051838152602081018390527f1d5d9c9b660aace5432c6c7412456d0ad1b5ff4c6ea156a8c551ba93555ed73f910160405180910390a15050565b60405163a47d29cb60e01b81526004810186905285907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063a47d29cb9060240160206040518083038186803b158015610f3c57600080fd5b505afa158015610f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f749190611e68565b6001600160a01b0316336001600160a01b031614610fc25760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016105b8565b60008681526009602090815260409182902082516080810184528154808252600183015493820193909352600282015493810193909352600301546060830152158061100e5750805142105b61105a5760405162461bcd60e51b815260206004820152601c60248201527f4e6f206d6f64696669636174696f6e73206d69642d61756374696f6e0000000060448201526064016105b8565b8542106110a05760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206675747572652061756374696f6e7360601b60448201526064016105b8565b8284116111155760405162461bcd60e51b815260206004820152603a60248201527f41756374696f6e207374617274207072696365206d757374206265206772656160448201527f746572207468616e2061756374696f6e20656e6420707269636500000000000060648201526084016105b8565b600754851015801561112957506008548511155b6111a95760405162461bcd60e51b8152602060048201526044602482018190527f50726963652064656361792068616c66206c696665206d7573742066616c6c20908201527f6265747765656e206d696e20616e64206d617820616c6c6f7761626c652076616064820152636c75657360e01b608482015260a4016105b8565b6040805160808082018352888252602080830189815283850189815260608086018a815260008f815260098652889020965187559251600187015590516002860155905160039094019390935583518a815290810189905292830187905290820185905288917f38b3058b75696f9e45bffa9c4b237adcde13d74c7bc1bea63e13c712d0776c74910160405180910390a250505050505050565b600061124f338361089b565b92915050565b604051633af32abf60e01b81526001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690633af32abf906112a1903390600401611cf3565b60206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f19190611d93565b61130d5760405162461bcd60e51b81526004016105b890611dae565b6040516346161b1160e11b81526004810182905260009081906001600160a01b037f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2701690638c2c36229060240160006040518083038186803b15801561137257600080fd5b505afa158015611386573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113ae9190810190611ea6565b5050506000898152600660205260409020839055509195509350505050808210156113ea576000838152600560205260409020805460ff191690555b505050565b6000818152600960209081526040808320815160808101835281548082526001830154948201949094526002820154928101929092526003015460608201529042116114775760405162461bcd60e51b8152602060048201526017602482015276105d58dd1a5bdb881b9bdd081e595d081cdd185c9d1959604a1b60448201526064016105b8565b60008160200151116114c65760405162461bcd60e51b81526020600482015260186024820152774f6e6c7920636f6e666967757265642061756374696f6e7360401b60448201526064016105b8565b604081015181516000906114da9042611e27565b90508260200151816114ec9190611fc6565b602084015192901c916002906115028184611e54565b61150c9085611fda565b6115169190611fc6565b6115209190611fc6565b61152a9083611e27565b915082606001518210156115445750506060015192915050565b509392505050565b3415611bc657600061155e8234611e27565b905080156115f057604051600090339083908381818185875af1925050503d80600081146115a8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ad565b606091505b50509050806115ee5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016105b8565b505b600060647f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b0316634f029c396040518163ffffffff1660e01b815260040160206040518083038186803b15801561164d57600080fd5b505afa158015611661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116859190611e0e565b61168f9085611fda565b6116999190611fc6565b905080156117d25760007f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b0316633949f9066040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fc57600080fd5b505afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117349190611e68565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811461177e576040519150601f19603f3d011682016040523d82523d6000602084013e611783565b606091505b50509050806117d05760405162461bcd60e51b8152602060048201526019602482015278119bdd5b99185d1a5bdb881c185e5b595b9d0819985a5b1959603a1b60448201526064016105b8565b505b60006117de8285611e27565b90506000807f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b031663cc74234b886040518263ffffffff1660e01b815260040161183191815260200190565b60206040518083038186803b15801561184957600080fd5b505afa15801561185d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118819190611e0e565b1115611a775760405163cc74234b60e01b8152600481018790526064907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063cc74234b9060240160206040518083038186803b1580156118ea57600080fd5b505afa1580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119229190611e0e565b61192c9084611fda565b6119369190611fc6565b90508015611a7757604051636bd8225b60e11b8152600481018790526000907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063d7b044b69060240160206040518083038186803b1580156119a157600080fd5b505afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d99190611e68565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b5050905080611a755760405162461bcd60e51b81526020600482015260196024820152781059191a5d1a5bdb985b081c185e5b595b9d0819985a5b1959603a1b60448201526064016105b8565b505b6000611a838284611e27565b90508015611bc05760405163a47d29cb60e01b8152600481018890526000907f000000000000000000000000a7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd2706001600160a01b03169063a47d29cb9060240160206040518083038186803b158015611aee57600080fd5b505afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190611e68565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b70576040519150601f19603f3d011682016040523d82523d6000602084013e611b75565b606091505b5050905080611bbe5760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016105b8565b505b50505050505b5050565b60008060408385031215611bdd57600080fd5b82359150602083013560ff81168114611bf557600080fd5b809150509250929050565b600060208284031215611c1257600080fd5b5035919050565b6001600160a01b0381168114611c2e57600080fd5b50565b60008060408385031215611c4457600080fd5b8235611c4f81611c19565b946020939093013593505050565b60005b83811015611c78578181015183820152602001611c60565b83811115611c87576000848401525b50505050565b60008151808452611ca5816020860160208601611c5d565b601f01601f19169290920160200192915050565b8415158152836020820152608060408201526000611cda6080830185611c8d565b905060018060a01b038316606083015295945050505050565b6001600160a01b0391909116815260200190565b60008060408385031215611d1a57600080fd5b50508035926020909101359150565b600080600080600060a08688031215611d4157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602081526000611d776020830184611c8d565b9392505050565b80518015158114611d8e57600080fd5b919050565b600060208284031215611da557600080fd5b611d7782611d7e565b60208082526015908201527413db9b1e4810dbdc99481dda1a5d195b1a5cdd1959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611e0757611e07611ddd565b5060010190565b600060208284031215611e2057600080fd5b5051919050565b600082821015611e3957611e39611ddd565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e6357611e63611e3e565b500690565b600060208284031215611e7a57600080fd5b8151611d7781611c19565b8051611d8e81611c19565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060008060006101208a8c031215611ec557600080fd5b8951611ed081611c19565b8099505060208a0151975060408a0151965060608a01519550611ef560808b01611d7e565b945060a08a0151611f0581611c19565b60c08b015160e08c0151919550935067ffffffffffffffff80821115611f2a57600080fd5b818c0191508c601f830112611f3e57600080fd5b815181811115611f5057611f50611e90565b604051601f8201601f19908116603f01168101908382118183101715611f7857611f78611e90565b816040528281528f6020848701011115611f9157600080fd5b611fa2836020830160208801611c5d565b8096505050505050611fb76101008b01611e85565b90509295985092959850929598565b600082611fd557611fd5611e3e565b500490565b6000816000190483118215151615611ff457611ff4611ddd565b50029056fea264697066735822122057a128f9d72b71b7aecf1ae9c8d3d362b8b755866fbb93494e359725a9e40bbf64736f6c63430008090033
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
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.