Overview
ETH Balance
0.041 ETH
Eth Value
$127.51 (@ $3,110.11/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 27 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 14965268 | 887 days ago | IN | 0 ETH | 0.00085849 | ||||
Bid | 14748706 | 922 days ago | IN | 0.001 ETH | 0.00263198 | ||||
Withdraw | 14427363 | 973 days ago | IN | 0 ETH | 0.00112362 | ||||
Withdraw | 13751780 | 1078 days ago | IN | 0 ETH | 0.00241113 | ||||
Revoke Bid | 13751768 | 1078 days ago | IN | 0 ETH | 0.0036259 | ||||
Bid | 13684541 | 1088 days ago | IN | 0.1 ETH | 0.008933 | ||||
Withdraw | 13595066 | 1102 days ago | IN | 0 ETH | 0.00354157 | ||||
Withdraw | 13595066 | 1102 days ago | IN | 0 ETH | 0.00419021 | ||||
Revoke Bid | 13576015 | 1105 days ago | IN | 0 ETH | 0.00429267 | ||||
Withdraw | 13516112 | 1115 days ago | IN | 0 ETH | 0.00513221 | ||||
Bid | 13474259 | 1121 days ago | IN | 0.02 ETH | 0.00425489 | ||||
Offer | 13471929 | 1122 days ago | IN | 0 ETH | 0.00624567 | ||||
Withdraw | 13466159 | 1123 days ago | IN | 0 ETH | 0.0020172 | ||||
Revoke Bid | 13466131 | 1123 days ago | IN | 0 ETH | 0.00328493 | ||||
Withdraw | 13462124 | 1123 days ago | IN | 0 ETH | 0.009009 | ||||
Revoke Bid | 13461385 | 1123 days ago | IN | 0 ETH | 0.00521182 | ||||
Offer | 13461017 | 1123 days ago | IN | 0 ETH | 0.00808959 | ||||
Bid | 13456913 | 1124 days ago | IN | 0.2 ETH | 0.00593016 | ||||
Revoke Bid | 13456899 | 1124 days ago | IN | 0 ETH | 0.00360991 | ||||
Offer | 13453457 | 1125 days ago | IN | 0 ETH | 0.00395259 | ||||
Bid | 13449070 | 1125 days ago | IN | 0.02 ETH | 0.00459626 | ||||
Bid | 13447540 | 1126 days ago | IN | 0.02 ETH | 0.00313106 | ||||
Bid | 13438591 | 1127 days ago | IN | 0.05 ETH | 0.00541641 | ||||
Offer | 13430339 | 1128 days ago | IN | 0 ETH | 0.0090838 | ||||
Bid | 13429796 | 1128 days ago | IN | 0.22 ETH | 0.0110895 |
Loading...
Loading
Contract Name:
NFTMarketplace
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.9; // code below expects that integer overflows will revert import "./Vendor/openzeppelin-contracts-3dadd40034961d5ca75fa209a4188b01d7129501/token/ERC721/IERC721.sol"; import "./Vendor/openzeppelin-contracts-3dadd40034961d5ca75fa209a4188b01d7129501/access/Ownable.sol"; import "./Utilities/Withdrawable.sol"; /// @title Area marketplace contract, 🌐 the earth on the blockchain, 📌 geolocation NFTs /// @notice This decentralized marketplace matches bids and offers for one underlying ERC-721 contract. With much /// respect to CryptoPunks. Your offers & bids on this marketplace will close only if matched on this /// marketplace. If you trade anywhere else, consider to revoke your offers & bids here. /// @author William Entriken contract NFTMarketplace is Ownable, Withdrawable { struct TokenMarket { address offeror; // The token owner that is selling uint256 minimumOffer; // The amount (in Wei) that is the minimum to accept; or zero to indicate no offer address invitedBidder; // The exclusive invited buyer for this offer; or the zero address if not exclusive address bidder; // The party that committed Ether to bid uint256 lockedBid; // The amount (in Wei) that the bidder has committed } /// @notice The underlying asset contract IERC721 immutable public tokenContract; /// @notice The transaction fee (in basis points) as a portion of the sale price uint256 public feePortion; /// @notice The best bids and offers for any token mapping(uint256 => TokenMarket) public tokenMarkets; /// @notice A token is offered for sale by owner; or such an offer is revoked /// @param tokenId which token /// @param offeror the token owner that is selling /// @param minimumOffer the amount (in Wei) that is the minimum to accept; or zero to indicate no offer /// @param invitedBidder the exclusive invited buyer for this offer; or the zero address if not exclusive event OfferUpdated(uint256 indexed tokenId, address offeror, uint256 minimumOffer, address invitedBidder); /// @notice A new highest bid is committed for a token; or such a bid is revoked /// @param tokenId which token /// @param bidder the party that committed Ether to bid /// @param lockedBid the amount (in Wei) that the bidder has committed event BidUpdated(uint256 indexed tokenId, address bidder, uint256 lockedBid); /// @notice A token is traded on the marketplace (this implies any offer for the token is revoked) /// @param tokenId which token /// @param value the sale price /// @param offeror the party that previously owned the token /// @param bidder the party that now owns the token event Traded(uint256 indexed tokenId, uint256 value, address indexed offeror, address indexed bidder); /// @param initialFeePortion the transaction fee (in basis points) as a portion of the sale price /// @param immutableNftTokenContract the underlying NFT asset constructor(uint256 initialFeePortion, IERC721 immutableNftTokenContract) { feePortion = initialFeePortion; tokenContract = immutableNftTokenContract; } /// @notice An offeror may revoke their offer /// @dev It is possible that a token will change owners without this contract being notified (e.g. an ERC-721 /// "gift" transaction). In this case the old owner who made an offer needs, and gets, a way to revoke that. /// There is no reason why the new owner of a token would need to revoke the prior owner's ineffectual /// offer. But we provide this option anyway because we recognize the token market to be the prerogative of /// that token's owner. /// @param tokenId which token function revokeOffer(uint256 tokenId) external { require( (msg.sender == tokenMarkets[tokenId].offeror) || (msg.sender == tokenContract.ownerOf(tokenId)), "Only the offeror or token owner may revoke an offer" ); _setOffer(tokenId, address(0), 0, address(0)); } /// @notice Any token owner may offer it for sale /// @dev If a bid comes which is higher than the offer then the sale price will be this higher amount. /// @param tokenId which token /// @param minimumOffer the amount (in Wei) that is the minimum to accept /// @param invitedBidder the exclusive invited buyer for this offer; or the zero address if not exclusive function offer(uint256 tokenId, uint256 minimumOffer, address invitedBidder) external { require(msg.sender == tokenContract.ownerOf(tokenId), "Only the token owner can offer"); require(minimumOffer > 0, "Ask for more"); address bidder = tokenMarkets[tokenId].bidder; uint256 lockedBid = tokenMarkets[tokenId].lockedBid; bool isInvited = invitedBidder == address(0) || invitedBidder == bidder; // Can we match this offer to an existing bid? if (lockedBid >= minimumOffer && isInvited) { _doTrade(tokenId, lockedBid, msg.sender, bidder); _setBid(tokenId, address(0), 0); } else { _setOffer(tokenId, msg.sender, minimumOffer, invitedBidder); } } /// @notice An bidder may revoke their bid /// @param tokenId which token function revokeBid(uint256 tokenId) external { require(msg.sender == tokenMarkets[tokenId].bidder, "Only the bidder may revoke their bid"); _increasePendingWithdrawal(msg.sender, tokenMarkets[tokenId].lockedBid); _setBid(tokenId, address(0), 0); } /// @notice Anyone may commit more than the existing bid for a token. /// @dev When reading the below, note there are three important contexts to consider: /// 1. There is no existing bidder /// 2. The message caller is the highest bidder /// 3. Somebody else is the highest bidder /// when you submit this transaction and when it settles. /// @param tokenId which token function bid(uint256 tokenId) external payable { uint256 existingLockedBid = tokenMarkets[tokenId].lockedBid; require(msg.value > existingLockedBid, "Bid too low"); address existingBidder = tokenMarkets[tokenId].bidder; uint256 minimumOffer = tokenMarkets[tokenId].minimumOffer; address invitedBidder = tokenMarkets[tokenId].invitedBidder; address offeror = tokenMarkets[tokenId].offeror; bool isInvited = invitedBidder == address(0) || invitedBidder == msg.sender; // Can we match this bid to an existing offer? if (minimumOffer > 0 && msg.value >= minimumOffer && isInvited && offeror == tokenContract.ownerOf(tokenId)) { _doTrade(tokenId, msg.value, offeror, msg.sender); if (existingBidder == msg.sender) { // This is context 2 _increasePendingWithdrawal(msg.sender, existingLockedBid); _setBid(tokenId, address(0), 0); } } else { // Wind up old bid, if any if (existingLockedBid > 0) { // This is context 2 or 3 _increasePendingWithdrawal(existingBidder, existingLockedBid); } // Enter new bid _setBid(tokenId, msg.sender, msg.value); } } /// @notice Anyone may add more value to their existing bid /// @param tokenId which token function bidIncrease(uint256 tokenId) external payable { require(msg.value > 0, "Must send value to increase bid"); require(msg.sender == tokenMarkets[tokenId].bidder, "You are not current bidder"); uint256 newBidAmount = tokenMarkets[tokenId].lockedBid + msg.value; uint256 minimumOffer = tokenMarkets[tokenId].minimumOffer; address invitedBidder = tokenMarkets[tokenId].invitedBidder; address offeror = tokenMarkets[tokenId].offeror; bool isInvited = invitedBidder == address(0) || invitedBidder == msg.sender; // Can we match this bid to an existing offer? if (minimumOffer > 0 && newBidAmount >= minimumOffer && isInvited && offeror == tokenContract.ownerOf(tokenId)) { _doTrade(tokenId, newBidAmount, offeror, msg.sender); _setBid(tokenId, address(0), 0); } else { tokenMarkets[tokenId].lockedBid = newBidAmount; _setBid(tokenId, msg.sender, newBidAmount); } } /// @notice The owner can set the fee portion /// @param newFeePortion the transaction fee (in basis points) as a portion of the sale price function setFeePortion(uint256 newFeePortion) external onlyOwner { require(newFeePortion <= 1000, "Exceeded maximum fee portion of 10%"); feePortion = newFeePortion; } /// @dev Collect fee for owner & offeror and transfer underlying asset. The Traded event emits before the /// ERC721.Transfer event so that somebody observing the events and seeing the latter will recognize the /// context of the former. The bid is NOT cleaned up generally in this function because a circumstance exists /// where an existing bid persists after a trade. See "context 3" above. function _doTrade(uint256 tokenId, uint256 value, address offeror, address bidder) private { // Divvy up proceeds uint256 feeAmount = value * feePortion / 10000; // reverts on overflow _increasePendingWithdrawal(Ownable.owner(), feeAmount); _increasePendingWithdrawal(offeror, value - feeAmount); emit Traded(tokenId, value, offeror, bidder); tokenMarkets[tokenId].offeror = address(0); tokenMarkets[tokenId].minimumOffer = 0; tokenMarkets[tokenId].invitedBidder = address(0); tokenContract.transferFrom(offeror, bidder, tokenId); } /// @dev Set and emit new offer function _setOffer(uint256 tokenId, address offeror, uint256 minimumOffer, address invitedBidder) private { tokenMarkets[tokenId].offeror = offeror; tokenMarkets[tokenId].minimumOffer = minimumOffer; tokenMarkets[tokenId].invitedBidder = invitedBidder; emit OfferUpdated(tokenId, offeror, minimumOffer, invitedBidder); } /// @dev Set and emit new bid function _setBid(uint256 tokenId, address bidder, uint256 lockedBid) private { tokenMarkets[tokenId].bidder = bidder; tokenMarkets[tokenId].lockedBid = lockedBid; emit BidUpdated(tokenId, bidder, lockedBid); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.9; // code below expects that integer overflows will revert /// @title Part of Area, 🌐 the earth on the blockchain, 📌 geolocation NFTs /// @notice This Ether accounting system stores value inside this contract and makes it available for beneficiaries to /// withdraw. /// @author William Entriken contract Withdrawable { /// @notice Ether waiting for beneficiaries to withdraw mapping(address => uint256) private _pendingWithdrawals; /// @notice Amount of Ether waiting for beneficiaries to withdraw is updated /// @param beneficiary which beneficiary can withdraw /// @param amount amount (in Wei) that is pending withdrawal event PendingWithdrawal(address beneficiary, uint256 amount); /// @notice Beneficiaries can withdraw any Ether held for them function withdraw() external { uint256 amountToWithdraw = _pendingWithdrawals[msg.sender]; // Remember to zero the pending refund before sending to prevent re-entrancy attacks delete _pendingWithdrawals[msg.sender]; payable(msg.sender).transfer(amountToWithdraw); emit PendingWithdrawal(msg.sender, 0); } /// @notice Gets amount of Ether waiting for beneficiary to withdraw /// @param beneficiary which beneficiary is queried /// @return amount how much the beneficiary can withdraw function pendingWithdrawal(address beneficiary) public view returns (uint256 amount) { return _pendingWithdrawals[beneficiary]; } /// @notice Amount of Ether waiting for beneficiaries to withdraw is increased /// @param beneficiary which beneficiary can withdraw /// @param amount amount (in Wei) that is pending withdrawal function _increasePendingWithdrawal(address beneficiary, uint256 amount) internal { _pendingWithdrawals[beneficiary] += amount; emit PendingWithdrawal(beneficiary, _pendingWithdrawals[beneficiary]); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"initialFeePortion","type":"uint256"},{"internalType":"contract IERC721","name":"immutableNftTokenContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"bidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"lockedBid","type":"uint256"}],"name":"BidUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"offeror","type":"address"},{"indexed":false,"internalType":"uint256","name":"minimumOffer","type":"uint256"},{"indexed":false,"internalType":"address","name":"invitedBidder","type":"address"}],"name":"OfferUpdated","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":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PendingWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"offeror","type":"address"},{"indexed":true,"internalType":"address","name":"bidder","type":"address"}],"name":"Traded","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"bidIncrease","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feePortion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"minimumOffer","type":"uint256"},{"internalType":"address","name":"invitedBidder","type":"address"}],"name":"offer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"pendingWithdrawal","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"revokeBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"revokeOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFeePortion","type":"uint256"}],"name":"setFeePortion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenContract","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenMarkets","outputs":[{"internalType":"address","name":"offeror","type":"address"},{"internalType":"uint256","name":"minimumOffer","type":"uint256"},{"internalType":"address","name":"invitedBidder","type":"address"},{"internalType":"address","name":"bidder","type":"address"},{"internalType":"uint256","name":"lockedBid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5060405161127738038061127783398101604081905261002f9161009f565b6100383361004f565b6002919091556001600160a01b03166080526100dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100b257600080fd5b825160208401519092506001600160a01b03811681146100d157600080fd5b809150509250929050565b60805161115d61011a6000396000818161019a015281816103690152818161064d015281816107fc01528181610b040152610e1a015261115d6000f3fe6080604052600436106100dd5760003560e01c8063609e5e481161007f57806398798aa91161005957806398798aa91461023d578063d1a1f09a146102d3578063f2fde38b146102f3578063f6a4932f1461031357600080fd5b8063609e5e48146101f4578063715018a61461020a5780638da5cb5b1461021f57600080fd5b806342d75060116100bb57806342d7506014610162578063454a2ab31461017557806355a373d6146101885780635f7b29fc146101d457600080fd5b80630964c95b146100e25780633a6a65ce1461012b5780633ccfd60b1461014d575b600080fd5b3480156100ee57600080fd5b506101186100fd366004610fd9565b6001600160a01b031660009081526001602052604090205490565b6040519081526020015b60405180910390f35b34801561013757600080fd5b5061014b610146366004610ffd565b610333565b005b34801561015957600080fd5b5061014b61047e565b61014b610170366004610ffd565b6104fc565b61014b610183366004610ffd565b61072d565b34801561019457600080fd5b506101bc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b3480156101e057600080fd5b5061014b6101ef366004610ffd565b6108f4565b34801561020057600080fd5b5061011860025481565b34801561021657600080fd5b5061014b610981565b34801561022b57600080fd5b506000546001600160a01b03166101bc565b34801561024957600080fd5b50610298610258366004610ffd565b6003602081905260009182526040909120805460018201546002830154938301546004909301546001600160a01b03928316949193918316929091169085565b604080516001600160a01b0396871681526020810195909552928516928401929092529092166060820152608081019190915260a001610122565b3480156102df57600080fd5b5061014b6102ee366004610ffd565b6109b7565b3480156102ff57600080fd5b5061014b61030e366004610fd9565b610a56565b34801561031f57600080fd5b5061014b61032e366004611016565b610aee565b6000818152600360205260409020546001600160a01b031633148061040057506040516331a9108f60e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156103b357600080fd5b505afa1580156103c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103eb919061104f565b6001600160a01b0316336001600160a01b0316145b61046d5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920746865206f666665726f72206f7220746f6b656e206f776e65722060448201527236b0bc903932bb37b5b29030b71037b33332b960691b60648201526084015b60405180910390fd5b61047b816000806000610c94565b50565b33600081815260016020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156104bf573d6000803e3d6000fd5b5060408051338152600060208201527f39d9cf4ffb93650d8ce789639cb8cf3c8d7b039e1f9795c038af55b4ae643fca910160405180910390a150565b6000341161054c5760405162461bcd60e51b815260206004820152601f60248201527f4d7573742073656e642076616c756520746f20696e63726561736520626964006044820152606401610464565b600081815260036020819052604090912001546001600160a01b031633146105b65760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742063757272656e74206269646465720000000000006044820152606401610464565b6000818152600360205260408120600401546105d3903490611082565b6000838152600360205260408120600181015460028201549154939450926001600160a01b039182169291169082158061061557506001600160a01b03831633145b90506000841180156106275750838510155b80156106305750805b80156106e457506040516331a9108f60e11b8152600481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b15801561069757600080fd5b505afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf919061104f565b6001600160a01b0316826001600160a01b0316145b15610706576106f586868433610d21565b61070186600080610e7d565b610725565b6000868152600360205260409020600401859055610725863387610e7d565b505050505050565b60008181526003602052604090206004015434811061077c5760405162461bcd60e51b815260206004820152600b60248201526a42696420746f6f206c6f7760a81b6044820152606401610464565b60008281526003602081905260408220908101546001820154600283015492546001600160a01b0392831694919383169216908215806107c457506001600160a01b03831633145b90506000841180156107d65750833410155b80156107df5750805b801561089357506040516331a9108f60e11b8152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b15801561084657600080fd5b505afa15801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e919061104f565b6001600160a01b0316826001600160a01b0316145b156108d0576108a487348433610d21565b6001600160a01b0385163314156108cb576108bf3387610ef2565b6108cb87600080610e7d565b6108eb565b85156108e0576108e08587610ef2565b6108eb873334610e7d565b50505050505050565b6000546001600160a01b0316331461091e5760405162461bcd60e51b81526004016104649061109a565b6103e881111561097c5760405162461bcd60e51b815260206004820152602360248201527f4578636565646564206d6178696d756d2066656520706f7274696f6e206f662060448201526231302560e81b6064820152608401610464565b600255565b6000546001600160a01b031633146109ab5760405162461bcd60e51b81526004016104649061109a565b6109b56000610f74565b565b600081815260036020819052604090912001546001600160a01b03163314610a2d5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c792074686520626964646572206d6179207265766f6b6520746865697260448201526308189a5960e21b6064820152608401610464565b600081815260036020526040902060040154610a4a903390610ef2565b61047b81600080610e7d565b6000546001600160a01b03163314610a805760405162461bcd60e51b81526004016104649061109a565b6001600160a01b038116610ae55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610464565b61047b81610f74565b6040516331a9108f60e11b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015610b4e57600080fd5b505afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b86919061104f565b6001600160a01b0316336001600160a01b031614610be65760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792074686520746f6b656e206f776e65722063616e206f6666657200006044820152606401610464565b60008211610c255760405162461bcd60e51b815260206004820152600c60248201526b41736b20666f72206d6f726560a01b6044820152606401610464565b60008381526003602081905260408220908101546004909101546001600160a01b0391821692909184161580610c6c5750826001600160a01b0316846001600160a01b0316145b9050848210158015610c7b5750805b15610c8c576106f586833386610d21565b610725863387875b60008481526003602090815260409182902080546001600160a01b038781166001600160a01b031992831681178455600184018890556002909301805491871691909216811790915583519182529181018590529182015284907f70f5b868b782ca0dcbdb70c100c995f9af3612db7c3329985621a22d087262d29060600160405180910390a250505050565b600061271060025485610d3491906110cf565b610d3e91906110ee565b9050610d5b610d556000546001600160a01b031690565b82610ef2565b610d6e83610d698387611110565b610ef2565b816001600160a01b0316836001600160a01b0316867f33d96411289395f0842596054abe6cf2802911ed295366531e4bd7b1a78b52e987604051610db491815260200190565b60405180910390a460008581526003602052604080822080546001600160a01b0319908116825560018201939093556002018054909216909155516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018790527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90606401600060405180830381600087803b158015610e5e57600080fd5b505af1158015610e72573d6000803e3d6000fd5b505050505050505050565b60008381526003602081815260409283902091820180546001600160a01b0319166001600160a01b03871690811790915560049092018490558251918252810183905284917f67084cbee80e339a509d7ab5561456aebf1df51370948a18a4449a1978d368ee910160405180910390a2505050565b6001600160a01b03821660009081526001602052604081208054839290610f1a908490611082565b90915550506001600160a01b038216600081815260016020908152604091829020548251938452908301527f39d9cf4ffb93650d8ce789639cb8cf3c8d7b039e1f9795c038af55b4ae643fca910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461047b57600080fd5b600060208284031215610feb57600080fd5b8135610ff681610fc4565b9392505050565b60006020828403121561100f57600080fd5b5035919050565b60008060006060848603121561102b57600080fd5b8335925060208401359150604084013561104481610fc4565b809150509250925092565b60006020828403121561106157600080fd5b8151610ff681610fc4565b634e487b7160e01b600052601160045260246000fd5b600082198211156110955761109561106c565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008160001904831182151516156110e9576110e961106c565b500290565b60008261110b57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156111225761112261106c565b50039056fea2646970667358221220e782c9799adff0062a959bdeb63911a03b240e3193b2814e07526e4db88c6fab64736f6c6343000809003300000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d539690
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c8063609e5e481161007f57806398798aa91161005957806398798aa91461023d578063d1a1f09a146102d3578063f2fde38b146102f3578063f6a4932f1461031357600080fd5b8063609e5e48146101f4578063715018a61461020a5780638da5cb5b1461021f57600080fd5b806342d75060116100bb57806342d7506014610162578063454a2ab31461017557806355a373d6146101885780635f7b29fc146101d457600080fd5b80630964c95b146100e25780633a6a65ce1461012b5780633ccfd60b1461014d575b600080fd5b3480156100ee57600080fd5b506101186100fd366004610fd9565b6001600160a01b031660009081526001602052604090205490565b6040519081526020015b60405180910390f35b34801561013757600080fd5b5061014b610146366004610ffd565b610333565b005b34801561015957600080fd5b5061014b61047e565b61014b610170366004610ffd565b6104fc565b61014b610183366004610ffd565b61072d565b34801561019457600080fd5b506101bc7f000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d53969081565b6040516001600160a01b039091168152602001610122565b3480156101e057600080fd5b5061014b6101ef366004610ffd565b6108f4565b34801561020057600080fd5b5061011860025481565b34801561021657600080fd5b5061014b610981565b34801561022b57600080fd5b506000546001600160a01b03166101bc565b34801561024957600080fd5b50610298610258366004610ffd565b6003602081905260009182526040909120805460018201546002830154938301546004909301546001600160a01b03928316949193918316929091169085565b604080516001600160a01b0396871681526020810195909552928516928401929092529092166060820152608081019190915260a001610122565b3480156102df57600080fd5b5061014b6102ee366004610ffd565b6109b7565b3480156102ff57600080fd5b5061014b61030e366004610fd9565b610a56565b34801561031f57600080fd5b5061014b61032e366004611016565b610aee565b6000818152600360205260409020546001600160a01b031633148061040057506040516331a9108f60e11b8152600481018290527f000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d5396906001600160a01b031690636352211e9060240160206040518083038186803b1580156103b357600080fd5b505afa1580156103c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103eb919061104f565b6001600160a01b0316336001600160a01b0316145b61046d5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920746865206f666665726f72206f7220746f6b656e206f776e65722060448201527236b0bc903932bb37b5b29030b71037b33332b960691b60648201526084015b60405180910390fd5b61047b816000806000610c94565b50565b33600081815260016020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156104bf573d6000803e3d6000fd5b5060408051338152600060208201527f39d9cf4ffb93650d8ce789639cb8cf3c8d7b039e1f9795c038af55b4ae643fca910160405180910390a150565b6000341161054c5760405162461bcd60e51b815260206004820152601f60248201527f4d7573742073656e642076616c756520746f20696e63726561736520626964006044820152606401610464565b600081815260036020819052604090912001546001600160a01b031633146105b65760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742063757272656e74206269646465720000000000006044820152606401610464565b6000818152600360205260408120600401546105d3903490611082565b6000838152600360205260408120600181015460028201549154939450926001600160a01b039182169291169082158061061557506001600160a01b03831633145b90506000841180156106275750838510155b80156106305750805b80156106e457506040516331a9108f60e11b8152600481018790527f000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d5396906001600160a01b031690636352211e9060240160206040518083038186803b15801561069757600080fd5b505afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf919061104f565b6001600160a01b0316826001600160a01b0316145b15610706576106f586868433610d21565b61070186600080610e7d565b610725565b6000868152600360205260409020600401859055610725863387610e7d565b505050505050565b60008181526003602052604090206004015434811061077c5760405162461bcd60e51b815260206004820152600b60248201526a42696420746f6f206c6f7760a81b6044820152606401610464565b60008281526003602081905260408220908101546001820154600283015492546001600160a01b0392831694919383169216908215806107c457506001600160a01b03831633145b90506000841180156107d65750833410155b80156107df5750805b801561089357506040516331a9108f60e11b8152600481018890527f000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d5396906001600160a01b031690636352211e9060240160206040518083038186803b15801561084657600080fd5b505afa15801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e919061104f565b6001600160a01b0316826001600160a01b0316145b156108d0576108a487348433610d21565b6001600160a01b0385163314156108cb576108bf3387610ef2565b6108cb87600080610e7d565b6108eb565b85156108e0576108e08587610ef2565b6108eb873334610e7d565b50505050505050565b6000546001600160a01b0316331461091e5760405162461bcd60e51b81526004016104649061109a565b6103e881111561097c5760405162461bcd60e51b815260206004820152602360248201527f4578636565646564206d6178696d756d2066656520706f7274696f6e206f662060448201526231302560e81b6064820152608401610464565b600255565b6000546001600160a01b031633146109ab5760405162461bcd60e51b81526004016104649061109a565b6109b56000610f74565b565b600081815260036020819052604090912001546001600160a01b03163314610a2d5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c792074686520626964646572206d6179207265766f6b6520746865697260448201526308189a5960e21b6064820152608401610464565b600081815260036020526040902060040154610a4a903390610ef2565b61047b81600080610e7d565b6000546001600160a01b03163314610a805760405162461bcd60e51b81526004016104649061109a565b6001600160a01b038116610ae55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610464565b61047b81610f74565b6040516331a9108f60e11b8152600481018490527f000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d5396906001600160a01b031690636352211e9060240160206040518083038186803b158015610b4e57600080fd5b505afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b86919061104f565b6001600160a01b0316336001600160a01b031614610be65760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792074686520746f6b656e206f776e65722063616e206f6666657200006044820152606401610464565b60008211610c255760405162461bcd60e51b815260206004820152600c60248201526b41736b20666f72206d6f726560a01b6044820152606401610464565b60008381526003602081905260408220908101546004909101546001600160a01b0391821692909184161580610c6c5750826001600160a01b0316846001600160a01b0316145b9050848210158015610c7b5750805b15610c8c576106f586833386610d21565b610725863387875b60008481526003602090815260409182902080546001600160a01b038781166001600160a01b031992831681178455600184018890556002909301805491871691909216811790915583519182529181018590529182015284907f70f5b868b782ca0dcbdb70c100c995f9af3612db7c3329985621a22d087262d29060600160405180910390a250505050565b600061271060025485610d3491906110cf565b610d3e91906110ee565b9050610d5b610d556000546001600160a01b031690565b82610ef2565b610d6e83610d698387611110565b610ef2565b816001600160a01b0316836001600160a01b0316867f33d96411289395f0842596054abe6cf2802911ed295366531e4bd7b1a78b52e987604051610db491815260200190565b60405180910390a460008581526003602052604080822080546001600160a01b0319908116825560018201939093556002018054909216909155516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018790527f000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d53969016906323b872dd90606401600060405180830381600087803b158015610e5e57600080fd5b505af1158015610e72573d6000803e3d6000fd5b505050505050505050565b60008381526003602081815260409283902091820180546001600160a01b0319166001600160a01b03871690811790915560049092018490558251918252810183905284917f67084cbee80e339a509d7ab5561456aebf1df51370948a18a4449a1978d368ee910160405180910390a2505050565b6001600160a01b03821660009081526001602052604081208054839290610f1a908490611082565b90915550506001600160a01b038216600081815260016020908152604091829020548251938452908301527f39d9cf4ffb93650d8ce789639cb8cf3c8d7b039e1f9795c038af55b4ae643fca910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461047b57600080fd5b600060208284031215610feb57600080fd5b8135610ff681610fc4565b9392505050565b60006020828403121561100f57600080fd5b5035919050565b60008060006060848603121561102b57600080fd5b8335925060208401359150604084013561104481610fc4565b809150509250925092565b60006020828403121561106157600080fd5b8151610ff681610fc4565b634e487b7160e01b600052601160045260246000fd5b600082198211156110955761109561106c565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008160001904831182151516156110e9576110e961106c565b500290565b60008261110b57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156111225761112261106c565b50039056fea2646970667358221220e782c9799adff0062a959bdeb63911a03b240e3193b2814e07526e4db88c6fab64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d539690
-----Decoded View---------------
Arg [0] : initialFeePortion (uint256): 500
Arg [1] : immutableNftTokenContract (address): 0xf85c6320cc60DEC45Af1f7cE82B13dd24D539690
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [1] : 000000000000000000000000f85c6320cc60dec45af1f7ce82b13dd24d539690
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,110.11 | 0.041 | $127.51 |
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.