Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 48 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 17076991 | 451 days ago | IN | 0 ETH | 0.00174046 | ||||
Withdraw Auction... | 16134854 | 583 days ago | IN | 0 ETH | 0.0021051 | ||||
Create New Nft A... | 16072349 | 592 days ago | IN | 0 ETH | 0.00155359 | ||||
Create New Nft A... | 16072349 | 592 days ago | IN | 0 ETH | 0.00180451 | ||||
Take Highest Bid... | 14825264 | 782 days ago | IN | 0 ETH | 0.00353046 | ||||
Take Highest Bid... | 14825253 | 782 days ago | IN | 0 ETH | 0.05341602 | ||||
Make Bid | 14825157 | 782 days ago | IN | 0.915 ETH | 0.00113368 | ||||
Make Bid | 14825144 | 782 days ago | IN | 0.9 ETH | 0.00083872 | ||||
Make Bid | 14825112 | 782 days ago | IN | 0.8585 ETH | 0.0008555 | ||||
Make Bid | 14825090 | 782 days ago | IN | 0.75 ETH | 0.00040023 | ||||
Make Bid | 14825073 | 782 days ago | IN | 0.505 ETH | 0.00072028 | ||||
Make Bid | 14825072 | 782 days ago | IN | 0.85 ETH | 0.0007117 | ||||
Make Bid | 14825067 | 782 days ago | IN | 0.82 ETH | 0.00069289 | ||||
Make Bid | 14825065 | 782 days ago | IN | 0.5 ETH | 0.00066992 | ||||
Make Bid | 14825061 | 782 days ago | IN | 0.505 ETH | 0.00072421 | ||||
Make Bid | 14825045 | 782 days ago | IN | 0.505 ETH | 0.00094143 | ||||
Make Bid | 14825021 | 782 days ago | IN | 0.8 ETH | 0.00055755 | ||||
Make Bid | 14824979 | 782 days ago | IN | 0.7575 ETH | 0.00058682 | ||||
Make Bid | 14824973 | 782 days ago | IN | 0.6 ETH | 0.00074644 | ||||
Make Bid | 14824884 | 782 days ago | IN | 0.52 ETH | 0.00085039 | ||||
Make Bid | 14824842 | 782 days ago | IN | 0.5 ETH | 0.00149254 | ||||
Make Bid | 14824833 | 782 days ago | IN | 0.6 ETH | 0.00142232 | ||||
Make Bid | 14824748 | 782 days ago | IN | 0.5 ETH | 0.00133072 | ||||
Make Bid | 14824660 | 782 days ago | IN | 0.75 ETH | 0.00121369 | ||||
Make Bid | 14824645 | 782 days ago | IN | 0.606 ETH | 0.00121397 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14825253 | 782 days ago | 0.6 ETH | ||||
14825253 | 782 days ago | 0.6 ETH | ||||
14825253 | 782 days ago | 0.6 ETH | ||||
14825253 | 782 days ago | 0.6 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.915 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.606 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.505 ETH | ||||
14825253 | 782 days ago | 0.52 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.505 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.6 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.6 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.5 ETH | ||||
14825253 | 782 days ago | 0.505 ETH | ||||
14825157 | 782 days ago | 0.9 ETH | ||||
14825144 | 782 days ago | 0.8585 ETH |
Loading...
Loading
Contract Name:
NFTAuctionV2
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicense // moved from https://github.com/museum-of-war/auction pragma solidity 0.8.13; import "IERC721.sol"; import "Ownable.sol"; import "IWithBalance.sol"; /// @title An Auction Contract for bidding single NFTs (modified contract of Avo Labs GmbH) /// @notice This contract can be used for auctioning any NFTs contract NFTAuctionV2 is Ownable { address[] public whitelistedPassCollections; //Only owners of tokens from any of these collections can make bids if is onlyWhitelisted mapping(address => mapping(uint256 => Auction)) public nftContractAuctions; mapping(address => uint256) failedTransferCredits; //Each Auction is unique to each NFT (contract + id pairing). struct Auction { //map token ID to uint32 bidIncreasePercentage; uint32 auctionBidPeriod; //Increments the length of time the auction is open in which a new bid can be made after each bid. uint64 auctionStart; uint64 auctionEnd; uint128 minPrice; uint128 nftHighestBid; address nftHighestBidder; address feeRecipient; bool onlyWhitelisted; // if true, than only owners of whitelistedPassCollections can make bids } /* * Default values that are used if not specified by the NFT seller. */ uint32 public constant defaultBidIncreasePercentage = 100; // 1.00% uint32 public constant defaultAuctionBidPeriod = 43200; //12 hours /*╔═════════════════════════════╗ ║ EVENTS ║ ╚═════════════════════════════╝*/ event NftAuctionCreated( address indexed nftContractAddress, uint256 indexed tokenId, uint128 minPrice, uint64 auctionStart, uint64 auctionEnd, uint32 auctionBidPeriod, uint32 bidIncreasePercentage, address feeRecipient, bool onlyWhitelisted ); event BidMade( address indexed nftContractAddress, uint256 indexed tokenId, address bidder, uint256 ethAmount ); event AuctionPeriodUpdated( address indexed nftContractAddress, uint256 indexed tokenId, uint64 auctionEndPeriod ); event NFTTransferredAndSellerPaid( address indexed nftContractAddress, uint256 indexed tokenId, uint128 nftHighestBid, address nftHighestBidder ); event AuctionSettled( address indexed nftContractAddress, uint256 indexed tokenId ); event AuctionWithdrawn( address indexed nftContractAddress, uint256 indexed tokenId ); event HighestBidTaken(address indexed nftContractAddress, uint256 indexed tokenId); /**********************************/ /*╔═════════════════════════════╗ ║ END ║ ║ EVENTS ║ ╚═════════════════════════════╝*/ /**********************************/ /*╔═════════════════════════════╗ ║ MODIFIERS ║ ╚═════════════════════════════╝*/ modifier needWhitelistedToken(address _nftContractAddress, uint256 _tokenId) { if (nftContractAuctions[_nftContractAddress][_tokenId].onlyWhitelisted) { bool isWhitelisted; for (uint256 i = 0; i < whitelistedPassCollections.length; i++) { if(IWithBalance(whitelistedPassCollections[i]).balanceOf(msg.sender) > 0) { isWhitelisted = true; break; } } require(isWhitelisted, "Sender has no whitelisted NFTs"); } _; } modifier auctionOngoing(address _nftContractAddress, uint256 _tokenId) { require( _isAuctionStarted(_nftContractAddress, _tokenId), "Auction has not started" ); require( _isAuctionOngoing(_nftContractAddress, _tokenId), "Auction has ended" ); _; } /* * The bid amount must be higher than the previous * bid by the specified bid increase percentage. */ modifier bidAmountMeetsBidRequirements( address _nftContractAddress, uint256 _tokenId ) { require( _doesBidMeetBidRequirements( _nftContractAddress, _tokenId ), "Not enough funds to bid on NFT" ); _; } modifier notZeroAddress(address _address) { require(_address != address(0), "Cannot specify 0 address"); _; } /**********************************/ /*╔═════════════════════════════╗ ║ END ║ ║ MODIFIERS ║ ╚═════════════════════════════╝*/ /**********************************/ // constructor constructor(address[] memory _whitelistedPassCollectionsAddresses) { uint256 collectionsCount = _whitelistedPassCollectionsAddresses.length; for (uint256 i = 0; i < collectionsCount; i++) { whitelistedPassCollections.push(_whitelistedPassCollectionsAddresses[i]); } } /**********************************/ /*╔══════════════════════════════╗ ║ WHITELIST FUNCTIONS ║ ╚══════════════════════════════╝*/ /* * Add whitelisted pass collection. */ function addWhitelistedCollection(address _collectionContractAddress) external onlyOwner { whitelistedPassCollections.push(_collectionContractAddress); } /* * Remove whitelisted pass collection by index. */ function removeWhitelistedCollection(uint256 index) external onlyOwner { whitelistedPassCollections[index] = whitelistedPassCollections[whitelistedPassCollections.length - 1]; whitelistedPassCollections.pop(); } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ WHITELIST FUNCTIONS ║ ╚══════════════════════════════╝*/ /**********************************/ /*╔══════════════════════════════╗ ║ AUCTION CHECK FUNCTIONS ║ ╚══════════════════════════════╝*/ function _isAuctionStarted(address _nftContractAddress, uint256 _tokenId) internal view returns (bool) { uint64 auctionStartTimestamp = nftContractAuctions[_nftContractAddress][ _tokenId ].auctionStart; return (block.timestamp >= auctionStartTimestamp); } function _isAuctionOngoing(address _nftContractAddress, uint256 _tokenId) internal view returns (bool) { uint64 auctionEndTimestamp = nftContractAuctions[_nftContractAddress][_tokenId].auctionEnd; //if the auctionEnd is set to 0, the auction is technically on-going, however //the minimum bid price (minPrice) has not yet been met. return (auctionEndTimestamp == 0 || block.timestamp < auctionEndTimestamp); } /* * Check that a bid is applicable for the purchase of the NFT. * The bid needs to be a % higher than the previous bid. */ function _doesBidMeetBidRequirements( address _nftContractAddress, uint256 _tokenId ) internal view returns (bool) { uint256 highestBid = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBid; if (highestBid > 0) { //if the NFT is up for auction, the bid needs to be a % higher than the previous bid uint256 bidIncreaseAmount = (highestBid * (10000 + _getBidIncreasePercentage(_nftContractAddress, _tokenId))) / 10000; return msg.value >= bidIncreaseAmount; } else { return msg.value >= nftContractAuctions[_nftContractAddress][_tokenId].minPrice; } } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ AUCTION CHECK FUNCTIONS ║ ╚══════════════════════════════╝*/ /**********************************/ /*╔══════════════════════════════╗ ║ DEFAULT GETTER FUNCTIONS ║ ╚══════════════════════════════╝*/ /***************************************************************** * These functions check if the applicable auction parameter has * * been set by the NFT seller. If not, return the default value. * *****************************************************************/ function _getBidIncreasePercentage( address _nftContractAddress, uint256 _tokenId ) internal view returns (uint32) { uint32 bidIncreasePercentage = nftContractAuctions[_nftContractAddress][ _tokenId ].bidIncreasePercentage; if (bidIncreasePercentage == 0) { return defaultBidIncreasePercentage; } else { return bidIncreasePercentage; } } function _getAuctionBidPeriod(address _nftContractAddress, uint256 _tokenId) internal view returns (uint32) { uint32 auctionBidPeriod = nftContractAuctions[_nftContractAddress][_tokenId].auctionBidPeriod; if (auctionBidPeriod == 0) { return defaultAuctionBidPeriod; } else { return auctionBidPeriod; } } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ DEFAULT GETTER FUNCTIONS ║ ╚══════════════════════════════╝*/ /**********************************/ /*╔══════════════════════════════╗ ║ AUCTION CREATION ║ ╚══════════════════════════════╝*/ function createNewNftAuctions( address _nftContractAddress, uint256[] memory _tokenIds, uint32 _bidIncreasePercentage, uint32 _auctionBidPeriod, uint64 _auctionStart, uint64 _auctionEnd, uint128 _minPrice, address _feeRecipient, bool _onlyWhitelisted ) external onlyOwner notZeroAddress(_feeRecipient) { require(_auctionEnd >= _auctionStart, "Auction end must be after the start"); for (uint256 i = 0; i < _tokenIds.length; i++) { uint256 _tokenId = _tokenIds[i]; require( nftContractAuctions[_nftContractAddress][_tokenId].feeRecipient == address(0), "Auction is already created" ); Auction memory auction; // creating auction auction.bidIncreasePercentage = _bidIncreasePercentage; auction.auctionBidPeriod = _auctionBidPeriod; auction.auctionStart = _auctionStart; auction.auctionEnd = _auctionEnd; auction.minPrice = _minPrice; auction.feeRecipient = _feeRecipient; auction.onlyWhitelisted = _onlyWhitelisted; nftContractAuctions[_nftContractAddress][_tokenId] = auction; // Sending the NFT to this contract if (IERC721(_nftContractAddress).ownerOf(_tokenId) == msg.sender) { IERC721(_nftContractAddress).transferFrom( msg.sender, address(this), _tokenId ); } require( IERC721(_nftContractAddress).ownerOf(_tokenId) == address(this), "NFT transfer failed" ); uint32 _selectedAuctionBidPeriod = _auctionBidPeriod > 0 ? _auctionBidPeriod : defaultAuctionBidPeriod; uint32 _selectedBidIncreasePercentage = _bidIncreasePercentage > 0 ? _bidIncreasePercentage : defaultBidIncreasePercentage; emit NftAuctionCreated( _nftContractAddress, _tokenId, _minPrice, _auctionStart, _auctionEnd, _selectedAuctionBidPeriod, _selectedBidIncreasePercentage, _feeRecipient, _onlyWhitelisted ); } } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ AUCTION CREATION ║ ╚══════════════════════════════╝*/ /**********************************/ /*╔═════════════════════════════╗ ║ BID FUNCTIONS ║ ╚═════════════════════════════╝*/ /******************************************************************** * Make bids with ETH. * ********************************************************************/ function makeBid( address _nftContractAddress, uint256 _tokenId ) external payable auctionOngoing(_nftContractAddress, _tokenId) needWhitelistedToken( _nftContractAddress, _tokenId ) bidAmountMeetsBidRequirements( _nftContractAddress, _tokenId ) { require(msg.sender == tx.origin, "Sender must be a wallet"); require( nftContractAuctions[_nftContractAddress][_tokenId].feeRecipient != address(0), "Auction does not exist" ); // Reverse previous bid and update highest bid: address prevNftHighestBidder = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBidder; uint256 prevNftHighestBid = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBid; // update highest bid nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBid = uint128(msg.value); nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBidder = msg.sender; if (prevNftHighestBidder != address(0)) { // payout if needed _payout(prevNftHighestBidder, prevNftHighestBid); } emit BidMade( _nftContractAddress, _tokenId, msg.sender, msg.value ); // Update auction end if needed: //the auction end is set to now + the bid period if it is greater than the previous one uint64 newEnd = _getAuctionBidPeriod(_nftContractAddress, _tokenId) + uint64(block.timestamp); if (newEnd > nftContractAuctions[_nftContractAddress][_tokenId].auctionEnd) { nftContractAuctions[_nftContractAddress][_tokenId].auctionEnd = newEnd; emit AuctionPeriodUpdated( _nftContractAddress, _tokenId, nftContractAuctions[_nftContractAddress][_tokenId].auctionEnd ); } } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ BID FUNCTIONS ║ ╚══════════════════════════════╝*/ /**********************************/ /*╔══════════════════════════════╗ ║ TRANSFER NFT & PAY SELLER ║ ╚══════════════════════════════╝*/ function _transferNftAndPaySeller( address _nftContractAddress, uint256 _tokenId ) internal { address _feeRecipient = nftContractAuctions[_nftContractAddress][_tokenId].feeRecipient; address _nftHighestBidder = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBidder; uint128 _nftHighestBid = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBid; nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBidder = address(0); nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBid = 0; _payout(_feeRecipient, _nftHighestBid); IERC721(_nftContractAddress).transferFrom( address(this), _nftHighestBidder, _tokenId ); delete nftContractAuctions[_nftContractAddress][_tokenId]; emit NFTTransferredAndSellerPaid( _nftContractAddress, _tokenId, _nftHighestBid, _nftHighestBidder ); } function _payout(address _recipient, uint256 _amount) internal { // attempt to send the funds to the recipient (bool success, ) = payable(_recipient).call{ value: _amount, gas: 20000 }(""); // if it failed, update their credit balance so they can pull it later if (!success) failedTransferCredits[_recipient] = failedTransferCredits[_recipient] + _amount; } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ TRANSFER NFT & PAY SELLER ║ ╚══════════════════════════════╝*/ /**********************************/ /*╔══════════════════════════════╗ ║ SETTLE & WITHDRAW ║ ╚══════════════════════════════╝*/ function settleAuctions(address _nftContractAddress, uint256[] memory _tokenIds) external { for (uint256 i = 0; i < _tokenIds.length; i++) { uint256 _tokenId = _tokenIds[i]; address _nftHighestBidder = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBidder; if (!_isAuctionOngoing(_nftContractAddress, _tokenId) && _nftHighestBidder != address(0)) { _transferNftAndPaySeller(_nftContractAddress, _tokenId); emit AuctionSettled(_nftContractAddress, _tokenId); } } } function withdrawAuctions(address _nftContractAddress, uint256[] memory _tokenIds) external onlyOwner { for (uint256 i = 0; i < _tokenIds.length; i++) { uint256 _tokenId = _tokenIds[i]; address _nftHighestBidder = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBidder; if (_nftHighestBidder != address(0)) { uint128 _nftHighestBid = nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBid; _payout(_nftHighestBidder, _nftHighestBid); } delete nftContractAuctions[_nftContractAddress][_tokenId]; IERC721(_nftContractAddress).transferFrom( address(this), owner(), _tokenId ); emit AuctionWithdrawn(_nftContractAddress, _tokenId); } } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ SETTLE & WITHDRAW ║ ╚══════════════════════════════╝*/ /**********************************/ /*╔══════════════════════════════╗ ║ UPDATE AUCTION ║ ╚══════════════════════════════╝*/ /* * The NFT seller can opt to end an auction by taking the current highest bid. */ function takeHighestBids(address _nftContractAddress, uint256[] memory _tokenIds) external onlyOwner { for (uint256 i = 0; i < _tokenIds.length; i++) { uint256 _tokenId = _tokenIds[i]; if (nftContractAuctions[_nftContractAddress][_tokenId].nftHighestBid > 0) { _transferNftAndPaySeller(_nftContractAddress, _tokenId); emit HighestBidTaken(_nftContractAddress, _tokenId); } else { IERC721(_nftContractAddress).transferFrom( address(this), msg.sender, _tokenId ); delete nftContractAuctions[_nftContractAddress][_tokenId]; } } } /* * If the transfer of a bid has failed, allow to reclaim amount later. */ function withdrawAllFailedCreditsOf(address recipient) external { uint256 amount = failedTransferCredits[recipient]; require(amount != 0, "no credits to withdraw"); failedTransferCredits[recipient] = 0; (bool successfulWithdraw, ) = recipient.call{ value: amount, gas: 20000 }(""); require(successfulWithdraw, "withdraw failed"); } /**********************************/ /*╔══════════════════════════════╗ ║ END ║ ║ UPDATE AUCTION ║ ╚══════════════════════════════╝*/ /**********************************/ }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IWithBalance { function balanceOf(address owner) external view returns (uint256); }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "NFTAuctionV2.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"_whitelistedPassCollectionsAddresses","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"auctionEndPeriod","type":"uint64"}],"name":"AuctionPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"AuctionSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"AuctionWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"bidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"BidMade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"HighestBidTaken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"nftHighestBid","type":"uint128"},{"indexed":false,"internalType":"address","name":"nftHighestBidder","type":"address"}],"name":"NFTTransferredAndSellerPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"minPrice","type":"uint128"},{"indexed":false,"internalType":"uint64","name":"auctionStart","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"auctionEnd","type":"uint64"},{"indexed":false,"internalType":"uint32","name":"auctionBidPeriod","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"bidIncreasePercentage","type":"uint32"},{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"},{"indexed":false,"internalType":"bool","name":"onlyWhitelisted","type":"bool"}],"name":"NftAuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_collectionContractAddress","type":"address"}],"name":"addWhitelistedCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint32","name":"_bidIncreasePercentage","type":"uint32"},{"internalType":"uint32","name":"_auctionBidPeriod","type":"uint32"},{"internalType":"uint64","name":"_auctionStart","type":"uint64"},{"internalType":"uint64","name":"_auctionEnd","type":"uint64"},{"internalType":"uint128","name":"_minPrice","type":"uint128"},{"internalType":"address","name":"_feeRecipient","type":"address"},{"internalType":"bool","name":"_onlyWhitelisted","type":"bool"}],"name":"createNewNftAuctions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultAuctionBidPeriod","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultBidIncreasePercentage","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"makeBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nftContractAuctions","outputs":[{"internalType":"uint32","name":"bidIncreasePercentage","type":"uint32"},{"internalType":"uint32","name":"auctionBidPeriod","type":"uint32"},{"internalType":"uint64","name":"auctionStart","type":"uint64"},{"internalType":"uint64","name":"auctionEnd","type":"uint64"},{"internalType":"uint128","name":"minPrice","type":"uint128"},{"internalType":"uint128","name":"nftHighestBid","type":"uint128"},{"internalType":"address","name":"nftHighestBidder","type":"address"},{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"bool","name":"onlyWhitelisted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeWhitelistedCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"settleAuctions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"takeHighestBids","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedPassCollections","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawAllFailedCreditsOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"withdrawAuctions","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620022a9380380620022a9833981016040819052620000349162000126565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350805160005b81811015620000ea5760018382815181106200009a576200009a620001f8565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905580620000e1816200020e565b9150506200007a565b50505062000236565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200012157600080fd5b919050565b600060208083850312156200013a57600080fd5b82516001600160401b03808211156200015257600080fd5b818501915085601f8301126200016757600080fd5b8151818111156200017c576200017c620000f3565b8060051b604051601f19603f83011681018181108582111715620001a457620001a4620000f3565b604052918252848201925083810185019188831115620001c357600080fd5b938501935b82851015620001ec57620001dc8562000109565b84529385019392850192620001c8565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200022f57634e487b7160e01b600052601160045260246000fd5b5060010190565b61206380620002466000396000f3fe6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063c8851b3411610059578063c8851b3414610348578063d18e629c14610368578063db22733814610388578063f2fde38b146103a857600080fd5b80638da5cb5b146102ce57806399157d70146103005780639c0b996614610320578063bc24555a1461033557600080fd5b8063186779d5116100c6578063186779d51461024e57806337e0e65a1461027957806350e0099314610299578063715018a6146102b957600080fd5b8063041fa0b8146100ed5780630bf887b51461020c5780631745f5621461022e575b600080fd5b3480156100f957600080fd5b50610198610108366004611c14565b60026020818152600093845260408085209091529183529120805460018201549282015460039092015463ffffffff808316946401000000008404909116936001600160401b03600160401b8504811694600160801b90819004909116936001600160801b038085169492909204909116916001600160a01b03908116919081169060ff600160a01b9091041689565b6040805163ffffffff9a8b1681529990981660208a01526001600160401b03968716978901979097529490931660608701526001600160801b0391821660808701521660a08501526001600160a01b0390811660c08501521660e08301521515610100820152610120015b60405180910390f35b34801561021857600080fd5b5061022c610227366004611cf0565b6103c8565b005b34801561023a57600080fd5b5061022c610249366004611cf0565b6105ae565b34801561025a57600080fd5b5061026461a8c081565b60405163ffffffff9091168152602001610203565b34801561028557600080fd5b5061022c610294366004611cf0565b61067f565b3480156102a557600080fd5b5061022c6102b4366004611d7a565b610828565b3480156102c557600080fd5b5061022c610f0f565b3480156102da57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610203565b34801561030c57600080fd5b506102e861031b366004611e4c565b610f83565b34801561032c57600080fd5b50610264606481565b61022c610343366004611c14565b610fad565b34801561035457600080fd5b5061022c610363366004611e65565b6114f7565b34801561037457600080fd5b5061022c610383366004611e65565b611600565b34801561039457600080fd5b5061022c6103a3366004611e4c565b61167b565b3480156103b457600080fd5b5061022c6103c3366004611e65565b611754565b6000546001600160a01b031633146103fb5760405162461bcd60e51b81526004016103f290611e89565b60405180910390fd5b60005b81518110156105a957600082828151811061041b5761041b611ebe565b6020908102919091018101516001600160a01b038087166000908152600280855260408083208584529095529390209092015490925016801561049b576001600160a01b0385166000908152600260209081526040808320858452909152902060010154600160801b90046001600160801b0316610499828261183e565b505b6001600160a01b0385166000818152600260208181526040808420878552909152822080546001600160c01b03191681556001810192909255810180546001600160a01b031916905560030180546001600160a81b03191690556323b872dd3061050d6000546001600160a01b031690565b856040518463ffffffff1660e01b815260040161052c93929190611ed4565b600060405180830381600087803b15801561054657600080fd5b505af115801561055a573d6000803e3d6000fd5b50506040518492506001600160a01b03881691507f146396cb59c5f73907e921d01adbf3628c2943d8a544dc508f718a6d614f0b2790600090a3505080806105a190611f0e565b9150506103fe565b505050565b60005b81518110156105a95760008282815181106105ce576105ce611ebe565b6020908102919091018101516001600160a01b03808716600090815260028085526040808320858452909552939020909201549092501661060f85836118e0565b15801561062457506001600160a01b03811615155b1561066a576106338583611933565b60405182906001600160a01b038716907f15bff754355d68fa38fb3ca8459829a807947cbf186c0f47d283d8dbbfcad56890600090a35b5050808061067790611f0e565b9150506105b1565b6000546001600160a01b031633146106a95760405162461bcd60e51b81526004016103f290611e89565b60005b81518110156105a95760008282815181106106c9576106c9611ebe565b6020908102919091018101516001600160a01b03861660009081526002835260408082208383529093529190912060010154909150600160801b90046001600160801b0316156107585761071d8482611933565b60405181906001600160a01b038616907f711f4eae05533b90c24ff0ae762d6e9e1ef1b2c85d4c484a2913c5201bcbb7c990600090a3610815565b6040516323b872dd60e01b81526001600160a01b038516906323b872dd9061078890309033908690600401611ed4565b600060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b5050506001600160a01b0385166000908152600260208181526040808420868552909152822080546001600160c01b03191681556001810192909255810180546001600160a01b031916905560030180546001600160a81b0319169055505b508061082081611f0e565b9150506106ac565b6000546001600160a01b031633146108525760405162461bcd60e51b81526004016103f290611e89565b816001600160a01b0381166108a95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207370656369667920302061646472657373000000000000000060448201526064016103f2565b856001600160401b0316856001600160401b031610156109175760405162461bcd60e51b815260206004820152602360248201527f41756374696f6e20656e64206d75737420626520616674657220746865207374604482015262185c9d60ea1b60648201526084016103f2565b60005b8951811015610f025760008a828151811061093757610937611ebe565b6020908102919091018101516001600160a01b038e81166000908152600284526040808220848352909452929092206003015490925016156109bb5760405162461bcd60e51b815260206004820152601a60248201527f41756374696f6e20697320616c7265616479206372656174656400000000000060448201526064016103f2565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091528a816000019063ffffffff16908163ffffffff168152505089816020019063ffffffff16908163ffffffff16815250508881604001906001600160401b031690816001600160401b0316815250508781606001906001600160401b031690816001600160401b0316815250508681608001906001600160801b031690816001600160801b031681525050858160e001906001600160a01b031690816001600160a01b031681525050848161010001901515908115158152505080600260008f6001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160030160146101000a81548160ff021916908315150217905550905050336001600160a01b03168d6001600160a01b0316636352211e846040518263ffffffff1660e01b8152600401610cac91815260200190565b602060405180830381865afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190611f27565b6001600160a01b031603610d5e576040516323b872dd60e01b81526001600160a01b038e16906323b872dd90610d2b90339030908790600401611ed4565b600060405180830381600087803b158015610d4557600080fd5b505af1158015610d59573d6000803e3d6000fd5b505050505b6040516331a9108f60e11b81526004810183905230906001600160a01b038f1690636352211e90602401602060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190611f27565b6001600160a01b031614610e155760405162461bcd60e51b8152602060048201526013602482015272139195081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016103f2565b6000808b63ffffffff1611610e2c5761a8c0610e2e565b8a5b90506000808d63ffffffff1611610e46576064610e48565b8c5b9050838f6001600160a01b03167fb419aad1f24f6233e4ef307a8f5fd598f7c9799a27b443726847f4a37b1b083d8b8e8e87878f8f604051610ee397969594939291906001600160801b039790971687526001600160401b03958616602088015293909416604086015263ffffffff91821660608601521660808401526001600160a01b039190911660a0830152151560c082015260e00190565b60405180910390a3505050508080610efa90611f0e565b91505061091a565b5050505050505050505050565b6000546001600160a01b03163314610f395760405162461bcd60e51b81526004016103f290611e89565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60018181548110610f9357600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038216600090815260026020908152604080832084845290915290205482908290600160401b90046001600160401b03164210156110345760405162461bcd60e51b815260206004820152601760248201527f41756374696f6e20686173206e6f74207374617274656400000000000000000060448201526064016103f2565b61103e82826118e0565b61107e5760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b60448201526064016103f2565b6001600160a01b038416600090815260026020908152604080832086845290915290206003015484908490600160a01b900460ff16156111c1576000805b600154811015611171576000600182815481106110db576110db611ebe565b6000918252602090912001546040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111509190611f44565b111561115f5760019150611171565b8061116981611f0e565b9150506110bc565b50806111bf5760405162461bcd60e51b815260206004820152601e60248201527f53656e64657220686173206e6f2077686974656c6973746564204e465473000060448201526064016103f2565b505b85856111cd8282611aad565b6112195760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420656e6f7567682066756e647320746f20626964206f6e204e4654000060448201526064016103f2565b3332146112685760405162461bcd60e51b815260206004820152601760248201527f53656e646572206d75737420626520612077616c6c657400000000000000000060448201526064016103f2565b6001600160a01b0388811660009081526002602090815260408083208b8452909152902060030154166112d65760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103f2565b6001600160a01b0388811660009081526002602081815260408084208c8552909152909120908101805460019092018054346001600160801b03908116600160801b908102828416179093556001600160a01b031985163317909355929093169290910416811561134b5761134b828261183e565b604080513381523460208201528a916001600160a01b038d16917fedaf6d9c1d6c948b723fe76f06024d095fe2026b77ed16e2ec4987432cddeec4910160405180910390a360004261139d8c8c611b66565b63ffffffff166113ad9190611f5d565b6001600160a01b038c1660009081526002602090815260408083208e84529091529020549091506001600160401b03600160801b90910481169082161115610f025780600260008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060000160106101000a8154816001600160401b0302191690836001600160401b03160217905550898b6001600160a01b03167fc1ce6cc1337b95ed3c849e00bffc0d93e89e5e80cc5d198db838140827ac7594600260008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060000160109054906101000a90046001600160401b03166040516114e291906001600160401b0391909116815260200190565b60405180910390a35050505050505050505050565b6001600160a01b038116600090815260036020526040812054908190036115595760405162461bcd60e51b81526020600482015260166024820152756e6f206372656469747320746f20776974686472617760501b60448201526064016103f2565b6001600160a01b03821660008181526003602052604080822082905551909190614e2090849084818181858888f193505050503d80600081146115b8576040519150601f19603f3d011682016040523d82523d6000602084013e6115bd565b606091505b50509050806105a95760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b60448201526064016103f2565b6000546001600160a01b0316331461162a5760405162461bcd60e51b81526004016103f290611e89565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116a55760405162461bcd60e51b81526004016103f290611e89565b600180546116b4908290611f88565b815481106116c4576116c4611ebe565b600091825260209091200154600180546001600160a01b0390921691839081106116f0576116f0611ebe565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061172f5761172f611f9f565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000546001600160a01b0316331461177e5760405162461bcd60e51b81526004016103f290611e89565b6001600160a01b0381166117e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826001600160a01b031682614e2090604051600060405180830381858888f193505050503d8060008114611890576040519150601f19603f3d011682016040523d82523d6000602084013e611895565b606091505b50509050806105a9576001600160a01b0383166000908152600360205260409020546118c2908390611fb5565b6001600160a01b038416600090815260036020526040902055505050565b6001600160a01b0382166000908152600260209081526040808320848452909152812054600160801b90046001600160401b03168015806119295750806001600160401b031642105b9150505b92915050565b6001600160a01b03828116600090815260026020818152604080842086855290915290912060038101549181018054600190920180546001600160a01b031984169092556001600160801b03808316909155928416939190911691600160801b909104166119a1838261183e565b6040516323b872dd60e01b81526001600160a01b038616906323b872dd906119d190309086908990600401611ed4565b600060405180830381600087803b1580156119eb57600080fd5b505af11580156119ff573d6000803e3d6000fd5b505050506001600160a01b0385811660008181526002602081815260408084208a8552825280842080546001600160c01b0319168155600181019490945591830180546001600160a01b0319169055600390920180546001600160a81b031916905580516001600160801b03861681529386169184019190915286927fc5e48a17a7245813e7f1ccab1ea6219ea94e5df804724348cdcc938abeb169a5910160405180910390a35050505050565b6001600160a01b0382166000908152600260209081526040808320848452909152812060010154600160801b90046001600160801b03168015611b2c576000612710611af98686611bb1565b611b0590612710611fcd565b611b159063ffffffff1684611fec565b611b1f919061200b565b341015925061192d915050565b50506001600160a01b03821660009081526002602090815260408083208484529091529020600101546001600160801b031634101561192d565b6001600160a01b0382166000908152600260209081526040808320848452909152812054640100000000900463ffffffff16808203611baa5761a8c091505061192d565b905061192d565b6001600160a01b038216600090815260026020908152604080832084845290915281205463ffffffff16808203611baa57606491505061192d565b6001600160a01b0381168114611c0157600080fd5b50565b8035611c0f81611bec565b919050565b60008060408385031215611c2757600080fd5b8235611c3281611bec565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c6757600080fd5b813560206001600160401b0380831115611c8357611c83611c40565b8260051b604051601f19603f83011681018181108482111715611ca857611ca8611c40565b604052938452858101830193838101925087851115611cc657600080fd5b83870191505b84821015611ce557813583529183019190830190611ccc565b979650505050505050565b60008060408385031215611d0357600080fd5b8235611d0e81611bec565b915060208301356001600160401b03811115611d2957600080fd5b611d3585828601611c56565b9150509250929050565b803563ffffffff81168114611c0f57600080fd5b80356001600160401b0381168114611c0f57600080fd5b80358015158114611c0f57600080fd5b60008060008060008060008060006101208a8c031215611d9957600080fd5b8935611da481611bec565b985060208a01356001600160401b03811115611dbf57600080fd5b611dcb8c828d01611c56565b985050611dda60408b01611d3f565b9650611de860608b01611d3f565b9550611df660808b01611d53565b9450611e0460a08b01611d53565b935060c08a01356001600160801b0381168114611e2057600080fd5b9250611e2e60e08b01611c04565b9150611e3d6101008b01611d6a565b90509295985092959850929598565b600060208284031215611e5e57600080fd5b5035919050565b600060208284031215611e7757600080fd5b8135611e8281611bec565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b600060018201611f2057611f20611ef8565b5060010190565b600060208284031215611f3957600080fd5b8151611e8281611bec565b600060208284031215611f5657600080fd5b5051919050565b60006001600160401b03808316818516808303821115611f7f57611f7f611ef8565b01949350505050565b600082821015611f9a57611f9a611ef8565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115611fc857611fc8611ef8565b500190565b600063ffffffff808316818516808303821115611f7f57611f7f611ef8565b600081600019048311821515161561200657612006611ef8565b500290565b60008261202857634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212204b42e4e5277b1fefe56c0335770bcda5a6be911c78fd4c718d876ec727b7c70364736f6c634300080d003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000d3228e099e6596988ae0b73eaa62591c875e569300000000000000000000000001f86f668f00ea8d929479edf81c232c1bca8307000000000000000000000000e4ab56ba8e23f0a5fb514b914e259156d50697620000000000000000000000005dc23613fd54a87c3b8a7134534110f5180433c8000000000000000000000000932aeac0eebaa1fe8fdb53c4f81312cba5f771a8
Deployed Bytecode
0x6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063c8851b3411610059578063c8851b3414610348578063d18e629c14610368578063db22733814610388578063f2fde38b146103a857600080fd5b80638da5cb5b146102ce57806399157d70146103005780639c0b996614610320578063bc24555a1461033557600080fd5b8063186779d5116100c6578063186779d51461024e57806337e0e65a1461027957806350e0099314610299578063715018a6146102b957600080fd5b8063041fa0b8146100ed5780630bf887b51461020c5780631745f5621461022e575b600080fd5b3480156100f957600080fd5b50610198610108366004611c14565b60026020818152600093845260408085209091529183529120805460018201549282015460039092015463ffffffff808316946401000000008404909116936001600160401b03600160401b8504811694600160801b90819004909116936001600160801b038085169492909204909116916001600160a01b03908116919081169060ff600160a01b9091041689565b6040805163ffffffff9a8b1681529990981660208a01526001600160401b03968716978901979097529490931660608701526001600160801b0391821660808701521660a08501526001600160a01b0390811660c08501521660e08301521515610100820152610120015b60405180910390f35b34801561021857600080fd5b5061022c610227366004611cf0565b6103c8565b005b34801561023a57600080fd5b5061022c610249366004611cf0565b6105ae565b34801561025a57600080fd5b5061026461a8c081565b60405163ffffffff9091168152602001610203565b34801561028557600080fd5b5061022c610294366004611cf0565b61067f565b3480156102a557600080fd5b5061022c6102b4366004611d7a565b610828565b3480156102c557600080fd5b5061022c610f0f565b3480156102da57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610203565b34801561030c57600080fd5b506102e861031b366004611e4c565b610f83565b34801561032c57600080fd5b50610264606481565b61022c610343366004611c14565b610fad565b34801561035457600080fd5b5061022c610363366004611e65565b6114f7565b34801561037457600080fd5b5061022c610383366004611e65565b611600565b34801561039457600080fd5b5061022c6103a3366004611e4c565b61167b565b3480156103b457600080fd5b5061022c6103c3366004611e65565b611754565b6000546001600160a01b031633146103fb5760405162461bcd60e51b81526004016103f290611e89565b60405180910390fd5b60005b81518110156105a957600082828151811061041b5761041b611ebe565b6020908102919091018101516001600160a01b038087166000908152600280855260408083208584529095529390209092015490925016801561049b576001600160a01b0385166000908152600260209081526040808320858452909152902060010154600160801b90046001600160801b0316610499828261183e565b505b6001600160a01b0385166000818152600260208181526040808420878552909152822080546001600160c01b03191681556001810192909255810180546001600160a01b031916905560030180546001600160a81b03191690556323b872dd3061050d6000546001600160a01b031690565b856040518463ffffffff1660e01b815260040161052c93929190611ed4565b600060405180830381600087803b15801561054657600080fd5b505af115801561055a573d6000803e3d6000fd5b50506040518492506001600160a01b03881691507f146396cb59c5f73907e921d01adbf3628c2943d8a544dc508f718a6d614f0b2790600090a3505080806105a190611f0e565b9150506103fe565b505050565b60005b81518110156105a95760008282815181106105ce576105ce611ebe565b6020908102919091018101516001600160a01b03808716600090815260028085526040808320858452909552939020909201549092501661060f85836118e0565b15801561062457506001600160a01b03811615155b1561066a576106338583611933565b60405182906001600160a01b038716907f15bff754355d68fa38fb3ca8459829a807947cbf186c0f47d283d8dbbfcad56890600090a35b5050808061067790611f0e565b9150506105b1565b6000546001600160a01b031633146106a95760405162461bcd60e51b81526004016103f290611e89565b60005b81518110156105a95760008282815181106106c9576106c9611ebe565b6020908102919091018101516001600160a01b03861660009081526002835260408082208383529093529190912060010154909150600160801b90046001600160801b0316156107585761071d8482611933565b60405181906001600160a01b038616907f711f4eae05533b90c24ff0ae762d6e9e1ef1b2c85d4c484a2913c5201bcbb7c990600090a3610815565b6040516323b872dd60e01b81526001600160a01b038516906323b872dd9061078890309033908690600401611ed4565b600060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b5050506001600160a01b0385166000908152600260208181526040808420868552909152822080546001600160c01b03191681556001810192909255810180546001600160a01b031916905560030180546001600160a81b0319169055505b508061082081611f0e565b9150506106ac565b6000546001600160a01b031633146108525760405162461bcd60e51b81526004016103f290611e89565b816001600160a01b0381166108a95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207370656369667920302061646472657373000000000000000060448201526064016103f2565b856001600160401b0316856001600160401b031610156109175760405162461bcd60e51b815260206004820152602360248201527f41756374696f6e20656e64206d75737420626520616674657220746865207374604482015262185c9d60ea1b60648201526084016103f2565b60005b8951811015610f025760008a828151811061093757610937611ebe565b6020908102919091018101516001600160a01b038e81166000908152600284526040808220848352909452929092206003015490925016156109bb5760405162461bcd60e51b815260206004820152601a60248201527f41756374696f6e20697320616c7265616479206372656174656400000000000060448201526064016103f2565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091528a816000019063ffffffff16908163ffffffff168152505089816020019063ffffffff16908163ffffffff16815250508881604001906001600160401b031690816001600160401b0316815250508781606001906001600160401b031690816001600160401b0316815250508681608001906001600160801b031690816001600160801b031681525050858160e001906001600160a01b031690816001600160a01b031681525050848161010001901515908115158152505080600260008f6001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160030160146101000a81548160ff021916908315150217905550905050336001600160a01b03168d6001600160a01b0316636352211e846040518263ffffffff1660e01b8152600401610cac91815260200190565b602060405180830381865afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190611f27565b6001600160a01b031603610d5e576040516323b872dd60e01b81526001600160a01b038e16906323b872dd90610d2b90339030908790600401611ed4565b600060405180830381600087803b158015610d4557600080fd5b505af1158015610d59573d6000803e3d6000fd5b505050505b6040516331a9108f60e11b81526004810183905230906001600160a01b038f1690636352211e90602401602060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190611f27565b6001600160a01b031614610e155760405162461bcd60e51b8152602060048201526013602482015272139195081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016103f2565b6000808b63ffffffff1611610e2c5761a8c0610e2e565b8a5b90506000808d63ffffffff1611610e46576064610e48565b8c5b9050838f6001600160a01b03167fb419aad1f24f6233e4ef307a8f5fd598f7c9799a27b443726847f4a37b1b083d8b8e8e87878f8f604051610ee397969594939291906001600160801b039790971687526001600160401b03958616602088015293909416604086015263ffffffff91821660608601521660808401526001600160a01b039190911660a0830152151560c082015260e00190565b60405180910390a3505050508080610efa90611f0e565b91505061091a565b5050505050505050505050565b6000546001600160a01b03163314610f395760405162461bcd60e51b81526004016103f290611e89565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60018181548110610f9357600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038216600090815260026020908152604080832084845290915290205482908290600160401b90046001600160401b03164210156110345760405162461bcd60e51b815260206004820152601760248201527f41756374696f6e20686173206e6f74207374617274656400000000000000000060448201526064016103f2565b61103e82826118e0565b61107e5760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b60448201526064016103f2565b6001600160a01b038416600090815260026020908152604080832086845290915290206003015484908490600160a01b900460ff16156111c1576000805b600154811015611171576000600182815481106110db576110db611ebe565b6000918252602090912001546040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111509190611f44565b111561115f5760019150611171565b8061116981611f0e565b9150506110bc565b50806111bf5760405162461bcd60e51b815260206004820152601e60248201527f53656e64657220686173206e6f2077686974656c6973746564204e465473000060448201526064016103f2565b505b85856111cd8282611aad565b6112195760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420656e6f7567682066756e647320746f20626964206f6e204e4654000060448201526064016103f2565b3332146112685760405162461bcd60e51b815260206004820152601760248201527f53656e646572206d75737420626520612077616c6c657400000000000000000060448201526064016103f2565b6001600160a01b0388811660009081526002602090815260408083208b8452909152902060030154166112d65760405162461bcd60e51b8152602060048201526016602482015275105d58dd1a5bdb88191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103f2565b6001600160a01b0388811660009081526002602081815260408084208c8552909152909120908101805460019092018054346001600160801b03908116600160801b908102828416179093556001600160a01b031985163317909355929093169290910416811561134b5761134b828261183e565b604080513381523460208201528a916001600160a01b038d16917fedaf6d9c1d6c948b723fe76f06024d095fe2026b77ed16e2ec4987432cddeec4910160405180910390a360004261139d8c8c611b66565b63ffffffff166113ad9190611f5d565b6001600160a01b038c1660009081526002602090815260408083208e84529091529020549091506001600160401b03600160801b90910481169082161115610f025780600260008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060000160106101000a8154816001600160401b0302191690836001600160401b03160217905550898b6001600160a01b03167fc1ce6cc1337b95ed3c849e00bffc0d93e89e5e80cc5d198db838140827ac7594600260008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060000160109054906101000a90046001600160401b03166040516114e291906001600160401b0391909116815260200190565b60405180910390a35050505050505050505050565b6001600160a01b038116600090815260036020526040812054908190036115595760405162461bcd60e51b81526020600482015260166024820152756e6f206372656469747320746f20776974686472617760501b60448201526064016103f2565b6001600160a01b03821660008181526003602052604080822082905551909190614e2090849084818181858888f193505050503d80600081146115b8576040519150601f19603f3d011682016040523d82523d6000602084013e6115bd565b606091505b50509050806105a95760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b60448201526064016103f2565b6000546001600160a01b0316331461162a5760405162461bcd60e51b81526004016103f290611e89565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116a55760405162461bcd60e51b81526004016103f290611e89565b600180546116b4908290611f88565b815481106116c4576116c4611ebe565b600091825260209091200154600180546001600160a01b0390921691839081106116f0576116f0611ebe565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061172f5761172f611f9f565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000546001600160a01b0316331461177e5760405162461bcd60e51b81526004016103f290611e89565b6001600160a01b0381166117e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826001600160a01b031682614e2090604051600060405180830381858888f193505050503d8060008114611890576040519150601f19603f3d011682016040523d82523d6000602084013e611895565b606091505b50509050806105a9576001600160a01b0383166000908152600360205260409020546118c2908390611fb5565b6001600160a01b038416600090815260036020526040902055505050565b6001600160a01b0382166000908152600260209081526040808320848452909152812054600160801b90046001600160401b03168015806119295750806001600160401b031642105b9150505b92915050565b6001600160a01b03828116600090815260026020818152604080842086855290915290912060038101549181018054600190920180546001600160a01b031984169092556001600160801b03808316909155928416939190911691600160801b909104166119a1838261183e565b6040516323b872dd60e01b81526001600160a01b038616906323b872dd906119d190309086908990600401611ed4565b600060405180830381600087803b1580156119eb57600080fd5b505af11580156119ff573d6000803e3d6000fd5b505050506001600160a01b0385811660008181526002602081815260408084208a8552825280842080546001600160c01b0319168155600181019490945591830180546001600160a01b0319169055600390920180546001600160a81b031916905580516001600160801b03861681529386169184019190915286927fc5e48a17a7245813e7f1ccab1ea6219ea94e5df804724348cdcc938abeb169a5910160405180910390a35050505050565b6001600160a01b0382166000908152600260209081526040808320848452909152812060010154600160801b90046001600160801b03168015611b2c576000612710611af98686611bb1565b611b0590612710611fcd565b611b159063ffffffff1684611fec565b611b1f919061200b565b341015925061192d915050565b50506001600160a01b03821660009081526002602090815260408083208484529091529020600101546001600160801b031634101561192d565b6001600160a01b0382166000908152600260209081526040808320848452909152812054640100000000900463ffffffff16808203611baa5761a8c091505061192d565b905061192d565b6001600160a01b038216600090815260026020908152604080832084845290915281205463ffffffff16808203611baa57606491505061192d565b6001600160a01b0381168114611c0157600080fd5b50565b8035611c0f81611bec565b919050565b60008060408385031215611c2757600080fd5b8235611c3281611bec565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c6757600080fd5b813560206001600160401b0380831115611c8357611c83611c40565b8260051b604051601f19603f83011681018181108482111715611ca857611ca8611c40565b604052938452858101830193838101925087851115611cc657600080fd5b83870191505b84821015611ce557813583529183019190830190611ccc565b979650505050505050565b60008060408385031215611d0357600080fd5b8235611d0e81611bec565b915060208301356001600160401b03811115611d2957600080fd5b611d3585828601611c56565b9150509250929050565b803563ffffffff81168114611c0f57600080fd5b80356001600160401b0381168114611c0f57600080fd5b80358015158114611c0f57600080fd5b60008060008060008060008060006101208a8c031215611d9957600080fd5b8935611da481611bec565b985060208a01356001600160401b03811115611dbf57600080fd5b611dcb8c828d01611c56565b985050611dda60408b01611d3f565b9650611de860608b01611d3f565b9550611df660808b01611d53565b9450611e0460a08b01611d53565b935060c08a01356001600160801b0381168114611e2057600080fd5b9250611e2e60e08b01611c04565b9150611e3d6101008b01611d6a565b90509295985092959850929598565b600060208284031215611e5e57600080fd5b5035919050565b600060208284031215611e7757600080fd5b8135611e8281611bec565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b600060018201611f2057611f20611ef8565b5060010190565b600060208284031215611f3957600080fd5b8151611e8281611bec565b600060208284031215611f5657600080fd5b5051919050565b60006001600160401b03808316818516808303821115611f7f57611f7f611ef8565b01949350505050565b600082821015611f9a57611f9a611ef8565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115611fc857611fc8611ef8565b500190565b600063ffffffff808316818516808303821115611f7f57611f7f611ef8565b600081600019048311821515161561200657612006611ef8565b500290565b60008261202857634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212204b42e4e5277b1fefe56c0335770bcda5a6be911c78fd4c718d876ec727b7c70364736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000d3228e099e6596988ae0b73eaa62591c875e569300000000000000000000000001f86f668f00ea8d929479edf81c232c1bca8307000000000000000000000000e4ab56ba8e23f0a5fb514b914e259156d50697620000000000000000000000005dc23613fd54a87c3b8a7134534110f5180433c8000000000000000000000000932aeac0eebaa1fe8fdb53c4f81312cba5f771a8
-----Decoded View---------------
Arg [0] : _whitelistedPassCollectionsAddresses (address[]): 0xD3228e099E6596988Ae0b73EAa62591c875e5693,0x01F86f668f00Ea8d929479EDF81c232C1bcA8307,0xE4aB56BA8e23f0a5fB514B914e259156D5069762,0x5DC23613fD54A87C3b8A7134534110F5180433C8,0x932aEAc0eEBaA1fE8fdB53C4f81312cBA5F771A8
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [2] : 000000000000000000000000d3228e099e6596988ae0b73eaa62591c875e5693
Arg [3] : 00000000000000000000000001f86f668f00ea8d929479edf81c232c1bca8307
Arg [4] : 000000000000000000000000e4ab56ba8e23f0a5fb514b914e259156d5069762
Arg [5] : 0000000000000000000000005dc23613fd54a87c3b8a7134534110f5180433c8
Arg [6] : 000000000000000000000000932aeac0eebaa1fe8fdb53c4f81312cba5f771a8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.