More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 638 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Settle Auction | 16355098 | 835 days ago | IN | 0 ETH | 0.00153575 | ||||
Pause | 16355092 | 835 days ago | IN | 0 ETH | 0.00084026 | ||||
Create Bid | 16355022 | 835 days ago | IN | 0.8 ETH | 0.00098386 | ||||
Create Bid | 16354893 | 835 days ago | IN | 0.67 ETH | 0.00092596 | ||||
Create Bid | 16353308 | 835 days ago | IN | 0.65 ETH | 0.00085022 | ||||
Create Bid | 16353217 | 835 days ago | IN | 0.55 ETH | 0.00089039 | ||||
Create Bid | 16353122 | 835 days ago | IN | 0.5 ETH | 0.00091924 | ||||
Create Bid | 16353008 | 835 days ago | IN | 0.31 ETH | 0.00095279 | ||||
Create Bid | 16348606 | 836 days ago | IN | 0.3 ETH | 0.00147244 | ||||
Create Bid | 16348579 | 836 days ago | IN | 0.01 ETH | 0.00175275 | ||||
Settle Current A... | 16348067 | 836 days ago | IN | 0 ETH | 0.00277972 | ||||
Set Duration | 16348066 | 836 days ago | IN | 0 ETH | 0.00052018 | ||||
Create Bid | 16348037 | 836 days ago | IN | 1 ETH | 0.00113212 | ||||
Create Bid | 16348035 | 836 days ago | IN | 0.95 ETH | 0.00115711 | ||||
Create Bid | 16348033 | 836 days ago | IN | 0.9 ETH | 0.00114316 | ||||
Create Bid | 16348031 | 836 days ago | IN | 0.85 ETH | 0.0011265 | ||||
Create Bid | 16348021 | 836 days ago | IN | 0.8 ETH | 0.00104795 | ||||
Create Bid | 16348019 | 836 days ago | IN | 0.77 ETH | 0.0010945 | ||||
Create Bid | 16348004 | 836 days ago | IN | 0.75 ETH | 0.00122649 | ||||
Create Bid | 16348002 | 836 days ago | IN | 0.72 ETH | 0.00128421 | ||||
Create Bid | 16347990 | 836 days ago | IN | 0.7 ETH | 0.0010985 | ||||
Create Bid | 16347977 | 836 days ago | IN | 0.67 ETH | 0.00114823 | ||||
Create Bid | 16347959 | 836 days ago | IN | 0.65 ETH | 0.00109466 | ||||
Create Bid | 16347945 | 836 days ago | IN | 0.6 ETH | 0.0010309 | ||||
Create Bid | 16347941 | 836 days ago | IN | 0.56 ETH | 0.00112329 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 16355098 | 835 days ago | 0.8 ETH | ||||
Transfer | 16355022 | 835 days ago | 0.67 ETH | ||||
Transfer | 16354893 | 835 days ago | 0.65 ETH | ||||
Transfer | 16353308 | 835 days ago | 0.55 ETH | ||||
Transfer | 16353217 | 835 days ago | 0.5 ETH | ||||
Transfer | 16353122 | 835 days ago | 0.31 ETH | ||||
Transfer | 16353008 | 835 days ago | 0.3 ETH | ||||
Transfer | 16348606 | 836 days ago | 0.01 ETH | ||||
Transfer | 16348067 | 836 days ago | 1 ETH | ||||
Transfer | 16348037 | 836 days ago | 0.95 ETH | ||||
Transfer | 16348035 | 836 days ago | 0.9 ETH | ||||
Transfer | 16348033 | 836 days ago | 0.85 ETH | ||||
Transfer | 16348031 | 836 days ago | 0.8 ETH | ||||
Transfer | 16348021 | 836 days ago | 0.77 ETH | ||||
Transfer | 16348019 | 836 days ago | 0.75 ETH | ||||
Transfer | 16348004 | 836 days ago | 0.72 ETH | ||||
Transfer | 16348002 | 836 days ago | 0.7 ETH | ||||
Transfer | 16347990 | 836 days ago | 0.67 ETH | ||||
Transfer | 16347977 | 836 days ago | 0.65 ETH | ||||
Transfer | 16347959 | 836 days ago | 0.6 ETH | ||||
Transfer | 16347945 | 836 days ago | 0.56 ETH | ||||
Transfer | 16347941 | 836 days ago | 0.54 ETH | ||||
Transfer | 16347931 | 836 days ago | 0.52 ETH | ||||
Transfer | 16347929 | 836 days ago | 0.5 ETH | ||||
Transfer | 16347927 | 836 days ago | 0.49 ETH |
Loading...
Loading
Contract Name:
VMAAuction
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 // LICENSE // VMAAuction.sol is a modified version of Nouns' NounsAuctionHouse.sol: // https://github.com/nounsDAO/nouns-monorepo/blob/master/packages/nouns-contracts/contracts/NounsAuctionHouse.sol // // VMAAuction.sol source code Copyright LOVO licensed under the GPL-3.0 license. // With modifications by Nounders DAO. pragma solidity ^0.8.16; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {IVMAAuction} from "./interfaces/IVMAAuction.sol"; import {IVoiceMaskAlpha} from "./interfaces/IVoiceMaskAlpha.sol"; contract VMAAuction is IVMAAuction, Pausable, ReentrancyGuard, Ownable { IVoiceMaskAlpha public voiceMaskAlpha; uint256 public timeBuffer; uint256 public reservePrice; uint256 public durationTime; uint256 public gas; uint8 public minBidIncrementPercentage; IVMAAuction.Auction public auction; constructor( IVoiceMaskAlpha _alpha, //alpha nft uint256 _timeBuffer, // padding time. 300 = 5min uint256 _reservePrice, // at least 0 uint256 _durationTime, // 43200 = 12hrs uint8 _minBidIncrementPercentage // 2% ) { _pause(); voiceMaskAlpha = _alpha; timeBuffer = _timeBuffer; reservePrice = _reservePrice; durationTime = _durationTime; minBidIncrementPercentage = _minBidIncrementPercentage; gas = 30000; } function settleCurrentAndCreateNewAuction() external override nonReentrant whenNotPaused { _settleAuction(); _createAuction(); } /** * Settle the current auction. * This function can be called when the contract is paused. */ function settleAuction() external override whenPaused nonReentrant { _settleAuction(); } /** * Create a bid for an Alpha, with a given value. */ function createBid(uint256 alphaId) external payable override whenNotPaused nonReentrant { IVMAAuction.Auction memory _auction = auction; require(block.timestamp < _auction.endTime, "Auction is expired"); require(_auction.alphaId == alphaId, "Not for this auction"); require(msg.value >= reservePrice, "Send at least reservePrice"); require( msg.value >= _auction.price + ((_auction.price * minBidIncrementPercentage) / 100), "Increase the bid by minBidIncrementPercentage" ); address payable lastBidder = _auction.bidder; require(msg.sender != lastBidder, "Wait for next turn"); // Refund the last bidder if (lastBidder != address(0)) { _transferETH(lastBidder, _auction.price); } auction.price = msg.value; auction.bidder = payable(msg.sender); // Extend the auction if bidded within timeBuffer time before the auction ends. bool extended = _auction.endTime - block.timestamp < timeBuffer; if (extended) { auction.endTime = _auction.endTime = block.timestamp + timeBuffer; } emit AuctionBid(_auction.alphaId, msg.sender, msg.value, extended); if (extended) { emit AuctionExtended(_auction.alphaId, _auction.endTime); } } /** * Pause the auction. * CreateBid is unactivated by this function. * The auction can be settled by anyone after the endtime has passed. */ function pause() external override onlyOwner { _pause(); } /** * Unpause the auction. * If there is no active auction, this function will start a new auction. */ function unpause() external override onlyOwner { _unpause(); if (auction.startTime == 0 || auction.settled) { _createAuction(); } } function setTimeBuffer(uint256 _timeBuffer) external override onlyOwner { timeBuffer = _timeBuffer; emit AuctionTimeBufferUpdated(_timeBuffer); } function setReservePrice(uint256 _reservePrice) external override onlyOwner { reservePrice = _reservePrice; emit AuctionReservePriceUpdated(_reservePrice); } function setMinBidIncrementPercentage(uint8 _minBidIncrementPercentage) external override onlyOwner { minBidIncrementPercentage = _minBidIncrementPercentage; emit AuctionMinBidIncrementPercentageUpdated( _minBidIncrementPercentage ); } function setGas(uint256 _gas) external onlyOwner { require(_gas >= 21000, "Gas is not enough for transaction"); gas = _gas; emit AuctionGasUpdated(gas); } function setDuration(uint256 _durationTime) external onlyOwner { durationTime = _durationTime; } /** * Create an auction. * Store the auction details in the auction state variable. * If the mint reverts, the contract will be paused. */ function _createAuction() internal { try voiceMaskAlpha.mintAuction() returns (uint256 alphaId) { uint256 startTime = block.timestamp; uint256 endTime = startTime + durationTime; auction = Auction({ alphaId: alphaId, price: 0, //입찰가 startTime: startTime, endTime: endTime, bidder: payable(0), settled: false }); emit AuctionCreated(alphaId, startTime, endTime); } catch Error(string memory error) { _pause(); emit AuctionCreateFailed(error); } } /** * Settle an auction. Finish the bid and payment. * If there is no bid the Alpha NFT will be send to the owner's EOA. */ function _settleAuction() internal { IVMAAuction.Auction memory _auction = auction; require(block.timestamp >= _auction.endTime, "Auction is active"); require(!_auction.settled, "Auction is settled already"); require(_auction.startTime != 0, "Auction didn't start yet"); auction.settled = true; if (_auction.bidder == address(0)) { // No one made a bid voiceMaskAlpha.transferFrom( address(this), owner(), _auction.alphaId ); } else { voiceMaskAlpha.transferFrom( address(this), _auction.bidder, _auction.alphaId ); } if (_auction.price > 0) { //send money to the owner EOA _transferETH(owner(), _auction.price); } emit AuctionSettled(_auction.alphaId, _auction.bidder, _auction.price); } /** * Transfer ETH. */ function _transferETH(address to, uint256 amount) internal { if (!_safeTransferETH(to, amount)) { emit AuctionRefundFailed(to, amount); } } /** * Transfer ETH and return the success status. */ function _safeTransferETH(address to, uint256 value) internal returns (bool) { (bool success, ) = to.call{value: value, gas: gas}(new bytes(0)); return success; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) 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() { _transferOwnership(_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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; interface IVMAAuction { struct Auction { uint256 alphaId; uint256 price;// currently the highest bid price uint256 startTime; uint256 endTime; address payable bidder; bool settled; } event AuctionCreated(uint256 indexed alphaId, uint256 startTime, uint256 endTime); event AuctionBid(uint256 indexed alphaId, address sender, uint256 value, bool extended); event AuctionExtended(uint256 indexed alphaId, uint256 endTime); event AuctionCreateFailed(string error); event AuctionRefundFailed(address indexed winner, uint256 amount); event AuctionSettled(uint256 indexed alphaId, address winner, uint256 amount); event AuctionTimeBufferUpdated(uint256 timeBuffer); event AuctionReservePriceUpdated(uint256 reservePrice); event AuctionMinBidIncrementPercentageUpdated(uint256 minBidIncrementPercentage); event AuctionGasUpdated(uint256 gas); function settleAuction() external; function settleCurrentAndCreateNewAuction() external; function createBid(uint256 alphaId) external payable; function pause() external; function unpause() external; function setTimeBuffer(uint256 timeBuffer) external; function setReservePrice(uint256 reservePrice) external; function setMinBidIncrementPercentage(uint8 minBidIncrementPercentage) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; // import { IERC721 } from '@openzeppelin/contracts/token/ERC721/IERC721.sol'; import {IERC721AQueryable} from "erc721a/contracts/extensions/IERC721AQueryable.sol"; import {IERC721ABurnable} from "erc721a/contracts/extensions/IERC721ABurnable.sol"; interface IVoiceMaskAlpha is IERC721ABurnable{ event AlphaCreated(uint256 indexed tokenId, address to); event AlphaBurned(uint256 indexed tokenId); event MinterUpdated(address minter); function mintAuction() external returns (uint256); function mintTeam(address to, uint256 quantity) external returns (uint256); function burn(uint256 alphaId) external; function setMinter(address _minter) external; function setAuctionSupply(uint256 _maxMint) external; function setTeamSupply(uint256 _maxMint) external; function setBaseURI(string memory uri) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) 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; } }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.3 // Creator: Chiru Labs pragma solidity ^0.8.4; import '../IERC721A.sol'; /** * @dev Interface of ERC721AQueryable. */ interface IERC721AQueryable is IERC721A { /** * Invalid query range (`start` >= `stop`). */ error InvalidQueryRange(); /** * @dev Returns the `TokenOwnership` struct at `tokenId` without reverting. * * If the `tokenId` is out of bounds: * * - `addr = address(0)` * - `startTimestamp = 0` * - `burned = false` * - `extraData = 0` * * If the `tokenId` is burned: * * - `addr = <Address of owner before token was burned>` * - `startTimestamp = <Timestamp when token was burned>` * - `burned = true` * - `extraData = <Extra data when token was burned>` * * Otherwise: * * - `addr = <Address of owner>` * - `startTimestamp = <Timestamp of start of ownership>` * - `burned = false` * - `extraData = <Extra data at start of ownership>` */ function explicitOwnershipOf(uint256 tokenId) external view returns (TokenOwnership memory); /** * @dev Returns an array of `TokenOwnership` structs at `tokenIds` in order. * See {ERC721AQueryable-explicitOwnershipOf} */ function explicitOwnershipsOf(uint256[] memory tokenIds) external view returns (TokenOwnership[] memory); /** * @dev Returns an array of token IDs owned by `owner`, * in the range [`start`, `stop`) * (i.e. `start <= tokenId < stop`). * * This function allows for tokens to be queried if the collection * grows too big for a single call of {ERC721AQueryable-tokensOfOwner}. * * Requirements: * * - `start < stop` */ function tokensOfOwnerIn( address owner, uint256 start, uint256 stop ) external view returns (uint256[] memory); /** * @dev Returns an array of token IDs owned by `owner`. * * This function scans the ownership mapping and is O(`totalSupply`) in complexity. * It is meant to be called off-chain. * * See {ERC721AQueryable-tokensOfOwnerIn} for splitting the scan into * multiple smaller scans if the collection is large enough to cause * an out-of-gas error (10K collections should be fine). */ function tokensOfOwner(address owner) external view returns (uint256[] memory); }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.3 // Creator: Chiru Labs pragma solidity ^0.8.4; import '../IERC721A.sol'; /** * @dev Interface of ERC721ABurnable. */ interface IERC721ABurnable is IERC721A { /** * @dev Burns `tokenId`. See {ERC721A-_burn}. * * Requirements: * * - The caller must own `tokenId` or be an approved operator. */ function burn(uint256 tokenId) external; }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.3 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of ERC721A. */ interface IERC721A { /** * The caller must own the token or be an approved operator. */ error ApprovalCallerNotOwnerNorApproved(); /** * The token does not exist. */ error ApprovalQueryForNonexistentToken(); /** * Cannot query the balance for the zero address. */ error BalanceQueryForZeroAddress(); /** * Cannot mint to the zero address. */ error MintToZeroAddress(); /** * The quantity of tokens minted must be more than zero. */ error MintZeroQuantity(); /** * The token does not exist. */ error OwnerQueryForNonexistentToken(); /** * The caller must own the token or be an approved operator. */ error TransferCallerNotOwnerNorApproved(); /** * The token must be owned by `from`. */ error TransferFromIncorrectOwner(); /** * Cannot safely transfer to a contract that does not implement the * ERC721Receiver interface. */ error TransferToNonERC721ReceiverImplementer(); /** * Cannot transfer to the zero address. */ error TransferToZeroAddress(); /** * The token does not exist. */ error URIQueryForNonexistentToken(); /** * The `quantity` minted with ERC2309 exceeds the safety limit. */ error MintERC2309QuantityExceedsLimit(); /** * The `extraData` cannot be set on an unintialized ownership slot. */ error OwnershipNotInitializedForExtraData(); // ============================================================= // STRUCTS // ============================================================= struct TokenOwnership { // The address of the owner. address addr; // Stores the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}. uint24 extraData; } // ============================================================= // TOKEN COUNTERS // ============================================================= /** * @dev Returns the total number of tokens in existence. * Burned tokens will reduce the count. * To get the total number of tokens minted, please see {_totalMinted}. */ function totalSupply() external view returns (uint256); // ============================================================= // IERC165 // ============================================================= /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) * to learn more about how these ids are created. * * This function call must use less than 30000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); // ============================================================= // IERC721 // ============================================================= /** * @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, bytes calldata data ) external payable; /** * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external payable; /** * @dev Transfers `tokenId` 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 payable; /** * @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 payable; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} * for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll}. */ function isApprovedForAll(address owner, address operator) external view returns (bool); // ============================================================= // IERC721Metadata // ============================================================= /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); // ============================================================= // IERC2309 // ============================================================= /** * @dev Emitted when tokens in `fromTokenId` to `toTokenId` * (inclusive) is transferred from `from` to `to`, as defined in the * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard. * * See {_mintERC2309} for more details. */ event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IVoiceMaskAlpha","name":"_alpha","type":"address"},{"internalType":"uint256","name":"_timeBuffer","type":"uint256"},{"internalType":"uint256","name":"_reservePrice","type":"uint256"},{"internalType":"uint256","name":"_durationTime","type":"uint256"},{"internalType":"uint8","name":"_minBidIncrementPercentage","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"alphaId","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bool","name":"extended","type":"bool"}],"name":"AuctionBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"error","type":"string"}],"name":"AuctionCreateFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"alphaId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"alphaId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"AuctionExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"}],"name":"AuctionGasUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minBidIncrementPercentage","type":"uint256"}],"name":"AuctionMinBidIncrementPercentageUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AuctionRefundFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reservePrice","type":"uint256"}],"name":"AuctionReservePriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"alphaId","type":"uint256"},{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AuctionSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timeBuffer","type":"uint256"}],"name":"AuctionTimeBufferUpdated","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":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"auction","outputs":[{"internalType":"uint256","name":"alphaId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"bool","name":"settled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"alphaId","type":"uint256"}],"name":"createBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"durationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBidIncrementPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_durationTime","type":"uint256"}],"name":"setDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"setGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_minBidIncrementPercentage","type":"uint8"}],"name":"setMinBidIncrementPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reservePrice","type":"uint256"}],"name":"setReservePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeBuffer","type":"uint256"}],"name":"setTimeBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settleAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settleCurrentAndCreateNewAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timeBuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"voiceMaskAlpha","outputs":[{"internalType":"contract IVoiceMaskAlpha","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002e1938038062002e1983398181016040528101906200003791906200039f565b60008060006101000a81548160ff02191690831515021790555060018081905550620000786200006c6200010d60201b60201c565b6200011560201b60201c565b62000088620001db60201b60201c565b84600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600481905550826005819055508160068190555080600860006101000a81548160ff021916908360ff1602179055506175306007819055505050505050620004d8565b600033905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001eb6200029260201b60201c565b156200022e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002259062000488565b60405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620002796200010d60201b60201c565b604051620002889190620004bb565b60405180910390a1565b60008060009054906101000a900460ff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002da82620002ad565b9050919050565b6000620002ee82620002cd565b9050919050565b6200030081620002e1565b81146200030c57600080fd5b50565b6000815190506200032081620002f5565b92915050565b6000819050919050565b6200033b8162000326565b81146200034757600080fd5b50565b6000815190506200035b8162000330565b92915050565b600060ff82169050919050565b620003798162000361565b81146200038557600080fd5b50565b60008151905062000399816200036e565b92915050565b600080600080600060a08688031215620003be57620003bd620002a8565b5b6000620003ce888289016200030f565b9550506020620003e1888289016200034a565b9450506040620003f4888289016200034a565b935050606062000407888289016200034a565b92505060806200041a8882890162000388565b9150509295509295909350565b600082825260208201905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006200047060108362000427565b91506200047d8262000438565b602082019050919050565b60006020820190508181036000830152620004a38162000461565b9050919050565b620004b581620002cd565b82525050565b6000602082019050620004d26000830184620004aa565b92915050565b61293180620004e86000396000f3fe60806040526004361061012a5760003560e01c8063991c750d116100ab578063dd51faa21161006f578063dd51faa214610354578063ec91f2a41461037d578063f25efffc146103a8578063f2fde38b146103bf578063f6be71d1146103e8578063f8b75fb5146104115761012a565b8063991c750d14610293578063a4d0a17e146102be578063b296024d146102d5578063ce9c7c0d14610300578063db2e1eed146103295761012a565b80637120334b116100f25780637120334b146101e1578063715018a61461020a5780637d9f6db5146102215780638456cb59146102515780638da5cb5b146102685761012a565b806336ebdb381461012f5780633f4ba83a146101585780635c975abb1461016f578063659dd2b41461019a5780636ca7c216146101b6575b600080fd5b34801561013b57600080fd5b5061015660048036038101906101519190611ab0565b61043c565b005b34801561016457600080fd5b5061016d61050d565b005b34801561017b57600080fd5b506101846105c4565b6040516101919190611af8565b60405180910390f35b6101b460048036038101906101af9190611b49565b6105da565b005b3480156101c257600080fd5b506101cb610a43565b6040516101d89190611b85565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611b49565b610a49565b005b34801561021657600080fd5b5061021f610b06565b005b34801561022d57600080fd5b50610236610b8e565b60405161024896959493929190611be1565b60405180910390f35b34801561025d57600080fd5b50610266610be5565b005b34801561027457600080fd5b5061027d610c6b565b60405161028a9190611c63565b60405180910390f35b34801561029f57600080fd5b506102a8610c95565b6040516102b59190611cdd565b60405180910390f35b3480156102ca57600080fd5b506102d3610cbb565b005b3480156102e157600080fd5b506102ea610d60565b6040516102f79190611d07565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190611b49565b610d73565b005b34801561033557600080fd5b5061033e610e30565b60405161034b9190611b85565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190611b49565b610e36565b005b34801561038957600080fd5b50610392610f3a565b60405161039f9190611b85565b60405180910390f35b3480156103b457600080fd5b506103bd610f40565b005b3480156103cb57600080fd5b506103e660048036038101906103e19190611d4e565b610fee565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190611b49565b6110e5565b005b34801561041d57600080fd5b5061042661116b565b6040516104339190611b85565b60405180910390f35b610444611171565b73ffffffffffffffffffffffffffffffffffffffff16610462610c6b565b73ffffffffffffffffffffffffffffffffffffffff16146104b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104af90611dd8565b60405180910390fd5b80600860006101000a81548160ff021916908360ff1602179055507fec5ccd96cc77b6219e9d44143df916af68fc169339ea7de5008ff15eae13450d816040516105029190611e29565b60405180910390a150565b610515611171565b73ffffffffffffffffffffffffffffffffffffffff16610533610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090611dd8565b60405180910390fd5b610591611179565b600060096002015414806105b45750600960040160149054906101000a900460ff165b156105c2576105c161121a565b5b565b60008060009054906101000a900460ff16905090565b6105e26105c4565b15610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061990611e90565b60405180910390fd5b600260015403610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e90611efc565b60405180910390fd5b6002600181905550600060096040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff16151515158152505090508060600151421061075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075690611f68565b60405180910390fd5b818160000151146107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c90611fd4565b60405180910390fd5b6005543410156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190612040565b60405180910390fd5b6064600860009054906101000a900460ff1660ff16826020015161080e919061208f565b6108189190612118565b81602001516108279190612149565b341015610869576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610860906121ef565b60405180910390fd5b6000816080015190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d79061225b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109235761092281836020015161145a565b5b3460096001018190555033600960040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600454428460600151610986919061227b565b10905080156109af576004544261099d9190612149565b83606001818152506009600301819055505b82600001517f1159164c56f277e6fc99c11731bd380e0347deb969b75523398734c252706ea33334846040516109e7939291906122af565b60405180910390a28015610a365782600001517f6e912a3a9105bdd2af817ba5adc14e6c127c1035b5b648faa29ca0d58ab8ff4e8460600151604051610a2d9190611b85565b60405180910390a25b5050506001808190555050565b60075481565b610a51611171565b73ffffffffffffffffffffffffffffffffffffffff16610a6f610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90611dd8565b60405180910390fd5b806004819055507f1b55d9f7002bda4490f467e326f22a4a847629c0f2d1ed421607d318d25b410d81604051610afb9190611b85565b60405180910390a150565b610b0e611171565b73ffffffffffffffffffffffffffffffffffffffff16610b2c610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990611dd8565b60405180910390fd5b610b8c60006114bb565b565b60098060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160149054906101000a900460ff16905086565b610bed611171565b73ffffffffffffffffffffffffffffffffffffffff16610c0b610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5890611dd8565b60405180910390fd5b610c69611581565b565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cc36105c4565b610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612332565b60405180910390fd5b600260015403610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90611efc565b60405180910390fd5b6002600181905550610d57611623565b60018081905550565b600860009054906101000a900460ff1681565b610d7b611171565b73ffffffffffffffffffffffffffffffffffffffff16610d99610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690611dd8565b60405180910390fd5b806005819055507f6ab2e127d7fdf53b8f304e59d3aab5bfe97979f52a85479691a6fab27a28a6b281604051610e259190611b85565b60405180910390a150565b60055481565b610e3e611171565b73ffffffffffffffffffffffffffffffffffffffff16610e5c610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990611dd8565b60405180910390fd5b615208811015610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906123c4565b60405180910390fd5b806007819055507ffefb35d3b552827c626b8a9c24b4672a6ed742e98cc7b0d6d2d13f6bdfb2c019600754604051610f2f9190611b85565b60405180910390a150565b60045481565b600260015403610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90611efc565b60405180910390fd5b6002600181905550610f956105c4565b15610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90611e90565b60405180910390fd5b610fdd611623565b610fe561121a565b60018081905550565b610ff6611171565b73ffffffffffffffffffffffffffffffffffffffff16611014610c6b565b73ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106190611dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090612456565b60405180910390fd5b6110e2816114bb565b50565b6110ed611171565b73ffffffffffffffffffffffffffffffffffffffff1661110b610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890611dd8565b60405180910390fd5b8060068190555050565b60065481565b600033905090565b6111816105c4565b6111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612332565b60405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611203611171565b6040516112109190611c63565b60405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332f4a69b6040518163ffffffff1660e01b81526004016020604051808303816000875af19250505080156112a657506040513d601f19601f820116820180604052508101906112a3919061248b565b60015b611327576112b26124c5565b806308c379a00361131657506112c6612558565b806112d15750611318565b6112d9611581565b7f34adcfbf5779215f761179d3612b2af564674ceab027824e33ede0fd36e928ea816040516113089190612656565b60405180910390a150611322565b505b3d6000803e3d6000fd5b611458565b600042905060006006548261133c9190612149565b90506040518060c0016040528084815260200160008152602001838152602001828152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525060096000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908315150217905550905050827fd6eddd1118d71820909c1197aa966dbc15ed6f508554252169cc3d5ccac756ca838360405161144c929190612678565b60405180910390a25050505b565b611464828261199d565b6114b7578173ffffffffffffffffffffffffffffffffffffffff167f177b837046775fa5b29ab5200855e656a45bbfcfa33b871ed307c6b1c1472aa3826040516114ae9190611b85565b60405180910390a25b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6115896105c4565b156115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090611e90565b60405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861160c611171565b6040516116199190611c63565b60405180910390a1565b600060096040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff16151515158152505090508060600151421015611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b906126ed565b60405180910390fd5b8060a0015115611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090612759565b60405180910390fd5b60008160400151036117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906127c5565b60405180910390fd5b6001600960040160146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff160361189757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3061183d610c6b565b84600001516040518463ffffffff1660e01b8152600401611860939291906127e5565b600060405180830381600087803b15801561187a57600080fd5b505af115801561188e573d6000803e3d6000fd5b50505050611931565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30836080015184600001516040518463ffffffff1660e01b81526004016118fe9392919061283d565b600060405180830381600087803b15801561191857600080fd5b505af115801561192c573d6000803e3d6000fd5b505050505b60008160200151111561195457611953611949610c6b565b826020015161145a565b5b80600001517fc9f72b276a388619c6d185d146697036241880c36654b1a3ffdad07c24038d9982608001518360200151604051611992929190612874565b60405180910390a250565b6000808373ffffffffffffffffffffffffffffffffffffffff168360075490600067ffffffffffffffff8111156119d7576119d66124f8565b5b6040519080825280601f01601f191660200182016040528015611a095781602001600182028036833780820191505090505b50604051611a1791906128e4565b600060405180830381858888f193505050503d8060008114611a55576040519150601f19603f3d011682016040523d82523d6000602084013e611a5a565b606091505b505090508091505092915050565b6000604051905090565b600080fd5b600060ff82169050919050565b611a8d81611a77565b8114611a9857600080fd5b50565b600081359050611aaa81611a84565b92915050565b600060208284031215611ac657611ac5611a72565b5b6000611ad484828501611a9b565b91505092915050565b60008115159050919050565b611af281611add565b82525050565b6000602082019050611b0d6000830184611ae9565b92915050565b6000819050919050565b611b2681611b13565b8114611b3157600080fd5b50565b600081359050611b4381611b1d565b92915050565b600060208284031215611b5f57611b5e611a72565b5b6000611b6d84828501611b34565b91505092915050565b611b7f81611b13565b82525050565b6000602082019050611b9a6000830184611b76565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bcb82611ba0565b9050919050565b611bdb81611bc0565b82525050565b600060c082019050611bf66000830189611b76565b611c036020830188611b76565b611c106040830187611b76565b611c1d6060830186611b76565b611c2a6080830185611bd2565b611c3760a0830184611ae9565b979650505050505050565b6000611c4d82611ba0565b9050919050565b611c5d81611c42565b82525050565b6000602082019050611c786000830184611c54565b92915050565b6000819050919050565b6000611ca3611c9e611c9984611ba0565b611c7e565b611ba0565b9050919050565b6000611cb582611c88565b9050919050565b6000611cc782611caa565b9050919050565b611cd781611cbc565b82525050565b6000602082019050611cf26000830184611cce565b92915050565b611d0181611a77565b82525050565b6000602082019050611d1c6000830184611cf8565b92915050565b611d2b81611c42565b8114611d3657600080fd5b50565b600081359050611d4881611d22565b92915050565b600060208284031215611d6457611d63611a72565b5b6000611d7284828501611d39565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611dc2602083611d7b565b9150611dcd82611d8c565b602082019050919050565b60006020820190508181036000830152611df181611db5565b9050919050565b6000611e13611e0e611e0984611a77565b611c7e565b611b13565b9050919050565b611e2381611df8565b82525050565b6000602082019050611e3e6000830184611e1a565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000611e7a601083611d7b565b9150611e8582611e44565b602082019050919050565b60006020820190508181036000830152611ea981611e6d565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611ee6601f83611d7b565b9150611ef182611eb0565b602082019050919050565b60006020820190508181036000830152611f1581611ed9565b9050919050565b7f41756374696f6e20697320657870697265640000000000000000000000000000600082015250565b6000611f52601283611d7b565b9150611f5d82611f1c565b602082019050919050565b60006020820190508181036000830152611f8181611f45565b9050919050565b7f4e6f7420666f7220746869732061756374696f6e000000000000000000000000600082015250565b6000611fbe601483611d7b565b9150611fc982611f88565b602082019050919050565b60006020820190508181036000830152611fed81611fb1565b9050919050565b7f53656e64206174206c6561737420726573657276655072696365000000000000600082015250565b600061202a601a83611d7b565b915061203582611ff4565b602082019050919050565b600060208201905081810360008301526120598161201d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061209a82611b13565b91506120a583611b13565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120de576120dd612060565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061212382611b13565b915061212e83611b13565b92508261213e5761213d6120e9565b5b828204905092915050565b600061215482611b13565b915061215f83611b13565b925082820190508082111561217757612176612060565b5b92915050565b7f496e6372656173652074686520626964206279206d696e426964496e6372656d60008201527f656e7450657263656e7461676500000000000000000000000000000000000000602082015250565b60006121d9602d83611d7b565b91506121e48261217d565b604082019050919050565b60006020820190508181036000830152612208816121cc565b9050919050565b7f5761697420666f72206e657874207475726e0000000000000000000000000000600082015250565b6000612245601283611d7b565b91506122508261220f565b602082019050919050565b6000602082019050818103600083015261227481612238565b9050919050565b600061228682611b13565b915061229183611b13565b92508282039050818111156122a9576122a8612060565b5b92915050565b60006060820190506122c46000830186611c54565b6122d16020830185611b76565b6122de6040830184611ae9565b949350505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061231c601483611d7b565b9150612327826122e6565b602082019050919050565b6000602082019050818103600083015261234b8161230f565b9050919050565b7f476173206973206e6f7420656e6f75676820666f72207472616e73616374696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006123ae602183611d7b565b91506123b982612352565b604082019050919050565b600060208201905081810360008301526123dd816123a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612440602683611d7b565b915061244b826123e4565b604082019050919050565b6000602082019050818103600083015261246f81612433565b9050919050565b60008151905061248581611b1d565b92915050565b6000602082840312156124a1576124a0611a72565b5b60006124af84828501612476565b91505092915050565b60008160e01c9050919050565b600060033d11156124e45760046000803e6124e16000516124b8565b90505b90565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612530826124e7565b810181811067ffffffffffffffff8211171561254f5761254e6124f8565b5b80604052505050565b600060443d106125e55761256a611a68565b60043d036004823e80513d602482011167ffffffffffffffff821117156125925750506125e5565b808201805167ffffffffffffffff8111156125b057505050506125e5565b80602083010160043d0385018111156125cd5750505050506125e5565b6125dc82602001850186612527565b82955050505050505b90565b600081519050919050565b60005b838110156126115780820151818401526020810190506125f6565b60008484015250505050565b6000612628826125e8565b6126328185611d7b565b93506126428185602086016125f3565b61264b816124e7565b840191505092915050565b60006020820190508181036000830152612670818461261d565b905092915050565b600060408201905061268d6000830185611b76565b61269a6020830184611b76565b9392505050565b7f41756374696f6e20697320616374697665000000000000000000000000000000600082015250565b60006126d7601183611d7b565b91506126e2826126a1565b602082019050919050565b60006020820190508181036000830152612706816126ca565b9050919050565b7f41756374696f6e20697320736574746c656420616c7265616479000000000000600082015250565b6000612743601a83611d7b565b915061274e8261270d565b602082019050919050565b6000602082019050818103600083015261277281612736565b9050919050565b7f41756374696f6e206469646e2774207374617274207965740000000000000000600082015250565b60006127af601883611d7b565b91506127ba82612779565b602082019050919050565b600060208201905081810360008301526127de816127a2565b9050919050565b60006060820190506127fa6000830186611c54565b6128076020830185611c54565b6128146040830184611b76565b949350505050565b600061282782611caa565b9050919050565b6128378161281c565b82525050565b60006060820190506128526000830186611c54565b61285f602083018561282e565b61286c6040830184611b76565b949350505050565b6000604082019050612889600083018561282e565b6128966020830184611b76565b9392505050565b600081519050919050565b600081905092915050565b60006128be8261289d565b6128c881856128a8565b93506128d88185602086016125f3565b80840191505092915050565b60006128f082846128b3565b91508190509291505056fea26469706673582212206393d1cb0edd12206fb4644cab543c3e4d63c7e1a9e7e5544bd893b1826e7ce564736f6c634300081000330000000000000000000000006a882514a509271bf8a5e3f16268c3a363dc93a9000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000a8c00000000000000000000000000000000000000000000000000000000000000002
Deployed Bytecode
0x60806040526004361061012a5760003560e01c8063991c750d116100ab578063dd51faa21161006f578063dd51faa214610354578063ec91f2a41461037d578063f25efffc146103a8578063f2fde38b146103bf578063f6be71d1146103e8578063f8b75fb5146104115761012a565b8063991c750d14610293578063a4d0a17e146102be578063b296024d146102d5578063ce9c7c0d14610300578063db2e1eed146103295761012a565b80637120334b116100f25780637120334b146101e1578063715018a61461020a5780637d9f6db5146102215780638456cb59146102515780638da5cb5b146102685761012a565b806336ebdb381461012f5780633f4ba83a146101585780635c975abb1461016f578063659dd2b41461019a5780636ca7c216146101b6575b600080fd5b34801561013b57600080fd5b5061015660048036038101906101519190611ab0565b61043c565b005b34801561016457600080fd5b5061016d61050d565b005b34801561017b57600080fd5b506101846105c4565b6040516101919190611af8565b60405180910390f35b6101b460048036038101906101af9190611b49565b6105da565b005b3480156101c257600080fd5b506101cb610a43565b6040516101d89190611b85565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611b49565b610a49565b005b34801561021657600080fd5b5061021f610b06565b005b34801561022d57600080fd5b50610236610b8e565b60405161024896959493929190611be1565b60405180910390f35b34801561025d57600080fd5b50610266610be5565b005b34801561027457600080fd5b5061027d610c6b565b60405161028a9190611c63565b60405180910390f35b34801561029f57600080fd5b506102a8610c95565b6040516102b59190611cdd565b60405180910390f35b3480156102ca57600080fd5b506102d3610cbb565b005b3480156102e157600080fd5b506102ea610d60565b6040516102f79190611d07565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190611b49565b610d73565b005b34801561033557600080fd5b5061033e610e30565b60405161034b9190611b85565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190611b49565b610e36565b005b34801561038957600080fd5b50610392610f3a565b60405161039f9190611b85565b60405180910390f35b3480156103b457600080fd5b506103bd610f40565b005b3480156103cb57600080fd5b506103e660048036038101906103e19190611d4e565b610fee565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190611b49565b6110e5565b005b34801561041d57600080fd5b5061042661116b565b6040516104339190611b85565b60405180910390f35b610444611171565b73ffffffffffffffffffffffffffffffffffffffff16610462610c6b565b73ffffffffffffffffffffffffffffffffffffffff16146104b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104af90611dd8565b60405180910390fd5b80600860006101000a81548160ff021916908360ff1602179055507fec5ccd96cc77b6219e9d44143df916af68fc169339ea7de5008ff15eae13450d816040516105029190611e29565b60405180910390a150565b610515611171565b73ffffffffffffffffffffffffffffffffffffffff16610533610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090611dd8565b60405180910390fd5b610591611179565b600060096002015414806105b45750600960040160149054906101000a900460ff165b156105c2576105c161121a565b5b565b60008060009054906101000a900460ff16905090565b6105e26105c4565b15610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061990611e90565b60405180910390fd5b600260015403610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e90611efc565b60405180910390fd5b6002600181905550600060096040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff16151515158152505090508060600151421061075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075690611f68565b60405180910390fd5b818160000151146107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c90611fd4565b60405180910390fd5b6005543410156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190612040565b60405180910390fd5b6064600860009054906101000a900460ff1660ff16826020015161080e919061208f565b6108189190612118565b81602001516108279190612149565b341015610869576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610860906121ef565b60405180910390fd5b6000816080015190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d79061225b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109235761092281836020015161145a565b5b3460096001018190555033600960040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600454428460600151610986919061227b565b10905080156109af576004544261099d9190612149565b83606001818152506009600301819055505b82600001517f1159164c56f277e6fc99c11731bd380e0347deb969b75523398734c252706ea33334846040516109e7939291906122af565b60405180910390a28015610a365782600001517f6e912a3a9105bdd2af817ba5adc14e6c127c1035b5b648faa29ca0d58ab8ff4e8460600151604051610a2d9190611b85565b60405180910390a25b5050506001808190555050565b60075481565b610a51611171565b73ffffffffffffffffffffffffffffffffffffffff16610a6f610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90611dd8565b60405180910390fd5b806004819055507f1b55d9f7002bda4490f467e326f22a4a847629c0f2d1ed421607d318d25b410d81604051610afb9190611b85565b60405180910390a150565b610b0e611171565b73ffffffffffffffffffffffffffffffffffffffff16610b2c610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990611dd8565b60405180910390fd5b610b8c60006114bb565b565b60098060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160149054906101000a900460ff16905086565b610bed611171565b73ffffffffffffffffffffffffffffffffffffffff16610c0b610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5890611dd8565b60405180910390fd5b610c69611581565b565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cc36105c4565b610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612332565b60405180910390fd5b600260015403610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90611efc565b60405180910390fd5b6002600181905550610d57611623565b60018081905550565b600860009054906101000a900460ff1681565b610d7b611171565b73ffffffffffffffffffffffffffffffffffffffff16610d99610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de690611dd8565b60405180910390fd5b806005819055507f6ab2e127d7fdf53b8f304e59d3aab5bfe97979f52a85479691a6fab27a28a6b281604051610e259190611b85565b60405180910390a150565b60055481565b610e3e611171565b73ffffffffffffffffffffffffffffffffffffffff16610e5c610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990611dd8565b60405180910390fd5b615208811015610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906123c4565b60405180910390fd5b806007819055507ffefb35d3b552827c626b8a9c24b4672a6ed742e98cc7b0d6d2d13f6bdfb2c019600754604051610f2f9190611b85565b60405180910390a150565b60045481565b600260015403610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90611efc565b60405180910390fd5b6002600181905550610f956105c4565b15610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90611e90565b60405180910390fd5b610fdd611623565b610fe561121a565b60018081905550565b610ff6611171565b73ffffffffffffffffffffffffffffffffffffffff16611014610c6b565b73ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106190611dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090612456565b60405180910390fd5b6110e2816114bb565b50565b6110ed611171565b73ffffffffffffffffffffffffffffffffffffffff1661110b610c6b565b73ffffffffffffffffffffffffffffffffffffffff1614611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890611dd8565b60405180910390fd5b8060068190555050565b60065481565b600033905090565b6111816105c4565b6111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612332565b60405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611203611171565b6040516112109190611c63565b60405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332f4a69b6040518163ffffffff1660e01b81526004016020604051808303816000875af19250505080156112a657506040513d601f19601f820116820180604052508101906112a3919061248b565b60015b611327576112b26124c5565b806308c379a00361131657506112c6612558565b806112d15750611318565b6112d9611581565b7f34adcfbf5779215f761179d3612b2af564674ceab027824e33ede0fd36e928ea816040516113089190612656565b60405180910390a150611322565b505b3d6000803e3d6000fd5b611458565b600042905060006006548261133c9190612149565b90506040518060c0016040528084815260200160008152602001838152602001828152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525060096000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908315150217905550905050827fd6eddd1118d71820909c1197aa966dbc15ed6f508554252169cc3d5ccac756ca838360405161144c929190612678565b60405180910390a25050505b565b611464828261199d565b6114b7578173ffffffffffffffffffffffffffffffffffffffff167f177b837046775fa5b29ab5200855e656a45bbfcfa33b871ed307c6b1c1472aa3826040516114ae9190611b85565b60405180910390a25b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6115896105c4565b156115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090611e90565b60405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861160c611171565b6040516116199190611c63565b60405180910390a1565b600060096040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff16151515158152505090508060600151421015611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b906126ed565b60405180910390fd5b8060a0015115611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090612759565b60405180910390fd5b60008160400151036117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906127c5565b60405180910390fd5b6001600960040160146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff160361189757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3061183d610c6b565b84600001516040518463ffffffff1660e01b8152600401611860939291906127e5565b600060405180830381600087803b15801561187a57600080fd5b505af115801561188e573d6000803e3d6000fd5b50505050611931565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30836080015184600001516040518463ffffffff1660e01b81526004016118fe9392919061283d565b600060405180830381600087803b15801561191857600080fd5b505af115801561192c573d6000803e3d6000fd5b505050505b60008160200151111561195457611953611949610c6b565b826020015161145a565b5b80600001517fc9f72b276a388619c6d185d146697036241880c36654b1a3ffdad07c24038d9982608001518360200151604051611992929190612874565b60405180910390a250565b6000808373ffffffffffffffffffffffffffffffffffffffff168360075490600067ffffffffffffffff8111156119d7576119d66124f8565b5b6040519080825280601f01601f191660200182016040528015611a095781602001600182028036833780820191505090505b50604051611a1791906128e4565b600060405180830381858888f193505050503d8060008114611a55576040519150601f19603f3d011682016040523d82523d6000602084013e611a5a565b606091505b505090508091505092915050565b6000604051905090565b600080fd5b600060ff82169050919050565b611a8d81611a77565b8114611a9857600080fd5b50565b600081359050611aaa81611a84565b92915050565b600060208284031215611ac657611ac5611a72565b5b6000611ad484828501611a9b565b91505092915050565b60008115159050919050565b611af281611add565b82525050565b6000602082019050611b0d6000830184611ae9565b92915050565b6000819050919050565b611b2681611b13565b8114611b3157600080fd5b50565b600081359050611b4381611b1d565b92915050565b600060208284031215611b5f57611b5e611a72565b5b6000611b6d84828501611b34565b91505092915050565b611b7f81611b13565b82525050565b6000602082019050611b9a6000830184611b76565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bcb82611ba0565b9050919050565b611bdb81611bc0565b82525050565b600060c082019050611bf66000830189611b76565b611c036020830188611b76565b611c106040830187611b76565b611c1d6060830186611b76565b611c2a6080830185611bd2565b611c3760a0830184611ae9565b979650505050505050565b6000611c4d82611ba0565b9050919050565b611c5d81611c42565b82525050565b6000602082019050611c786000830184611c54565b92915050565b6000819050919050565b6000611ca3611c9e611c9984611ba0565b611c7e565b611ba0565b9050919050565b6000611cb582611c88565b9050919050565b6000611cc782611caa565b9050919050565b611cd781611cbc565b82525050565b6000602082019050611cf26000830184611cce565b92915050565b611d0181611a77565b82525050565b6000602082019050611d1c6000830184611cf8565b92915050565b611d2b81611c42565b8114611d3657600080fd5b50565b600081359050611d4881611d22565b92915050565b600060208284031215611d6457611d63611a72565b5b6000611d7284828501611d39565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611dc2602083611d7b565b9150611dcd82611d8c565b602082019050919050565b60006020820190508181036000830152611df181611db5565b9050919050565b6000611e13611e0e611e0984611a77565b611c7e565b611b13565b9050919050565b611e2381611df8565b82525050565b6000602082019050611e3e6000830184611e1a565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000611e7a601083611d7b565b9150611e8582611e44565b602082019050919050565b60006020820190508181036000830152611ea981611e6d565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611ee6601f83611d7b565b9150611ef182611eb0565b602082019050919050565b60006020820190508181036000830152611f1581611ed9565b9050919050565b7f41756374696f6e20697320657870697265640000000000000000000000000000600082015250565b6000611f52601283611d7b565b9150611f5d82611f1c565b602082019050919050565b60006020820190508181036000830152611f8181611f45565b9050919050565b7f4e6f7420666f7220746869732061756374696f6e000000000000000000000000600082015250565b6000611fbe601483611d7b565b9150611fc982611f88565b602082019050919050565b60006020820190508181036000830152611fed81611fb1565b9050919050565b7f53656e64206174206c6561737420726573657276655072696365000000000000600082015250565b600061202a601a83611d7b565b915061203582611ff4565b602082019050919050565b600060208201905081810360008301526120598161201d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061209a82611b13565b91506120a583611b13565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120de576120dd612060565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061212382611b13565b915061212e83611b13565b92508261213e5761213d6120e9565b5b828204905092915050565b600061215482611b13565b915061215f83611b13565b925082820190508082111561217757612176612060565b5b92915050565b7f496e6372656173652074686520626964206279206d696e426964496e6372656d60008201527f656e7450657263656e7461676500000000000000000000000000000000000000602082015250565b60006121d9602d83611d7b565b91506121e48261217d565b604082019050919050565b60006020820190508181036000830152612208816121cc565b9050919050565b7f5761697420666f72206e657874207475726e0000000000000000000000000000600082015250565b6000612245601283611d7b565b91506122508261220f565b602082019050919050565b6000602082019050818103600083015261227481612238565b9050919050565b600061228682611b13565b915061229183611b13565b92508282039050818111156122a9576122a8612060565b5b92915050565b60006060820190506122c46000830186611c54565b6122d16020830185611b76565b6122de6040830184611ae9565b949350505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061231c601483611d7b565b9150612327826122e6565b602082019050919050565b6000602082019050818103600083015261234b8161230f565b9050919050565b7f476173206973206e6f7420656e6f75676820666f72207472616e73616374696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006123ae602183611d7b565b91506123b982612352565b604082019050919050565b600060208201905081810360008301526123dd816123a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612440602683611d7b565b915061244b826123e4565b604082019050919050565b6000602082019050818103600083015261246f81612433565b9050919050565b60008151905061248581611b1d565b92915050565b6000602082840312156124a1576124a0611a72565b5b60006124af84828501612476565b91505092915050565b60008160e01c9050919050565b600060033d11156124e45760046000803e6124e16000516124b8565b90505b90565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612530826124e7565b810181811067ffffffffffffffff8211171561254f5761254e6124f8565b5b80604052505050565b600060443d106125e55761256a611a68565b60043d036004823e80513d602482011167ffffffffffffffff821117156125925750506125e5565b808201805167ffffffffffffffff8111156125b057505050506125e5565b80602083010160043d0385018111156125cd5750505050506125e5565b6125dc82602001850186612527565b82955050505050505b90565b600081519050919050565b60005b838110156126115780820151818401526020810190506125f6565b60008484015250505050565b6000612628826125e8565b6126328185611d7b565b93506126428185602086016125f3565b61264b816124e7565b840191505092915050565b60006020820190508181036000830152612670818461261d565b905092915050565b600060408201905061268d6000830185611b76565b61269a6020830184611b76565b9392505050565b7f41756374696f6e20697320616374697665000000000000000000000000000000600082015250565b60006126d7601183611d7b565b91506126e2826126a1565b602082019050919050565b60006020820190508181036000830152612706816126ca565b9050919050565b7f41756374696f6e20697320736574746c656420616c7265616479000000000000600082015250565b6000612743601a83611d7b565b915061274e8261270d565b602082019050919050565b6000602082019050818103600083015261277281612736565b9050919050565b7f41756374696f6e206469646e2774207374617274207965740000000000000000600082015250565b60006127af601883611d7b565b91506127ba82612779565b602082019050919050565b600060208201905081810360008301526127de816127a2565b9050919050565b60006060820190506127fa6000830186611c54565b6128076020830185611c54565b6128146040830184611b76565b949350505050565b600061282782611caa565b9050919050565b6128378161281c565b82525050565b60006060820190506128526000830186611c54565b61285f602083018561282e565b61286c6040830184611b76565b949350505050565b6000604082019050612889600083018561282e565b6128966020830184611b76565b9392505050565b600081519050919050565b600081905092915050565b60006128be8261289d565b6128c881856128a8565b93506128d88185602086016125f3565b80840191505092915050565b60006128f082846128b3565b91508190509291505056fea26469706673582212206393d1cb0edd12206fb4644cab543c3e4d63c7e1a9e7e5544bd893b1826e7ce564736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006a882514a509271bf8a5e3f16268c3a363dc93a9000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000a8c00000000000000000000000000000000000000000000000000000000000000002
-----Decoded View---------------
Arg [0] : _alpha (address): 0x6a882514a509271Bf8A5e3F16268C3a363Dc93A9
Arg [1] : _timeBuffer (uint256): 300
Arg [2] : _reservePrice (uint256): 1
Arg [3] : _durationTime (uint256): 43200
Arg [4] : _minBidIncrementPercentage (uint8): 2
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000006a882514a509271bf8a5e3f16268c3a363dc93a9
Arg [1] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000000000000000000000000000000000000000a8c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.