More Info
Private Name Tags
ContractCreator
Sponsored
Latest 25 from a total of 542 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Buy Tokens | 14794658 | 311 days 14 hrs ago | IN | 0.005 ETH | 0.00386878 | ||||
Buy Tokens | 14794581 | 311 days 14 hrs ago | IN | 0.005 ETH | 0.00383864 | ||||
Buy Tokens | 14794581 | 311 days 14 hrs ago | IN | 0.005 ETH | 0.00256999 | ||||
Buy Tokens | 14794581 | 311 days 14 hrs ago | IN | 0.005 ETH | 0.00293254 | ||||
Buy Tokens | 14320896 | 385 days 20 hrs ago | IN | 0.036 ETH | 0.00062454 | ||||
Sweep Proceeds | 13729572 | 477 days 13 hrs ago | IN | 0 ETH | 0.00611759 | ||||
Buy Tokens | 13696797 | 482 days 19 hrs ago | IN | 0.00001 ETH | 0.00258616 | ||||
Buy Tokens | 13696787 | 482 days 19 hrs ago | IN | 0.00001103 ETH | 0.00680344 | ||||
Buy Tokens | 13696706 | 482 days 19 hrs ago | IN | 0.005 ETH | 0.00173344 | ||||
Buy Tokens | 13696705 | 482 days 19 hrs ago | IN | 0.0078 ETH | 0.00545769 | ||||
Buy Tokens | 13696701 | 482 days 19 hrs ago | IN | 0.01 ETH | 0.00164111 | ||||
Buy Tokens | 13696699 | 482 days 19 hrs ago | IN | 0.5 ETH | 0.00184398 | ||||
Buy Tokens | 13696698 | 482 days 19 hrs ago | IN | 0.05 ETH | 0.00170077 | ||||
Buy Tokens | 13696698 | 482 days 19 hrs ago | IN | 0.015 ETH | 0.00507732 | ||||
Buy Tokens | 13696698 | 482 days 19 hrs ago | IN | 0.05 ETH | 0.00170077 | ||||
Buy Tokens | 13696698 | 482 days 19 hrs ago | IN | 0.033 ETH | 0.00170077 | ||||
Buy Tokens | 13696696 | 482 days 19 hrs ago | IN | 0.5 ETH | 0.00165697 | ||||
Buy Tokens | 13696695 | 482 days 19 hrs ago | IN | 0.01 ETH | 0.00447457 | ||||
Buy Tokens | 13696692 | 482 days 19 hrs ago | IN | 0.05 ETH | 0.00179179 | ||||
Buy Tokens | 13696692 | 482 days 19 hrs ago | IN | 0.5 ETH | 0.00179179 | ||||
Buy Tokens | 13696690 | 482 days 19 hrs ago | IN | 0.05 ETH | 0.00189148 | ||||
Buy Tokens | 13696690 | 482 days 19 hrs ago | IN | 0.05 ETH | 0.00189148 | ||||
Buy Tokens | 13696690 | 482 days 19 hrs ago | IN | 0.1 ETH | 0.00189148 | ||||
Buy Tokens | 13696690 | 482 days 19 hrs ago | IN | 0.05 ETH | 0.00564662 | ||||
Buy Tokens | 13696688 | 482 days 19 hrs ago | IN | 0.05 ETH | 0.00561821 |
Loading...
Loading
Contract Name:
Album
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "./AlbumBuyoutManager.sol"; import "./AlbumNftManager.sol"; import "./AlbumTokenSaleManager.sol"; contract Album is Ownable, ERC721Holder, AlbumBuyoutManager, AlbumNftManager, AlbumTokenSaleManager { // The token for this album. IERC20 public token; constructor( address governance, address _token, address creator, TokenSaleParams memory tokenSaleParams, address[] memory _nftAddrs, uint256[] memory _nftIds, uint256 _minReservePrice ) AlbumTokenSaleManager(creator, tokenSaleParams) { transferOwnership(governance); token = IERC20(_token); _addNfts(_nftAddrs, _nftIds); _setMinReservePrice(_minReservePrice); } function addNfts(address[] memory _nfts, uint256[] memory _ids) public onlyOwner { _addNfts(_nfts, _ids); } function sendNfts(address to, uint256[] memory idxs) public onlyOwner { _sendNfts(to, idxs); } function setTimeout(uint256 _timeout) public onlyOwner { _setTimeout(_timeout); } function sendAllToSender() internal override { address[] memory nfts = getNfts(); uint256[] memory ids = getIds(); bool[] memory sent = getSent(); for (uint256 i = 0; i < nfts.length; i++) { if (!sent[i]) { IERC721(nfts[i]).safeTransferFrom( address(this), msg.sender, ids[i] ); } } } function setMinReservePrice(uint256 _minReservePrice) public onlyOwner { _setMinReservePrice(_minReservePrice); } function setBuyout(address _buyer, uint256 _cost) public onlyOwner { _setBuyout(_buyer, _cost); } function checkOwedAmount(uint256 _amount, uint256 buyoutCost) internal override returns (uint256 owed) { token.transferFrom(msg.sender, address(this), _amount); owed = (_amount * buyoutCost) / token.totalSupply(); } function getToken() public view override returns (IERC20) { return token; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, 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; import "../IERC721Receiver.sol"; /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; abstract contract AlbumBuyoutManager { event BuyoutSet(address buyer, uint256 cost, uint256 end); event Buyout(address buyer, uint256 cost); event BuyoutPortionClaimed(address claimer, uint256 amount, uint256 owed); event MinReservePriceSet(uint256 minReservePrice); address private buyer; uint256 private buyoutCost; uint256 private buyoutEnd; bool private bought; uint256 private minReservePrice; // Initialized to 7 days in seconds uint256 private timeout = 60 * 60 * 24 * 7; function sendAllToSender() internal virtual; function checkOwedAmount(uint256 _amount, uint256 _buyoutCost) internal virtual returns (uint256 owed); // Requires no completed or ongoing buyout. modifier noBuyout() { require(!bought, "A buyout was already completed"); require( block.timestamp >= buyoutEnd || buyer == address(0), "A buyout is in progress" ); _; } function getBuyoutData() public view returns ( address _buyer, uint256 _buyoutCost, uint256 _buyoutEnd, bool _bought, uint256 _timeout, uint256 _minReservePrice ) { return (buyer, buyoutCost, buyoutEnd, bought, timeout, minReservePrice); } function _setTimeout(uint256 _timeout) internal { timeout = _timeout; } function _setMinReservePrice(uint256 _minReservePrice) internal { minReservePrice = _minReservePrice; emit MinReservePriceSet(_minReservePrice); } function _setBuyout(address _buyer, uint256 _cost) internal noBuyout { require( _cost >= minReservePrice, "Album can't be bought out for amount less than minReservePrice!" ); buyer = _buyer; buyoutCost = _cost; buyoutEnd = block.timestamp + timeout; emit BuyoutSet(buyer, buyoutCost, buyoutEnd); } function buyout() public payable { require(!bought, "Album has already been bought out"); require(msg.sender == buyer, "Caller is not the buyer."); require(msg.value == buyoutCost, "Not enough ETH."); require(block.timestamp < buyoutEnd, "Buyout timeout already passed."); sendAllToSender(); bought = true; emit Buyout(buyer, buyoutCost); } function claim(uint256 _amount) public { require(bought, "No buyout yet."); uint256 owed = checkOwedAmount(_amount, buyoutCost); payable(msg.sender).transfer(owed); emit BuyoutPortionClaimed(msg.sender, _amount, owed); } }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; abstract contract AlbumNftManager { event AddNfts(address[] nfts, uint256[] ids); event SendNfts(address to, uint256[] idxs); // NFTs owned by this album. address[] private nfts; uint256[] private ids; bool[] private sent; function getNfts() public view returns (address[] memory) { return nfts; } function getIds() public view returns (uint256[] memory) { return ids; } function getSent() public view returns (bool[] memory) { return sent; } function _addNfts(address[] memory _nfts, uint256[] memory _ids) internal { require( _nfts.length == _ids.length, "Input array lenghts don't match." ); for (uint256 i = 0; i < _nfts.length; i++) { address nftAddr = _nfts[i]; IERC721 nft = IERC721(nftAddr); uint256 id = _ids[i]; address owner = nft.ownerOf(id); if (owner != address(this)) { nft.safeTransferFrom(owner, address(this), id); } nfts.push(nftAddr); ids.push(id); sent.push(false); } emit AddNfts(_nfts, _ids); } function _sendNfts(address to, uint256[] memory idxs) internal { uint256 idx; for (uint256 i = 0; i < idxs.length; i++) { idx = idxs[i]; IERC721(nfts[idx]).safeTransferFrom(address(this), to, ids[idx]); sent[idx] = true; } emit SendNfts(to, idxs); } }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; abstract contract AlbumTokenSaleManager { event SaleInitialized( address creator, uint256 tokensPerMilliEth, uint256 saleStart, uint256 saleEnd, uint256 numTokens ); event TokenSale(address buyer, uint256 amount, uint256 paid); event SaleSwept(uint256 saleProceeds, uint256 amountUnsold); uint256 public constant MILLIETH = 1e15; address public immutable CREATOR; // Number of tokens to sell per wei (1e-18 ETH) uint256 public immutable TOKENS_PER_WEI; uint256 public immutable SALE_START; uint256 public immutable SALE_END; uint256 private saleProceeds; uint256 private amountUnsold; bool private swept; modifier saleOver(bool want) { bool isOver = block.timestamp >= SALE_END; require(want == isOver, "Sale state is invalid for this method"); _; } struct TokenSaleParams { uint256 price; uint256 saleStart; uint256 saleEnd; uint256 numTokens; } constructor(address creator, TokenSaleParams memory params) { require(params.saleStart < params.saleEnd); CREATOR = creator; TOKENS_PER_WEI = params.price; SALE_START = params.saleStart; SALE_END = params.saleEnd; amountUnsold = params.numTokens; emit SaleInitialized( creator, params.price, params.saleStart, params.saleEnd, params.numTokens ); } function getToken() public view virtual returns (IERC20 token); function buyTokens() public payable saleOver(false) { require(block.timestamp >= SALE_START, "Sale has not started yet"); uint256 amount = msg.value * TOKENS_PER_WEI; require(amountUnsold >= amount, "Attempted to purchase too many tokens!"); amountUnsold -= amount; getToken().transfer(msg.sender, amount); saleProceeds += msg.value; emit TokenSale(msg.sender, amount, msg.value); } // Anyone can trigger a sweep, but the proceeds always get sent to the creator. function sweepProceeds() public saleOver(true) { require(!swept, "Already swept"); swept = true; payable(CREATOR).transfer(saleProceeds); getToken().transfer(CREATOR, amountUnsold); emit SaleSwept(saleProceeds, amountUnsold); } function getTokenSaleData() public view returns ( address creator, uint256 tokensPerWei, uint256 saleStart, uint256 saleEnd, uint256 _saleProceeds, uint256 _amountUnsold, bool _swept ) { return ( CREATOR, TOKENS_PER_WEI, SALE_START, SALE_END, saleProceeds, amountUnsold, swept ); } }
// 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; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// 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) { return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"governance","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"creator","type":"address"},{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"saleStart","type":"uint256"},{"internalType":"uint256","name":"saleEnd","type":"uint256"},{"internalType":"uint256","name":"numTokens","type":"uint256"}],"internalType":"struct AlbumTokenSaleManager.TokenSaleParams","name":"tokenSaleParams","type":"tuple"},{"internalType":"address[]","name":"_nftAddrs","type":"address[]"},{"internalType":"uint256[]","name":"_nftIds","type":"uint256[]"},{"internalType":"uint256","name":"_minReservePrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"nfts","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"AddNfts","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"}],"name":"Buyout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"owed","type":"uint256"}],"name":"BuyoutPortionClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"end","type":"uint256"}],"name":"BuyoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minReservePrice","type":"uint256"}],"name":"MinReservePriceSet","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensPerMilliEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"saleStart","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"saleEnd","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"SaleInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"saleProceeds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountUnsold","type":"uint256"}],"name":"SaleSwept","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"idxs","type":"uint256[]"}],"name":"SendNfts","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid","type":"uint256"}],"name":"TokenSale","type":"event"},{"inputs":[],"name":"CREATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MILLIETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_END","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKENS_PER_WEI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_nfts","type":"address[]"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"addNfts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyout","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyoutData","outputs":[{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_buyoutCost","type":"uint256"},{"internalType":"uint256","name":"_buyoutEnd","type":"uint256"},{"internalType":"bool","name":"_bought","type":"bool"},{"internalType":"uint256","name":"_timeout","type":"uint256"},{"internalType":"uint256","name":"_minReservePrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNfts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSent","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenSaleData","outputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"tokensPerWei","type":"uint256"},{"internalType":"uint256","name":"saleStart","type":"uint256"},{"internalType":"uint256","name":"saleEnd","type":"uint256"},{"internalType":"uint256","name":"_saleProceeds","type":"uint256"},{"internalType":"uint256","name":"_amountUnsold","type":"uint256"},{"internalType":"bool","name":"_swept","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"idxs","type":"uint256[]"}],"name":"sendNfts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setBuyout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minReservePrice","type":"uint256"}],"name":"setMinReservePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeout","type":"uint256"}],"name":"setTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepProceeds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
61010060405262093a806006553480156200001957600080fd5b50604051620027d0380380620027d08339810160408190526200003c916200069b565b848462000049336200013d565b80604001518160200151106200005e57600080fd5b606082811b6001600160601b0319166080908152825160a09081526020808501805160c0526040808701805160e05287870151600b81905588519351915183516001600160a01b038c168152958601949094529184015294820152918201929092527f85e156721fbb7d011ed4fae21ec61e7c6f6995fbe67bfc3d7734c4da5a0a9733910160405180910390a150620000f99050876200018d565b600c8054610100600160a81b0319166101006001600160a01b0389160217905562000125838362000262565b62000130816200053b565b50505050505050620008cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620001ed5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620002545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620001e4565b6200025f816200013d565b50565b8051825114620002b55760405162461bcd60e51b815260206004820181905260248201527f496e707574206172726179206c656e6768747320646f6e2774206d617463682e6044820152606401620001e4565b60005b8251811015620004fb576000838281518110620002e557634e487b7160e01b600052603260045260246000fd5b60200260200101519050600081905060008484815181106200031757634e487b7160e01b600052603260045260246000fd5b602002602001015190506000826001600160a01b0316636352211e836040518263ffffffff1660e01b81526004016200035291815260200190565b60206040518083038186803b1580156200036b57600080fd5b505afa15801562000380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a6919062000677565b90506001600160a01b03811630146200042457604051632142170760e11b81526001600160a01b038281166004830152306024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156200040a57600080fd5b505af11580156200041f573d6000803e3d6000fd5b505050505b506007805460018082019092557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b039590951694909417909355600880548085019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155506009805491820181556000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af60208204018054601f9092166101000a60ff0219909116905580620004f2816200088d565b915050620002b8565b507fdaa83305df99008c5e651b6276ac1d3278f596842d6cd5f8a92d97eb3a3bcf4482826040516200052f9291906200078f565b60405180910390a15050565b60058190556040518181527fe843b3ec3b7d5c75d587692fe07d930e310983100b25808444ed339b778485ee9060200160405180910390a150565b80516001600160a01b03811681146200058e57600080fd5b919050565b600082601f830112620005a4578081fd5b81516020620005bd620005b78362000867565b62000834565b80838252828201915082860187848660051b8901011115620005dd578586fd5b855b858110156200060657620005f38262000576565b84529284019290840190600101620005df565b5090979650505050505050565b600082601f83011262000624578081fd5b8151602062000637620005b78362000867565b80838252828201915082860187848660051b890101111562000657578586fd5b855b85811015620006065781518452928401929084019060010162000659565b60006020828403121562000689578081fd5b620006948262000576565b9392505050565b6000806000806000806000878903610140811215620006b8578384fd5b620006c38962000576565b9750620006d360208a0162000576565b9650620006e360408a0162000576565b95506080605f1982011215620006f7578384fd5b506200070262000809565b606089810151825260808a0151602083015260a08a0151604083015260c08a01519082015260e08901519094506001600160401b038082111562000744578485fd5b620007528b838c0162000593565b94506101008a015191508082111562000769578384fd5b50620007788a828b0162000613565b925050610120880151905092959891949750929550565b604080825283519082018190526000906020906060840190828701845b82811015620007d35781516001600160a01b031684529284019290840190600101620007ac565b50505083810382850152845180825285830191830190845b818110156200060657835183529284019291840191600101620007eb565b604051608081016001600160401b03811182821017156200082e576200082e620008b5565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200085f576200085f620008b5565b604052919050565b60006001600160401b03821115620008835762000883620008b5565b5060051b60200190565b6000600019821415620008ae57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160c05160e051611e826200094e600039600081816103df01528181610497015281816106f40152610c2401526000818161027c0152818161046f0152610c660152600081816101ab015281816104490152610cdb015260008181610425015281816105790152818161079501526108080152611e826000f3fe6080604052600436106101665760003560e01c8063715018a6116100d1578063c58a34cc1161008a578063e4d20c1d11610064578063e4d20c1d14610547578063e4fbb60914610567578063f2fde38b1461059b578063fc0c546a146105bb57600080fd5b8063c58a34cc146104fd578063d0febe4c1461051d578063d8cb55e31461052557600080fd5b8063715018a61461037a578063855f44d21461038f5780638da5cb5b146103af5780639aa0ff7b146103cd578063b916ea1a14610401578063c15bf672146104dd57600080fd5b8063229d5a4611610123578063229d5a461461029e5780632b105663146102c057806332f4e11c146102e2578063379607f5146102f757806357b97c7e146103175780635c4bfa101461037257600080fd5b80630c6f47061461016b57806313aaa39314610199578063150b7a02146101cd5780631a7dd12d1461021157806321df0da714610233578063226730301461026a575b600080fd5b34801561017757600080fd5b5061018666038d7ea4c6800081565b6040519081526020015b60405180910390f35b3480156101a557600080fd5b506101867f000000000000000000000000000000000000000000000000000000000000000081565b3480156101d957600080fd5b506101f86101e8366004611919565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610190565b34801561021d57600080fd5b5061023161022c366004611a23565b6105e0565b005b34801561023f57600080fd5b50600c5461010090046001600160a01b03165b6040516001600160a01b039091168152602001610190565b34801561027657600080fd5b506101867f000000000000000000000000000000000000000000000000000000000000000081565b3480156102aa57600080fd5b506102b3610621565b6040516101909190611c5a565b3480156102cc57600080fd5b506102d5610699565b6040516101909190611ca0565b3480156102ee57600080fd5b506102316106f0565b34801561030357600080fd5b50610231610312366004611b27565b6108df565b34801561032357600080fd5b50600154600254600354600454600654600554604080516001600160a01b03909716875260208701959095529385019290925260ff1615156060840152608083015260a082015260c001610190565b61023161099f565b34801561038657600080fd5b50610231610b4c565b34801561039b57600080fd5b506102316103aa3660046119d5565b610b82565b3480156103bb57600080fd5b506000546001600160a01b0316610252565b3480156103d957600080fd5b506101867f000000000000000000000000000000000000000000000000000000000000000081565b34801561040d57600080fd5b50600a54600b54600c54604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681527f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f00000000000000000000000000000000000000000000000000000000000000006060820152608081019390935260a083019190915260ff16151560c082015260e001610190565b3480156104e957600080fd5b506102316104f8366004611a4e565b610bb6565b34801561050957600080fd5b50610231610518366004611b27565b610bea565b610231610c20565b34801561053157600080fd5b5061053a610e6e565b6040516101909190611c19565b34801561055357600080fd5b50610231610562366004611b27565b610ecf565b34801561057357600080fd5b506102527f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a757600080fd5b506102316105b63660046118e1565b610f02565b3480156105c757600080fd5b50600c546102529061010090046001600160a01b031681565b6000546001600160a01b031633146106135760405162461bcd60e51b815260040161060a90611cb3565b60405180910390fd5b61061d8282610f9a565b5050565b6060600980548060200260200160405190810160405280929190818152602001828054801561068f57602002820191906000526020600020906000905b825461010083900a900460ff16151581526020600192830181810494850194909303909202910180841161065e5790505b5050505050905090565b6060600880548060200260200160405190810160405280929190818152602001828054801561068f57602002820191906000526020600020905b8154815260200190600101908083116106d3575050505050905090565b60017f00000000000000000000000000000000000000000000000000000000000000004210158082146107355760405162461bcd60e51b815260040161060a90611ce8565b600c5460ff16156107785760405162461bcd60e51b815260206004820152600d60248201526c105b1c9958591e481cddd95c1d609a1b604482015260640161060a565b600c805460ff19166001179055600a546040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169180156108fc02916000818181858888f193505050501580156107dc573d6000803e3d6000fd5b50600c5461010090046001600160a01b0316600b5460405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482019290925291169063a9059cbb90604401602060405180830381600087803b15801561085c57600080fd5b505af1158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611b07565b507f993934f55ac7d2e69b3ccbf2ec86a5914266cf10029628879d2dcdb8fd1f2f6e600a54600b546040516108d3929190918252602082015260400190565b60405180910390a15050565b60045460ff166109225760405162461bcd60e51b815260206004820152600e60248201526d273790313abcb7baba103cb2ba1760911b604482015260640161060a565b60006109308260025461114c565b604051909150339082156108fc029083906000818181858888f19350505050158015610960573d6000803e3d6000fd5b5060408051338152602081018490529081018290527fe8b9a97a7259cc520260b6c379e702b1ae5349b162fab7f7ba298fcc1d859340906060016108d3565b60045460ff16156109fc5760405162461bcd60e51b815260206004820152602160248201527f416c62756d2068617320616c7265616479206265656e20626f75676874206f756044820152601d60fa1b606482015260840161060a565b6001546001600160a01b03163314610a565760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74207468652062757965722e0000000000000000604482015260640161060a565b6002543414610a995760405162461bcd60e51b815260206004820152600f60248201526e2737ba1032b737bab3b41022aa241760891b604482015260640161060a565b6003544210610aea5760405162461bcd60e51b815260206004820152601e60248201527f4275796f75742074696d656f757420616c7265616479207061737365642e0000604482015260640161060a565b610af261127a565b6004805460ff1916600190811790915554600254604080516001600160a01b03909316835260208301919091527f63e547ec8630574e3f3d7c91efd6420a969b8d4b668474f22e442944d9cd7a13910160405180910390a1565b6000546001600160a01b03163314610b765760405162461bcd60e51b815260040161060a90611cb3565b610b80600061139f565b565b6000546001600160a01b03163314610bac5760405162461bcd60e51b815260040161060a90611cb3565b61061d82826113ef565b6000546001600160a01b03163314610be05760405162461bcd60e51b815260040161060a90611cb3565b61061d8282611582565b6000546001600160a01b03163314610c145760405162461bcd60e51b815260040161060a90611cb3565b610c1d81600655565b50565b60007f00000000000000000000000000000000000000000000000000000000000000004210801590610c645760405162461bcd60e51b815260040161060a90611ce8565b7f0000000000000000000000000000000000000000000000000000000000000000421015610cd45760405162461bcd60e51b815260206004820152601860248201527f53616c6520686173206e6f742073746172746564207965740000000000000000604482015260640161060a565b6000610d007f000000000000000000000000000000000000000000000000000000000000000034611dba565b905080600b541015610d635760405162461bcd60e51b815260206004820152602660248201527f417474656d7074656420746f20707572636861736520746f6f206d616e7920746044820152656f6b656e732160d01b606482015260840161060a565b80600b6000828254610d759190611dd9565b9091555050600c5461010090046001600160a01b031660405163a9059cbb60e01b8152336004820152602481018390526001600160a01b03919091169063a9059cbb90604401602060405180830381600087803b158015610dd557600080fd5b505af1158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190611b07565b5034600a6000828254610e209190611d82565b9091555050604080513381526020810183905234918101919091527f7ceac0b8ee1aa05d6bffe30efcb415d68896c61a7fc61e16d6ec0a7056e93ab0906060015b60405180910390a1505050565b6060600780548060200260200160405190810160405280929190818152602001828054801561068f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ea8575050505050905090565b6000546001600160a01b03163314610ef95760405162461bcd60e51b815260040161060a90611cb3565b610c1d81611837565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b815260040161060a90611cb3565b6001600160a01b038116610f915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060a565b610c1d8161139f565b60045460ff1615610fed5760405162461bcd60e51b815260206004820152601e60248201527f41206275796f75742077617320616c726561647920636f6d706c657465640000604482015260640161060a565b6003544210158061100757506001546001600160a01b0316155b6110535760405162461bcd60e51b815260206004820152601760248201527f41206275796f757420697320696e2070726f6772657373000000000000000000604482015260640161060a565b6005548110156110cb5760405162461bcd60e51b815260206004820152603f60248201527f416c62756d2063616e277420626520626f75676874206f757420666f7220616d60448201527f6f756e74206c657373207468616e206d696e5265736572766550726963652100606482015260840161060a565b600180546001600160a01b0319166001600160a01b03841617905560028190556006546110f89042611d82565b6003819055600154600254604080516001600160a01b03909316835260208301919091528101919091527f5cf900a52f5bf9cf30acfefb6ef844f5592718546c60bce2c8002b4b5caea7a0906060016108d3565b600c546040516323b872dd60e01b815260009161010090046001600160a01b0316906323b872dd9061118690339030908890600401611bc9565b602060405180830381600087803b1580156111a057600080fd5b505af11580156111b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d89190611b07565b50600c60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561122757600080fd5b505afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190611b3f565b6112698385611dba565b6112739190611d9a565b9392505050565b6000611284610e6e565b90506000611290610699565b9050600061129c610621565b905060005b8351811015611399578181815181106112ca57634e487b7160e01b600052603260045260246000fd5b6020026020010151611387578381815181106112f657634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166342842e0e303386858151811061132e57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b815260040161135493929190611bc9565b600060405180830381600087803b15801561136e57600080fd5b505af1158015611382573d6000803e3d6000fd5b505050505b8061139181611df0565b9150506112a1565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000805b82518110156115505782818151811061141c57634e487b7160e01b600052603260045260246000fd5b602002602001015191506007828154811061144757634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166342842e0e30866008868154811061149657634e487b7160e01b600052603260045260246000fd5b90600052602060002001546040518463ffffffff1660e01b81526004016114bf93929190611bc9565b600060405180830381600087803b1580156114d957600080fd5b505af11580156114ed573d6000803e3d6000fd5b5050505060016009838154811061151457634e487b7160e01b600052603260045260246000fd5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550808061154890611df0565b9150506113f3565b507f3083e061477a304cc5b66494752ab2b37bb94537cbb9e49d328f44498ca7932b8383604051610e61929190611bed565b80518251146115d35760405162461bcd60e51b815260206004820181905260248201527f496e707574206172726179206c656e6768747320646f6e2774206d617463682e604482015260640161060a565b60005b825181101561180557600083828151811061160157634e487b7160e01b600052603260045260246000fd5b602002602001015190506000819050600084848151811061163257634e487b7160e01b600052603260045260246000fd5b602002602001015190506000826001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161166c91815260200190565b60206040518083038186803b15801561168457600080fd5b505afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc91906118fd565b90506001600160a01b038116301461173157604051632142170760e11b81526001600160a01b038416906342842e0e906116fe90849030908790600401611bc9565b600060405180830381600087803b15801561171857600080fd5b505af115801561172c573d6000803e3d6000fd5b505050505b506007805460018082019092557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b039590951694909417909355600880548085019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155506009805491820181556000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af60208204018054601f9092166101000a60ff02199091169055806117fd81611df0565b9150506115d6565b507fdaa83305df99008c5e651b6276ac1d3278f596842d6cd5f8a92d97eb3a3bcf4482826040516108d3929190611c2c565b60058190556040518181527fe843b3ec3b7d5c75d587692fe07d930e310983100b25808444ed339b778485ee9060200160405180910390a150565b600082601f830112611882578081fd5b8135602061189761189283611d5e565b611d2d565b80838252828201915082860187848660051b89010111156118b6578586fd5b855b858110156118d4578135845292840192908401906001016118b8565b5090979650505050505050565b6000602082840312156118f2578081fd5b813561127381611e37565b60006020828403121561190e578081fd5b815161127381611e37565b6000806000806080858703121561192e578283fd5b843561193981611e37565b935060208581013561194a81611e37565b935060408601359250606086013567ffffffffffffffff8082111561196d578384fd5b818801915088601f830112611980578384fd5b81358181111561199257611992611e21565b6119a4601f8201601f19168501611d2d565b915080825289848285010111156119b9578485fd5b8084840185840137810190920192909252939692955090935050565b600080604083850312156119e7578182fd5b82356119f281611e37565b9150602083013567ffffffffffffffff811115611a0d578182fd5b611a1985828601611872565b9150509250929050565b60008060408385031215611a35578182fd5b8235611a4081611e37565b946020939093013593505050565b60008060408385031215611a60578182fd5b823567ffffffffffffffff80821115611a77578384fd5b818501915085601f830112611a8a578384fd5b81356020611a9a61189283611d5e565b8083825282820191508286018a848660051b8901011115611ab9578889fd5b8896505b84871015611ae4578035611ad081611e37565b835260019690960195918301918301611abd565b5096505086013592505080821115611afa578283fd5b50611a1985828601611872565b600060208284031215611b18578081fd5b81518015158114611273578182fd5b600060208284031215611b38578081fd5b5035919050565b600060208284031215611b50578081fd5b5051919050565b6000815180845260208085019450808401835b83811015611b8f5781516001600160a01b031687529582019590820190600101611b6a565b509495945050505050565b6000815180845260208085019450808401835b83811015611b8f57815187529582019590820190600101611bad565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0383168152604060208201819052600090611c1190830184611b9a565b949350505050565b6020815260006112736020830184611b57565b604081526000611c3f6040830185611b57565b8281036020840152611c518185611b9a565b95945050505050565b6020808252825182820181905260009190848201906040850190845b81811015611c94578351151583529284019291840191600101611c76565b50909695505050505050565b6020815260006112736020830184611b9a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f53616c6520737461746520697320696e76616c696420666f722074686973206d604082015264195d1a1bd960da1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d5657611d56611e21565b604052919050565b600067ffffffffffffffff821115611d7857611d78611e21565b5060051b60200190565b60008219821115611d9557611d95611e0b565b500190565b600082611db557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611dd457611dd4611e0b565b500290565b600082821015611deb57611deb611e0b565b500390565b6000600019821415611e0457611e04611e0b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c1d57600080fdfea264697066735822122002d661ea803bac6c23ccfe1d8d311ac6f9cf8f1a586efe1b9d251737cc72d2ac64736f6c63430008040033000000000000000000000000ef6ece7fb2e9bb03f353dbcf2c95950516eb21f40000000000000000000000004ee4f96838454e67fce92b2c53b0f1a97d047179000000000000000000000000f00a927ec2fe6c9201986717ad8e73534c71c30c00000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000006196b0c00000000000000000000000000000000000000000000000000000000061a925c0000000000000000000000000000000000000000000000a968163f0a57b4000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000007bd29408f11d2bfc23c34f18275bbf23bb716bc700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002180
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ef6ece7fb2e9bb03f353dbcf2c95950516eb21f40000000000000000000000004ee4f96838454e67fce92b2c53b0f1a97d047179000000000000000000000000f00a927ec2fe6c9201986717ad8e73534c71c30c00000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000006196b0c00000000000000000000000000000000000000000000000000000000061a925c0000000000000000000000000000000000000000000000a968163f0a57b4000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000007bd29408f11d2bfc23c34f18275bbf23bb716bc700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002180
-----Decoded View---------------
Arg [0] : governance (address): 0xEF6eCE7FB2E9bb03F353dbcf2c95950516EB21f4
Arg [1] : _token (address): 0x4eE4f96838454E67Fce92B2c53b0f1a97D047179
Arg [2] : creator (address): 0xF00A927ec2Fe6c9201986717ad8e73534c71C30C
Arg [3] : tokenSaleParams (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [4] : _nftAddrs (address[]): 0x7Bd29408f11D2bFC23c34f18275bBf23bB716Bc7
Arg [5] : _nftIds (uint256[]): 8576
Arg [6] : _minReservePrice (uint256): 1000000000000000000000
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 000000000000000000000000ef6ece7fb2e9bb03f353dbcf2c95950516eb21f4
Arg [1] : 0000000000000000000000004ee4f96838454e67fce92b2c53b0f1a97d047179
Arg [2] : 000000000000000000000000f00a927ec2fe6c9201986717ad8e73534c71c30c
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [4] : 000000000000000000000000000000000000000000000000000000006196b0c0
Arg [5] : 0000000000000000000000000000000000000000000000000000000061a925c0
Arg [6] : 000000000000000000000000000000000000000000000a968163f0a57b400000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [9] : 00000000000000000000000000000000000000000000003635c9adc5dea00000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [11] : 0000000000000000000000007bd29408f11d2bfc23c34f18275bbf23bb716bc7
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [13] : 0000000000000000000000000000000000000000000000000000000000002180
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ 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.