More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,004 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Settle Auction | 16644791 | 525 days ago | IN | 0 ETH | 0.00375456 | ||||
Pause | 16644784 | 525 days ago | IN | 0 ETH | 0.001683 | ||||
Settle Current A... | 16623450 | 528 days ago | IN | 0 ETH | 0.00261679 | ||||
Settle Current A... | 16619933 | 528 days ago | IN | 0 ETH | 0.00336915 | ||||
Settle Current A... | 16619630 | 529 days ago | IN | 0 ETH | 0.00286894 | ||||
Settle Current A... | 16619297 | 529 days ago | IN | 0 ETH | 0.00307392 | ||||
Settle Current A... | 16618993 | 529 days ago | IN | 0 ETH | 0.00442073 | ||||
Settle Current A... | 16618664 | 529 days ago | IN | 0 ETH | 0.00215184 | ||||
Settle Current A... | 16618343 | 529 days ago | IN | 0 ETH | 0.002118 | ||||
Settle Current A... | 16618041 | 529 days ago | IN | 0 ETH | 0.00214103 | ||||
Settle Current A... | 16617735 | 529 days ago | IN | 0 ETH | 0.00223497 | ||||
Settle Current A... | 16617432 | 529 days ago | IN | 0 ETH | 0.00231152 | ||||
Settle Current A... | 16617129 | 529 days ago | IN | 0 ETH | 0.00216965 | ||||
Settle Current A... | 16616825 | 529 days ago | IN | 0 ETH | 0.00214291 | ||||
Settle Current A... | 16616524 | 529 days ago | IN | 0 ETH | 0.00227142 | ||||
Create Bid | 16616285 | 529 days ago | IN | 0.01 ETH | 0.00127896 | ||||
Settle Current A... | 16616210 | 529 days ago | IN | 0 ETH | 0.00308038 | ||||
Settle Current A... | 16615806 | 529 days ago | IN | 0 ETH | 0.00274511 | ||||
Settle Current A... | 16615503 | 529 days ago | IN | 0 ETH | 0.00356653 | ||||
Settle Current A... | 16615068 | 529 days ago | IN | 0 ETH | 0.00285124 | ||||
Create Bid | 16614883 | 529 days ago | IN | 0.01 ETH | 0.00135055 | ||||
Settle Current A... | 16614767 | 529 days ago | IN | 0 ETH | 0.00245093 | ||||
Settle Current A... | 16614465 | 529 days ago | IN | 0 ETH | 0.00276489 | ||||
Settle Current A... | 16614162 | 529 days ago | IN | 0 ETH | 0.00251063 | ||||
Settle Current A... | 16613844 | 529 days ago | IN | 0 ETH | 0.00275955 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16616524 | 529 days ago | 0.01 ETH | ||||
16615068 | 529 days ago | 0.01 ETH | ||||
16610800 | 530 days ago | 0.01 ETH | ||||
16604520 | 531 days ago | 0.01 ETH | ||||
16588509 | 533 days ago | 0.01 ETH | ||||
16574411 | 535 days ago | 0.01 ETH | ||||
16517213 | 543 days ago | 0.01 ETH | ||||
16481851 | 548 days ago | 0.01 ETH | ||||
16476517 | 549 days ago | 0.01 ETH | ||||
16460823 | 551 days ago | 0.01 ETH | ||||
16459614 | 551 days ago | 0.01 ETH | ||||
16445902 | 553 days ago | 0.01 ETH | ||||
16443144 | 553 days ago | 0.01 ETH | ||||
16437558 | 554 days ago | 0.01 ETH | ||||
16426026 | 556 days ago | 0.01 ETH | ||||
16424507 | 556 days ago | 0.01 ETH | ||||
16418597 | 557 days ago | 0.01 ETH | ||||
16409227 | 558 days ago | 0.01 ETH | ||||
16408624 | 558 days ago | 0.01 ETH | ||||
16408019 | 558 days ago | 0.01 ETH | ||||
16407111 | 558 days ago | 0.01 ETH | ||||
16396461 | 560 days ago | 0.03 ETH | ||||
16396445 | 560 days ago | 0.02 ETH | ||||
16396416 | 560 days ago | 0.01 ETH | ||||
16395848 | 560 days ago | 0.01 ETH |
Loading...
Loading
Contract Name:
AuctionHouse
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 /// @title The VesselVerse auction house // LICENSE // AuctionHouse.sol is a modified version of Zora's AuctionHouse.sol: // https://github.com/ourzora/auction-house/blob/54a12ec1a6cf562e49f0a4917990474b11350a2d/contracts/AuctionHouse.sol // // AuctionHouse.sol source code Copyright Zora licensed under the GPL-3.0 license. // With modifications by VesselVerse. pragma solidity ^0.8.17; import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {IAuctionHouse} from "./interfaces/IAuctionHouse.sol"; import {IVesselVerse} from "./interfaces/IVesselVerse.sol"; import {IWETH} from "./interfaces/IWETH.sol"; import {ERC721Holder} from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; contract AuctionHouse is IAuctionHouse, Pausable, ReentrancyGuard, Ownable, ERC721Holder { // The Nouns ERC721 token contract IVesselVerse public vesselverse; // The address of the WETH contract address public weth; // The minimum amount of time left in an auction after a new bid is created uint256 public timeBuffer; // The minimum price accepted in an auction uint256 public reservePrice; // The minimum percentage difference between the last bid amount and the current bid uint8 public minBidIncrementPercentage; // The duration of a single auction uint256 public duration; // The active auction IAuctionHouse.Auction public auction; /// VesselVerse treasury address payable public beneficiary; /** * @notice Initialize the auction house and base contracts, * populate configuration values, and pause the contract. * @dev This function can only be called once. */ constructor( IVesselVerse _vesselverse, address _weth, uint256 _timeBuffer, uint256 _reservePrice, uint8 _minBidIncrementPercentage, uint256 _duration, address payable _beneficiary ) { _pause(); vesselverse = _vesselverse; weth = _weth; timeBuffer = _timeBuffer; reservePrice = _reservePrice; minBidIncrementPercentage = _minBidIncrementPercentage; duration = _duration; beneficiary = _beneficiary; } /// @notice Sets the VesselVerse treasury address. function setBeneficiary(address payable _beneficiary) public onlyOwner { beneficiary = _beneficiary; } /** * @notice Settle the current auction, mint a new VesselVerse, and put it up for auction. */ function settleCurrentAndCreateNewAuction() external override nonReentrant whenNotPaused { _settleAuction(); if (vesselverse.supplyLeft()) { _createAuction(); } } /** * @notice Settle the current auction. * @dev This function can only be called when the contract is paused. */ function settleAuction() external override whenPaused nonReentrant { _settleAuction(); } /** * @notice Create a bid for a VesselVerse, with a given amount. * @dev This contract only accepts payment in ETH. */ function createBid(uint256 vesselverseId) external payable override nonReentrant { IAuctionHouse.Auction memory _auction = auction; require( _auction.vesselverseId == vesselverseId, "VesselVerse not up for auction" ); require(block.timestamp < _auction.endTime, "Auction expired"); require(msg.value >= reservePrice, "Must send at least reservePrice"); require( msg.value >= _auction.amount + ((_auction.amount * minBidIncrementPercentage) / 100), "Must send more than last bid by minBidIncrementPercentage amount" ); address payable lastBidder = _auction.bidder; // Refund the last bidder, if applicable if (lastBidder != address(0)) { _safeTransferETHWithFallback(lastBidder, _auction.amount); } auction.amount = msg.value; auction.bidder = payable(msg.sender); // Extend the auction if the bid was received within `timeBuffer` of the auction end time bool extended = _auction.endTime - block.timestamp < timeBuffer; if (extended) { auction.endTime = _auction.endTime = block.timestamp + timeBuffer; } emit AuctionBid( _auction.vesselverseId, msg.sender, msg.value, extended ); if (extended) { emit AuctionExtended(_auction.vesselverseId, _auction.endTime); } } /** * @notice Pause the Nouns auction house. * @dev This function can only be called by the owner when the * contract is unpaused. While no new auctions can be started when paused, * anyone can settle an ongoing auction. */ function pause() external override onlyOwner { _pause(); } /** * @notice Unpause the VesselVerse auction house. * @dev This function can only be called by the owner when the * contract is paused. If required, this function will start a new auction. */ function unpause() external override onlyOwner { _unpause(); if ( (auction.startTime == 0 || auction.settled) && vesselverse.supplyLeft() ) { _createAuction(); } } /** * @notice Set the auction time buffer. * @dev Only callable by the owner. */ function setTimeBuffer(uint256 _timeBuffer) external override onlyOwner { timeBuffer = _timeBuffer; emit AuctionTimeBufferUpdated(_timeBuffer); } /** * @notice Set the auction reserve price. * @dev Only callable by the owner. */ function setReservePrice(uint256 _reservePrice) external override onlyOwner { reservePrice = _reservePrice; emit AuctionReservePriceUpdated(_reservePrice); } /** * @notice Set the auction minimum bid increment percentage. * @dev Only callable by the owner. */ function setMinBidIncrementPercentage(uint8 _minBidIncrementPercentage) external override onlyOwner { minBidIncrementPercentage = _minBidIncrementPercentage; emit AuctionMinBidIncrementPercentageUpdated( _minBidIncrementPercentage ); } /** * @notice Create an auction. * @dev Store the auction details in the `auction` state variable and emit an AuctionCreated event. * If the mint reverts, the minter was updated without pausing this contract first. To remedy this, * catch the revert and pause this contract. */ function _createAuction() internal { try vesselverse.mint() returns (uint256 vesselverseId) { uint256 startTime = block.timestamp; uint256 endTime = startTime + duration; auction = Auction({ vesselverseId: vesselverseId, amount: 0, startTime: startTime, endTime: endTime, bidder: payable(0), settled: false }); emit AuctionCreated(vesselverseId, startTime, endTime); } catch Error(string memory) { _pause(); } } /** * @notice Settle an auction, finalizing the bid and paying out to the owner. * @dev If there are no bids, it is sent to the treasury */ function _settleAuction() internal { IAuctionHouse.Auction memory _auction = auction; require(_auction.startTime != 0, "Auction hasn't begun"); require(!_auction.settled, "Auction has already been settled"); require( block.timestamp >= _auction.endTime, "Auction hasn't completed" ); auction.settled = true; if (_auction.bidder == address(0)) { vesselverse.safeTransferFrom( address(this), beneficiary, _auction.vesselverseId ); } else { vesselverse.safeTransferFrom( address(this), _auction.bidder, _auction.vesselverseId ); } if (_auction.amount > 0) { _safeTransferETHWithFallback(beneficiary, _auction.amount); } emit AuctionSettled( _auction.vesselverseId, _auction.bidder, _auction.amount ); } /** * @notice Transfer ETH. If the ETH transfer fails, wrap the ETH and try send it as WETH. */ function _safeTransferETHWithFallback(address to, uint256 amount) internal { if (!_safeTransferETH(to, amount)) { IWETH(weth).deposit{value: amount}(); IERC20(weth).transfer(to, amount); } } /** * @notice Transfer ETH and return the success status. * @dev This function only forwards 30,000 gas to the callee. */ function _safeTransferETH(address to, uint256 value) internal returns (bool) { (bool success, ) = to.call{value: value, gas: 30_000}(new bytes(0)); return success; } }
// SPDX-License-Identifier: GPL-3.0 /// @title Interface for Auction Houses pragma solidity ^0.8.17; interface IAuctionHouse { struct Auction { // ID for the VesselVerse (ERC721 token ID) uint256 vesselverseId; // The current highest bid amount uint256 amount; // The time that the auction started uint256 startTime; // The time that the auction is scheduled to end uint256 endTime; // The address of the current highest bid address payable bidder; // Whether or not the auction has been settled bool settled; } event AuctionCreated( uint256 indexed vesselverseId, uint256 startTime, uint256 endTime ); event AuctionBid( uint256 indexed vesselverseId, address sender, uint256 value, bool extended ); event AuctionExtended(uint256 indexed vesselverseId, uint256 endTime); event AuctionSettled( uint256 indexed vesselverseId, address winner, uint256 amount ); event AuctionTimeBufferUpdated(uint256 timeBuffer); event AuctionReservePriceUpdated(uint256 reservePrice); event AuctionMinBidIncrementPercentageUpdated( uint256 minBidIncrementPercentage ); function settleAuction() external; function settleCurrentAndCreateNewAuction() external; function createBid(uint256 vesselverseId) 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: GPL-3.0 /// @title Interface for IVesselVerse pragma solidity ^0.8.17; import "erc721a/contracts/interfaces/IERC721A.sol"; interface IVesselVerse is IERC721A { event VesselVerseCreated(uint256 indexed tokenId); event MinterUpdated(address minter); event MinterLocked(); function mint() external returns (uint256); function burn(uint256 tokenId) external; function setMinter(address minter) external; function lockMinter() external; function supplyLeft() external returns (bool); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.17; interface IWETH { function deposit() external payable; function withdraw(uint256 wad) external; function transfer(address to, uint256 value) external returns (bool); }
// 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 (last updated v4.7.0) (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 Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { 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 (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 v4.4.1 (token/ERC721/utils/ERC721Holder.sol) 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 // 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 // ERC721A Contracts v4.2.3 // Creator: Chiru Labs pragma solidity ^0.8.4; import '../IERC721A.sol';
// 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); }
// 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 // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) 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 `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IVesselVerse","name":"_vesselverse","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"internalType":"uint256","name":"_timeBuffer","type":"uint256"},{"internalType":"uint256","name":"_reservePrice","type":"uint256"},{"internalType":"uint8","name":"_minBidIncrementPercentage","type":"uint8"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"address payable","name":"_beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"vesselverseId","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":true,"internalType":"uint256","name":"vesselverseId","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":"vesselverseId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"AuctionExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minBidIncrementPercentage","type":"uint256"}],"name":"AuctionMinBidIncrementPercentageUpdated","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":"vesselverseId","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":"vesselverseId","type":"uint256"},{"internalType":"uint256","name":"amount","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":[],"name":"beneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vesselverseId","type":"uint256"}],"name":"createBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBidIncrementPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"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":"address payable","name":"_beneficiary","type":"address"}],"name":"setBeneficiary","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":"vesselverse","outputs":[{"internalType":"contract IVesselVerse","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620017c0380380620017c08339810160408190526200003491620001d3565b6000805460ff19169055600180556200004d33620000be565b6200005762000110565b600380546001600160a01b039889166001600160a01b03199182161790915560048054978916978216979097179096556005949094556006929092556007805460ff90921660ff19909216919091179055600855600e805491909316911617905562000260565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200011a6200016d565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620001503390565b6040516001600160a01b03909116815260200160405180910390a1565b60005460ff1615620001b85760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640160405180910390fd5b565b6001600160a01b0381168114620001d057600080fd5b50565b600080600080600080600060e0888a031215620001ef57600080fd5b8751620001fc81620001ba565b60208901519097506200020f81620001ba565b809650506040880151945060608801519350608088015160ff811681146200023657600080fd5b60a089015160c08a015191945092506200025081620001ba565b8091505092959891949750929550565b61155080620002706000396000f3fe6080604052600436106101355760003560e01c80637d9f6db5116100ab578063bfb4a4161161006f578063bfb4a416146103a9578063ce9c7c0d146103c9578063db2e1eed146103e9578063ec91f2a4146103ff578063f25efffc14610415578063f2fde38b1461042a57600080fd5b80637d9f6db5146102c15780638456cb59146103355780638da5cb5b1461034a578063a4d0a17e14610368578063b296024d1461037d57600080fd5b80633f4ba83a116100fd5780633f4ba83a146102215780633fc8cef3146102365780635c975abb14610256578063659dd2b4146102795780637120334b1461028c578063715018a6146102ac57600080fd5b80630fb5a6b41461013a578063150b7a02146101635780631c31f710146101a757806336ebdb38146101c957806338af3eed146101e9575b600080fd5b34801561014657600080fd5b5061015060085481565b6040519081526020015b60405180910390f35b34801561016f57600080fd5b5061018e61017e366004611236565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161015a565b3480156101b357600080fd5b506101c76101c23660046112fe565b61044a565b005b3480156101d557600080fd5b506101c76101e4366004611322565b610474565b3480156101f557600080fd5b50600e54610209906001600160a01b031681565b6040516001600160a01b03909116815260200161015a565b34801561022d57600080fd5b506101c76104c5565b34801561024257600080fd5b50600454610209906001600160a01b031681565b34801561026257600080fd5b5060005460ff16604051901515815260200161015a565b6101c7610287366004611345565b61057c565b34801561029857600080fd5b506101c76102a7366004611345565b610886565b3480156102b857600080fd5b506101c76108c3565b3480156102cd57600080fd5b50600954600a54600b54600c54600d546102fd94939291906001600160a01b03811690600160a01b900460ff1686565b6040805196875260208701959095529385019290925260608401526001600160a01b03166080830152151560a082015260c00161015a565b34801561034157600080fd5b506101c76108d5565b34801561035657600080fd5b506002546001600160a01b0316610209565b34801561037457600080fd5b506101c76108e5565b34801561038957600080fd5b506007546103979060ff1681565b60405160ff909116815260200161015a565b3480156103b557600080fd5b50600354610209906001600160a01b031681565b3480156103d557600080fd5b506101c76103e4366004611345565b610922565b3480156103f557600080fd5b5061015060065481565b34801561040b57600080fd5b5061015060055481565b34801561042157600080fd5b506101c761095f565b34801561043657600080fd5b506101c76104453660046112fe565b610a1c565b610452610a95565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b61047c610a95565b6007805460ff191660ff83169081179091556040519081527fec5ccd96cc77b6219e9d44143df916af68fc169339ea7de5008ff15eae13450d906020015b60405180910390a150565b6104cd610a95565b6104d5610aef565b600b5415806104ed5750600d54600160a01b900460ff165b801561056d5750600360009054906101000a90046001600160a01b03166001600160a01b031663fdcf9d076040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056d919061135e565b1561057a5761057a610b41565b565b6002600154036105a75760405162461bcd60e51b815260040161059e90611380565b60405180910390fd5b60026001556040805160c081018252600954808252600a546020830152600b5492820192909252600c546060820152600d546001600160a01b0381166080830152600160a01b900460ff16151560a08201529082146106485760405162461bcd60e51b815260206004820152601e60248201527f56657373656c5665727365206e6f7420757020666f722061756374696f6e0000604482015260640161059e565b8060600151421061068d5760405162461bcd60e51b815260206004820152600f60248201526e105d58dd1a5bdb88195e1c1a5c9959608a1b604482015260640161059e565b6006543410156106df5760405162461bcd60e51b815260206004820152601f60248201527f4d7573742073656e64206174206c656173742072657365727665507269636500604482015260640161059e565b60075460208201516064916106f99160ff909116906113cd565b61070391906113e4565b81602001516107129190611406565b341015610789576040805162461bcd60e51b81526020600482015260248101919091527f4d7573742073656e64206d6f7265207468616e206c617374206269642062792060448201527f6d696e426964496e6372656d656e7450657263656e7461676520616d6f756e74606482015260840161059e565b60808101516001600160a01b038116156107ab576107ab818360200151610c98565b34600a55600d80546001600160a01b031916331790556005546060830151600091906107d8904290611419565b10905080156107f9576005546107ee9042611406565b60608401819052600c555b8251604080513381523460208201528315158183015290517f1159164c56f277e6fc99c11731bd380e0347deb969b75523398734c252706ea39181900360600190a2801561087c57825160608401516040519081527f6e912a3a9105bdd2af817ba5adc14e6c127c1035b5b648faa29ca0d58ab8ff4e9060200160405180910390a25b5050600180555050565b61088e610a95565b60058190556040518181527f1b55d9f7002bda4490f467e326f22a4a847629c0f2d1ed421607d318d25b410d906020016104ba565b6108cb610a95565b61057a6000610d84565b6108dd610a95565b61057a610dd6565b6108ed610e13565b60026001540361090f5760405162461bcd60e51b815260040161059e90611380565b600260015561091c610e5c565b60018055565b61092a610a95565b60068190556040518181527f6ab2e127d7fdf53b8f304e59d3aab5bfe97979f52a85479691a6fab27a28a6b2906020016104ba565b6002600154036109815760405162461bcd60e51b815260040161059e90611380565b600260015561098e611118565b610996610e5c565b600360009054906101000a90046001600160a01b03166001600160a01b031663fdcf9d076040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f919061135e565b1561091c5761091c610b41565b610a24610a95565b6001600160a01b038116610a895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059e565b610a9281610d84565b50565b6002546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610af7610e13565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600360009054906101000a90046001600160a01b03166001600160a01b0316631249c58b6040518163ffffffff1660e01b81526004016020604051808303816000875af1925050508015610bb2575060408051601f3d908101601f19168201909252610baf9181019061142c565b60015b610bf157610bbe611445565b806308c379a003610be55750610bd2611461565b80610bdd5750610be7565b610a92610dd6565b505b3d6000803e3d6000fd5b6008544290600090610c039083611406565b6040805160c08101825285815260006020808301829052828401879052606083018590526080830182905260a09092018190526009879055600a55600b859055600c839055600d80546001600160a81b0319169055815185815290810183905291925084917fd6eddd1118d71820909c1197aa966dbc15ed6f508554252169cc3d5ccac756ca910160405180910390a2505050565b610ca2828261115e565b610d80576004805460408051630d0e30db60e41b815290516001600160a01b039092169263d0e30db0928592808301926000929182900301818588803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50506004805460405163a9059cbb60e01b81526001600160a01b0388811693820193909352602481018790529116935063a9059cbb925060440190506020604051808303816000875af1158015610d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7e919061135e565b505b5050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610dde611118565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b243390565b60005460ff1661057a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161059e565b6040805160c0810182526009548152600a546020820152600b54918101829052600c546060820152600d546001600160a01b0381166080830152600160a01b900460ff16151560a082015290600003610eee5760405162461bcd60e51b815260206004820152601460248201527320bab1ba34b7b7103430b9b713ba103132b3bab760611b604482015260640161059e565b8060a0015115610f405760405162461bcd60e51b815260206004820181905260248201527f41756374696f6e2068617320616c7265616479206265656e20736574746c6564604482015260640161059e565b8060600151421015610f945760405162461bcd60e51b815260206004820152601860248201527f41756374696f6e206861736e277420636f6d706c657465640000000000000000604482015260640161059e565b600d805460ff60a01b1916600160a01b17905560808101516001600160a01b031661102f57600354600e548251604051632142170760e11b81523060048201526001600160a01b03928316602482015260448101919091529116906342842e0e90606401600060405180830381600087803b15801561101257600080fd5b505af1158015611026573d6000803e3d6000fd5b505050506110a3565b60035460808201518251604051632142170760e11b81523060048201526001600160a01b03928316602482015260448101919091529116906342842e0e90606401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b505050505b6020810151156110c857600e5460208201516110c8916001600160a01b031690610c98565b80516080820151602080840151604080516001600160a01b039094168452918301527fc9f72b276a388619c6d185d146697036241880c36654b1a3ffdad07c24038d99910160405180910390a250565b60005460ff161561057a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161059e565b6040805160008082526020820190925281906001600160a01b0385169061753090859060405161118e91906114eb565b600060405180830381858888f193505050503d80600081146111cc576040519150601f19603f3d011682016040523d82523d6000602084013e6111d1565b606091505b5090925050505b92915050565b6001600160a01b0381168114610a9257600080fd5b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561122f5761122f6111f3565b6040525050565b6000806000806080858703121561124c57600080fd5b8435611257816111de565b9350602085810135611268816111de565b935060408601359250606086013567ffffffffffffffff8082111561128c57600080fd5b818801915088601f8301126112a057600080fd5b8135818111156112b2576112b26111f3565b60405191506112ca601f8201601f1916850183611209565b80825289848285010111156112de57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60006020828403121561131057600080fd5b813561131b816111de565b9392505050565b60006020828403121561133457600080fd5b813560ff8116811461131b57600080fd5b60006020828403121561135757600080fd5b5035919050565b60006020828403121561137057600080fd5b8151801515811461131b57600080fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176111d8576111d86113b7565b60008261140157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156111d8576111d86113b7565b818103818111156111d8576111d86113b7565b60006020828403121561143e57600080fd5b5051919050565b600060033d111561145e5760046000803e5060005160e01c5b90565b600060443d101561146f5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561149f57505050505090565b82850191508151818111156114b75750505050505090565b843d87010160208285010111156114d15750505050505090565b6114e060208286010187611209565b509095945050505050565b6000825160005b8181101561150c57602081860181015185830152016114f2565b50600092019182525091905056fea2646970667358221220b5eba0654d6501b2ee4fd4b92f0b3bfd5866b5851463c727c321c2ee4107232a64736f6c634300081100330000000000000000000000002fd43ffa417c1f9e9e260fde9a0b59fc2ab22069000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000075cb7c89c6f89148e4200ef4998e7f29b40abe1
Deployed Bytecode
0x6080604052600436106101355760003560e01c80637d9f6db5116100ab578063bfb4a4161161006f578063bfb4a416146103a9578063ce9c7c0d146103c9578063db2e1eed146103e9578063ec91f2a4146103ff578063f25efffc14610415578063f2fde38b1461042a57600080fd5b80637d9f6db5146102c15780638456cb59146103355780638da5cb5b1461034a578063a4d0a17e14610368578063b296024d1461037d57600080fd5b80633f4ba83a116100fd5780633f4ba83a146102215780633fc8cef3146102365780635c975abb14610256578063659dd2b4146102795780637120334b1461028c578063715018a6146102ac57600080fd5b80630fb5a6b41461013a578063150b7a02146101635780631c31f710146101a757806336ebdb38146101c957806338af3eed146101e9575b600080fd5b34801561014657600080fd5b5061015060085481565b6040519081526020015b60405180910390f35b34801561016f57600080fd5b5061018e61017e366004611236565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161015a565b3480156101b357600080fd5b506101c76101c23660046112fe565b61044a565b005b3480156101d557600080fd5b506101c76101e4366004611322565b610474565b3480156101f557600080fd5b50600e54610209906001600160a01b031681565b6040516001600160a01b03909116815260200161015a565b34801561022d57600080fd5b506101c76104c5565b34801561024257600080fd5b50600454610209906001600160a01b031681565b34801561026257600080fd5b5060005460ff16604051901515815260200161015a565b6101c7610287366004611345565b61057c565b34801561029857600080fd5b506101c76102a7366004611345565b610886565b3480156102b857600080fd5b506101c76108c3565b3480156102cd57600080fd5b50600954600a54600b54600c54600d546102fd94939291906001600160a01b03811690600160a01b900460ff1686565b6040805196875260208701959095529385019290925260608401526001600160a01b03166080830152151560a082015260c00161015a565b34801561034157600080fd5b506101c76108d5565b34801561035657600080fd5b506002546001600160a01b0316610209565b34801561037457600080fd5b506101c76108e5565b34801561038957600080fd5b506007546103979060ff1681565b60405160ff909116815260200161015a565b3480156103b557600080fd5b50600354610209906001600160a01b031681565b3480156103d557600080fd5b506101c76103e4366004611345565b610922565b3480156103f557600080fd5b5061015060065481565b34801561040b57600080fd5b5061015060055481565b34801561042157600080fd5b506101c761095f565b34801561043657600080fd5b506101c76104453660046112fe565b610a1c565b610452610a95565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b61047c610a95565b6007805460ff191660ff83169081179091556040519081527fec5ccd96cc77b6219e9d44143df916af68fc169339ea7de5008ff15eae13450d906020015b60405180910390a150565b6104cd610a95565b6104d5610aef565b600b5415806104ed5750600d54600160a01b900460ff165b801561056d5750600360009054906101000a90046001600160a01b03166001600160a01b031663fdcf9d076040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056d919061135e565b1561057a5761057a610b41565b565b6002600154036105a75760405162461bcd60e51b815260040161059e90611380565b60405180910390fd5b60026001556040805160c081018252600954808252600a546020830152600b5492820192909252600c546060820152600d546001600160a01b0381166080830152600160a01b900460ff16151560a08201529082146106485760405162461bcd60e51b815260206004820152601e60248201527f56657373656c5665727365206e6f7420757020666f722061756374696f6e0000604482015260640161059e565b8060600151421061068d5760405162461bcd60e51b815260206004820152600f60248201526e105d58dd1a5bdb88195e1c1a5c9959608a1b604482015260640161059e565b6006543410156106df5760405162461bcd60e51b815260206004820152601f60248201527f4d7573742073656e64206174206c656173742072657365727665507269636500604482015260640161059e565b60075460208201516064916106f99160ff909116906113cd565b61070391906113e4565b81602001516107129190611406565b341015610789576040805162461bcd60e51b81526020600482015260248101919091527f4d7573742073656e64206d6f7265207468616e206c617374206269642062792060448201527f6d696e426964496e6372656d656e7450657263656e7461676520616d6f756e74606482015260840161059e565b60808101516001600160a01b038116156107ab576107ab818360200151610c98565b34600a55600d80546001600160a01b031916331790556005546060830151600091906107d8904290611419565b10905080156107f9576005546107ee9042611406565b60608401819052600c555b8251604080513381523460208201528315158183015290517f1159164c56f277e6fc99c11731bd380e0347deb969b75523398734c252706ea39181900360600190a2801561087c57825160608401516040519081527f6e912a3a9105bdd2af817ba5adc14e6c127c1035b5b648faa29ca0d58ab8ff4e9060200160405180910390a25b5050600180555050565b61088e610a95565b60058190556040518181527f1b55d9f7002bda4490f467e326f22a4a847629c0f2d1ed421607d318d25b410d906020016104ba565b6108cb610a95565b61057a6000610d84565b6108dd610a95565b61057a610dd6565b6108ed610e13565b60026001540361090f5760405162461bcd60e51b815260040161059e90611380565b600260015561091c610e5c565b60018055565b61092a610a95565b60068190556040518181527f6ab2e127d7fdf53b8f304e59d3aab5bfe97979f52a85479691a6fab27a28a6b2906020016104ba565b6002600154036109815760405162461bcd60e51b815260040161059e90611380565b600260015561098e611118565b610996610e5c565b600360009054906101000a90046001600160a01b03166001600160a01b031663fdcf9d076040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f919061135e565b1561091c5761091c610b41565b610a24610a95565b6001600160a01b038116610a895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059e565b610a9281610d84565b50565b6002546001600160a01b0316331461057a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610af7610e13565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600360009054906101000a90046001600160a01b03166001600160a01b0316631249c58b6040518163ffffffff1660e01b81526004016020604051808303816000875af1925050508015610bb2575060408051601f3d908101601f19168201909252610baf9181019061142c565b60015b610bf157610bbe611445565b806308c379a003610be55750610bd2611461565b80610bdd5750610be7565b610a92610dd6565b505b3d6000803e3d6000fd5b6008544290600090610c039083611406565b6040805160c08101825285815260006020808301829052828401879052606083018590526080830182905260a09092018190526009879055600a55600b859055600c839055600d80546001600160a81b0319169055815185815290810183905291925084917fd6eddd1118d71820909c1197aa966dbc15ed6f508554252169cc3d5ccac756ca910160405180910390a2505050565b610ca2828261115e565b610d80576004805460408051630d0e30db60e41b815290516001600160a01b039092169263d0e30db0928592808301926000929182900301818588803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50506004805460405163a9059cbb60e01b81526001600160a01b0388811693820193909352602481018790529116935063a9059cbb925060440190506020604051808303816000875af1158015610d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7e919061135e565b505b5050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610dde611118565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b243390565b60005460ff1661057a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161059e565b6040805160c0810182526009548152600a546020820152600b54918101829052600c546060820152600d546001600160a01b0381166080830152600160a01b900460ff16151560a082015290600003610eee5760405162461bcd60e51b815260206004820152601460248201527320bab1ba34b7b7103430b9b713ba103132b3bab760611b604482015260640161059e565b8060a0015115610f405760405162461bcd60e51b815260206004820181905260248201527f41756374696f6e2068617320616c7265616479206265656e20736574746c6564604482015260640161059e565b8060600151421015610f945760405162461bcd60e51b815260206004820152601860248201527f41756374696f6e206861736e277420636f6d706c657465640000000000000000604482015260640161059e565b600d805460ff60a01b1916600160a01b17905560808101516001600160a01b031661102f57600354600e548251604051632142170760e11b81523060048201526001600160a01b03928316602482015260448101919091529116906342842e0e90606401600060405180830381600087803b15801561101257600080fd5b505af1158015611026573d6000803e3d6000fd5b505050506110a3565b60035460808201518251604051632142170760e11b81523060048201526001600160a01b03928316602482015260448101919091529116906342842e0e90606401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b505050505b6020810151156110c857600e5460208201516110c8916001600160a01b031690610c98565b80516080820151602080840151604080516001600160a01b039094168452918301527fc9f72b276a388619c6d185d146697036241880c36654b1a3ffdad07c24038d99910160405180910390a250565b60005460ff161561057a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161059e565b6040805160008082526020820190925281906001600160a01b0385169061753090859060405161118e91906114eb565b600060405180830381858888f193505050503d80600081146111cc576040519150601f19603f3d011682016040523d82523d6000602084013e6111d1565b606091505b5090925050505b92915050565b6001600160a01b0381168114610a9257600080fd5b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561122f5761122f6111f3565b6040525050565b6000806000806080858703121561124c57600080fd5b8435611257816111de565b9350602085810135611268816111de565b935060408601359250606086013567ffffffffffffffff8082111561128c57600080fd5b818801915088601f8301126112a057600080fd5b8135818111156112b2576112b26111f3565b60405191506112ca601f8201601f1916850183611209565b80825289848285010111156112de57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60006020828403121561131057600080fd5b813561131b816111de565b9392505050565b60006020828403121561133457600080fd5b813560ff8116811461131b57600080fd5b60006020828403121561135757600080fd5b5035919050565b60006020828403121561137057600080fd5b8151801515811461131b57600080fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176111d8576111d86113b7565b60008261140157634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156111d8576111d86113b7565b818103818111156111d8576111d86113b7565b60006020828403121561143e57600080fd5b5051919050565b600060033d111561145e5760046000803e5060005160e01c5b90565b600060443d101561146f5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561149f57505050505090565b82850191508151818111156114b75750505050505090565b843d87010160208285010111156114d15750505050505090565b6114e060208286010187611209565b509095945050505050565b6000825160005b8181101561150c57602081860181015185830152016114f2565b50600092019182525091905056fea2646970667358221220b5eba0654d6501b2ee4fd4b92f0b3bfd5866b5851463c727c321c2ee4107232a64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002fd43ffa417c1f9e9e260fde9a0b59fc2ab22069000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000075cb7c89c6f89148e4200ef4998e7f29b40abe1
-----Decoded View---------------
Arg [0] : _vesselverse (address): 0x2Fd43FfA417C1F9e9E260fdE9a0B59fC2AB22069
Arg [1] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _timeBuffer (uint256): 120
Arg [3] : _reservePrice (uint256): 10000000000000000
Arg [4] : _minBidIncrementPercentage (uint8): 2
Arg [5] : _duration (uint256): 3600
Arg [6] : _beneficiary (address): 0x075cb7C89C6F89148e4200eF4998E7f29B40AbE1
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000002fd43ffa417c1f9e9e260fde9a0b59fc2ab22069
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000078
Arg [3] : 000000000000000000000000000000000000000000000000002386f26fc10000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000e10
Arg [6] : 000000000000000000000000075cb7c89c6f89148e4200ef4998e7f29b40abe1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.