Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 157 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Settle | 23963969 | 89 days ago | IN | 0 ETH | 0.00000223 | ||||
| Settle | 23963968 | 89 days ago | IN | 0 ETH | 0.00014927 | ||||
| Bid | 23963660 | 89 days ago | IN | 0 ETH | 0.00012785 | ||||
| Bid | 23963581 | 89 days ago | IN | 27.81272064 ETH | 0.00010035 | ||||
| Bid | 23963519 | 89 days ago | IN | 0 ETH | 0.00011997 | ||||
| Bid | 23963367 | 89 days ago | IN | 22.98571954 ETH | 0.00009936 | ||||
| Bid | 23963276 | 89 days ago | IN | 0 ETH | 0.00012236 | ||||
| Bid | 23963100 | 89 days ago | IN | 18.99646243 ETH | 0.00010135 | ||||
| Bid | 23963007 | 89 days ago | IN | 0 ETH | 0.00011711 | ||||
| Bid | 23962834 | 89 days ago | IN | 15.69955572 ETH | 0.00009502 | ||||
| Bid | 23962813 | 89 days ago | IN | 0 ETH | 0.00011841 | ||||
| Bid | 23962565 | 89 days ago | IN | 12.97483944 ETH | 0.00009785 | ||||
| Bid | 23962555 | 89 days ago | IN | 0 ETH | 0.00008403 | ||||
| Bid | 23962555 | 89 days ago | IN | 0 ETH | 0.00012015 | ||||
| Bid | 23962324 | 89 days ago | IN | 9.74818891 ETH | 0.0001207 | ||||
| Bid | 23962278 | 89 days ago | IN | 8.86198992 ETH | 0.00012037 | ||||
| Bid | 23962142 | 89 days ago | IN | 8.05635447 ETH | 0.00009759 | ||||
| Bid | 23962122 | 89 days ago | IN | 0 ETH | 0.00012261 | ||||
| Bid | 23962088 | 89 days ago | IN | 6.65814419 ETH | 0.00009689 | ||||
| Bid | 23962078 | 89 days ago | IN | 0 ETH | 0.0001208 | ||||
| Bid | 23962057 | 89 days ago | IN | 5.5025985 ETH | 0.0001214 | ||||
| Bid | 23961628 | 89 days ago | IN | 5.00236227 ETH | 0.00002403 | ||||
| Bid | 23957895 | 90 days ago | IN | 4.54760207 ETH | 0.00022898 | ||||
| Bid | 23957599 | 90 days ago | IN | 4.1341837 ETH | 0.00009787 | ||||
| Bid | 23957594 | 90 days ago | IN | 3.75834881 ETH | 0.00009779 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 23963660 | 89 days ago | 27.81272064 ETH | ||||
| Transfer | 23963519 | 89 days ago | 22.98571954 ETH | ||||
| Transfer | 23963276 | 89 days ago | 18.99646243 ETH | ||||
| Transfer | 23963007 | 89 days ago | 15.69955572 ETH | ||||
| Transfer | 23962813 | 89 days ago | 12.97483944 ETH | ||||
| Transfer | 23962555 | 89 days ago | 9.74818891 ETH | ||||
| Transfer | 23962324 | 89 days ago | 8.86198992 ETH | ||||
| Transfer | 23962278 | 89 days ago | 8.05635447 ETH | ||||
| Transfer | 23962122 | 89 days ago | 6.65814419 ETH | ||||
| Transfer | 23962078 | 89 days ago | 5.5025985 ETH | ||||
| Transfer | 23962057 | 89 days ago | 5.00236227 ETH | ||||
| Transfer | 23961628 | 89 days ago | 4.54760207 ETH | ||||
| Transfer | 23957895 | 90 days ago | 4.1341837 ETH | ||||
| Transfer | 23957599 | 90 days ago | 3.75834881 ETH | ||||
| Transfer | 23957594 | 90 days ago | 3.41668074 ETH | ||||
| Transfer | 23957220 | 90 days ago | 3.1060734 ETH | ||||
| Transfer | 23957177 | 90 days ago | 2.82370309 ETH | ||||
| Transfer | 23957135 | 90 days ago | 2.56700281 ETH | ||||
| Transfer | 23956911 | 90 days ago | 2.33363892 ETH | ||||
| Transfer | 23956650 | 90 days ago | 2.12148992 ETH | ||||
| Transfer | 23956535 | 90 days ago | 1.9286272 ETH | ||||
| Transfer | 23956440 | 90 days ago | 1.75329746 ETH | ||||
| Transfer | 23956427 | 90 days ago | 1.59390678 ETH | ||||
| Transfer | 23956413 | 90 days ago | 1.44900616 ETH | ||||
| Transfer | 23956411 | 90 days ago | 1.31727833 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Auction
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 95000 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import {ERC721Holder} from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol";
/// @title Auction
/// @author VisualizeValue
/// @notice Single ERC721 auction with concierge bidding, exact 10% bid increments, and configurable time extension.
/// @dev NFT must be transferred to this contract separately after deployment.
contract Auction is Ownable, ERC721Holder {
// ============ Errors ============
error AuctionNotStarted();
error AuctionEnded();
error AuctionNotEnded();
error AuctionAlreadySettled();
error InvalidBidAmount(uint256 required, uint256 provided);
error InvalidAddress();
error NoBalanceToWithdraw();
error WithdrawalFailed();
error NoProceedsToWithdraw();
error ProceedsAlreadyWithdrawn();
error InvalidConfiguration();
error AuctionAlreadyStarted();
error NFTNotEscrowed();
// ============ Events ============
/// @dev Emitted when a bid is placed (either ETH or concierge).
/// @param bidder The address credited as the bidder.
/// @param amount The bid amount.
/// @param isConcierge True if this was a concierge bid (no ETH transferred).
event Bid(address indexed bidder, uint256 amount, bool isConcierge);
/// @dev Emitted when auction end time is extended.
event AuctionExtended(uint40 newEndTimestamp);
/// @dev Emitted when auction is settled and NFT transferred.
event AuctionSettled(address indexed winner, uint256 winningBid);
/// @dev Emitted when a bidder withdraws their failed refund balance.
event Withdrawal(address indexed account, uint256 amount);
/// @dev Emitted when owner withdraws auction proceeds.
event ProceedsWithdrawn(address indexed recipient, uint256 amount);
/// @dev Emitted when auction is started by owner.
event AuctionStarted(uint40 endTimestamp);
// ============ Immutable Configuration ============
/// @notice The ERC721 contract address.
IERC721 public immutable nftContract;
/// @notice The token ID being auctioned.
uint256 public immutable tokenId;
/// @notice Initial end timestamp (before any extensions).
uint40 public immutable initialEndTimestamp;
/// @notice Starting bid amount (first bid must be exactly this).
uint128 public immutable startingBid;
/// @notice Time extension when bid arrives within this period before end.
uint40 public immutable bidExtensionDelay;
/// @notice Address that can bid without sending ETH (for off-chain payments).
address public immutable concierge;
// ============ Mutable State ============
/// @notice Whether the auction has been started.
bool public started;
/// @notice Current end timestamp (may be extended by late bids).
uint40 public endTimestamp;
/// @notice Current highest bid amount.
uint128 public highestBid;
/// @notice Current highest bidder address.
address public highestBidder;
/// @notice Whether the current highest bid was placed by concierge (no ETH).
bool public highestBidIsConcierge;
/// @notice Whether the auction has been settled.
bool public settled;
/// @notice Whether the proceeds have been withdrawn.
bool public proceedsWithdrawn;
/// @notice Fallback balances for failed refunds (DOS protection).
mapping(address => uint256) public balances;
// ============ Constructor ============
/// @param _owner Contract owner (receives proceeds).
/// @param _concierge Concierge address for off-chain payment bids.
/// @param _nftContract ERC721 contract address.
/// @param _tokenId Token ID to auction.
/// @param _endTimestamp Initial auction end time (once started).
/// @param _startingBid First bid must equal this amount.
/// @param _bidExtensionDelay Extension period (e.g., 1 hour = 3600).
constructor(
address _owner,
address _concierge,
address _nftContract,
uint256 _tokenId,
uint40 _endTimestamp,
uint128 _startingBid,
uint40 _bidExtensionDelay
) Ownable(_owner) {
if (_nftContract == address(0)) revert InvalidAddress();
if (_concierge == address(0)) revert InvalidAddress();
if (_endTimestamp == 0) revert InvalidConfiguration();
if (_startingBid == 0) revert InvalidConfiguration();
if (_bidExtensionDelay == 0) revert InvalidConfiguration();
nftContract = IERC721(_nftContract);
tokenId = _tokenId;
initialEndTimestamp = _endTimestamp;
endTimestamp = _endTimestamp;
startingBid = _startingBid;
bidExtensionDelay = _bidExtensionDelay;
concierge = _concierge;
}
// ============ Start Function ============
/// @notice Starts the auction. Only callable by owner.
function start() external onlyOwner {
if (started) revert AuctionAlreadyStarted();
if (nftContract.ownerOf(tokenId) != address(this)) revert NFTNotEscrowed();
started = true;
emit AuctionStarted(endTimestamp);
}
// ============ Bidding Functions ============
/// @notice Place a bid. Regular bidders must send exact ETH amount.
/// Concierge can bid without ETH (for off-chain payments).
/// @dev Refunds previous bidder with 60k gas limit for DOS protection.
function bid() external payable {
if (!started) revert AuctionNotStarted();
if (block.timestamp >= endTimestamp) revert AuctionEnded();
if (settled) revert AuctionAlreadySettled();
uint256 required = nextValidBid();
bool isConcierge = msg.sender == concierge;
if (!isConcierge && msg.value != required) {
revert InvalidBidAmount(required, msg.value);
}
address previousBidder = highestBidder;
uint256 previousBid = highestBid;
bool previousWasConcierge = highestBidIsConcierge;
// Update state BEFORE external calls (CEI pattern)
highestBidder = msg.sender;
highestBid = uint128(required);
highestBidIsConcierge = isConcierge;
// Extend auction if within extension period
_maybeExtendAuction();
// Refund previous bidder (only if they paid ETH)
if (previousBidder != address(0) && !previousWasConcierge) {
(bool success,) = payable(previousBidder).call{value: previousBid, gas: 60_000}("");
if (!success) {
balances[previousBidder] += previousBid;
}
}
emit Bid(msg.sender, required, isConcierge);
}
// ============ View Functions ============
/// @notice Returns the exact amount required for the next valid bid.
/// @return The next valid bid amount in wei.
function nextValidBid() public view returns (uint256) {
if (highestBid == 0) {
return startingBid;
}
// Exactly 10% increase
return (uint256(highestBid) * 110) / 100;
}
/// @notice Returns current auction status.
function auctionStatus()
external
view
returns (
bool isActive,
bool hasStarted,
bool hasEnded,
uint256 currentBid,
address currentBidder,
uint256 nextBid,
uint40 timeRemaining
)
{
hasStarted = started;
hasEnded = (started && block.timestamp >= endTimestamp) || settled;
isActive = hasStarted && !hasEnded;
currentBid = highestBid;
currentBidder = highestBidder;
nextBid = nextValidBid();
timeRemaining = (started && block.timestamp < endTimestamp) ? endTimestamp - uint40(block.timestamp) : 0;
}
// ============ Settlement ============
/// @notice Settles the auction after it ends. Transfers NFT to winner.
/// @dev Anyone can call this after auction ends.
function settle() external {
if (settled) revert AuctionAlreadySettled();
if (!started || block.timestamp < endTimestamp) revert AuctionNotEnded();
settled = true;
address winner;
if (highestBidder != address(0)) {
winner = highestBidder;
} else {
// No bids - return NFT to owner
winner = owner();
}
// Transfer NFT to winner
nftContract.safeTransferFrom(address(this), winner, tokenId);
emit AuctionSettled(winner, highestBid);
}
// ============ Withdrawal Functions ============
/// @notice Withdraw failed refund balance (pull pattern for DOS protection).
function withdraw() external {
uint256 amount = balances[msg.sender];
if (amount == 0) revert NoBalanceToWithdraw();
// Set balance to zero before external call (reentrancy guard)
balances[msg.sender] = 0;
(bool success,) = payable(msg.sender).call{value: amount}("");
if (!success) revert WithdrawalFailed();
emit Withdrawal(msg.sender, amount);
}
/// @notice Owner withdraws auction proceeds after settlement.
/// @dev Only callable after settlement. Only withdraws the winning bid amount.
function withdrawProceeds() external onlyOwner {
if (!settled) revert AuctionNotEnded();
if (proceedsWithdrawn) revert ProceedsAlreadyWithdrawn();
// Only withdraw the winning bid amount (not failed refund balances)
// Concierge bids don't have ETH to withdraw
uint256 amount = highestBidIsConcierge ? 0 : uint256(highestBid);
if (amount == 0) revert NoProceedsToWithdraw();
proceedsWithdrawn = true;
(bool success,) = payable(owner()).call{value: amount}("");
if (!success) revert WithdrawalFailed();
emit ProceedsWithdrawn(owner(), amount);
}
// ============ Internal Functions ============
/// @dev Extends auction end time if current bid is within extension window.
function _maybeExtendAuction() private {
if (block.timestamp >= endTimestamp - bidExtensionDelay) {
endTimestamp = uint40(block.timestamp) + bidExtensionDelay;
emit AuctionExtended(endTimestamp);
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../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.
*
* The initial owner is set to the address provided by the deployer. 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;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @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 {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling 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 {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/IERC721.sol)
pragma solidity >=0.6.2;
import {IERC165} from "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC-721 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`.
*
* 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;
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC-721 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 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: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721
* or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
* understand this adds an external call which potentially creates a reentrancy vulnerability.
*
* 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 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 address zero.
*
* 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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC721/IERC721Receiver.sol)
pragma solidity >=0.5.0;
/**
* @title ERC-721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC-721 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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/utils/ERC721Holder.sol)
pragma solidity ^0.8.20;
import {IERC721Receiver} from "../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}.
*/
abstract contract ERC721Holder is IERC721Receiver {
/**
* @dev See {IERC721Receiver-onERC721Received}.
*
* Always returns `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) {
return this.onERC721Received.selector;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @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;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* 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[ERC 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);
}{
"evmVersion": "cancun",
"optimizer": {
"enabled": true,
"runs": 95000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": [
"project/:@openzeppelin/contracts/=npm/@openzeppelin/[email protected]/",
"project/:@openzeppelin/contracts/=npm/@openzeppelin/[email protected]/",
"project/:@openzeppelin/contracts/=npm/@openzeppelin/[email protected]/"
]
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_concierge","type":"address"},{"internalType":"address","name":"_nftContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint40","name":"_endTimestamp","type":"uint40"},{"internalType":"uint128","name":"_startingBid","type":"uint128"},{"internalType":"uint40","name":"_bidExtensionDelay","type":"uint40"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AuctionAlreadySettled","type":"error"},{"inputs":[],"name":"AuctionAlreadyStarted","type":"error"},{"inputs":[],"name":"AuctionEnded","type":"error"},{"inputs":[],"name":"AuctionNotEnded","type":"error"},{"inputs":[],"name":"AuctionNotStarted","type":"error"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"required","type":"uint256"},{"internalType":"uint256","name":"provided","type":"uint256"}],"name":"InvalidBidAmount","type":"error"},{"inputs":[],"name":"InvalidConfiguration","type":"error"},{"inputs":[],"name":"NFTNotEscrowed","type":"error"},{"inputs":[],"name":"NoBalanceToWithdraw","type":"error"},{"inputs":[],"name":"NoProceedsToWithdraw","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ProceedsAlreadyWithdrawn","type":"error"},{"inputs":[],"name":"WithdrawalFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint40","name":"newEndTimestamp","type":"uint40"}],"name":"AuctionExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"winningBid","type":"uint256"}],"name":"AuctionSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint40","name":"endTimestamp","type":"uint40"}],"name":"AuctionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isConcierge","type":"bool"}],"name":"Bid","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":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProceedsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"auctionStatus","outputs":[{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"bool","name":"hasStarted","type":"bool"},{"internalType":"bool","name":"hasEnded","type":"bool"},{"internalType":"uint256","name":"currentBid","type":"uint256"},{"internalType":"address","name":"currentBidder","type":"address"},{"internalType":"uint256","name":"nextBid","type":"uint256"},{"internalType":"uint40","name":"timeRemaining","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"bidExtensionDelay","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"concierge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endTimestamp","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"highestBid","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"highestBidIsConcierge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"highestBidder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialEndTimestamp","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextValidBid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"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":"proceedsWithdrawn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"started","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startingBid","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenId","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":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawProceeds","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
610140604052348015610010575f5ffd5b50604051611bf2380380611bf283398101604081905261002f91610204565b866001600160a01b03811661005d57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61006681610186565b506001600160a01b03851661008e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0386166100b55760405163e6c4247b60e01b815260040160405180910390fd5b8264ffffffffff165f036100dc5760405163c52a9bd360e01b815260040160405180910390fd5b816001600160801b03165f036101055760405163c52a9bd360e01b815260040160405180910390fd5b8064ffffffffff165f0361012c5760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b0394851660805260a09390935264ffffffffff91821660c08190525f805464ffffffffff60a81b1916600160a81b9092029190911790556001600160801b031660e052166101005216610120525061028c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146101eb575f5ffd5b919050565b805164ffffffffff811681146101eb575f5ffd5b5f5f5f5f5f5f5f60e0888a03121561021a575f5ffd5b610223886101d5565b9650610231602089016101d5565b955061023f604089016101d5565b945060608801519350610254608089016101f0565b60a08901519093506001600160801b0381168114610270575f5ffd5b915061027e60c089016101f0565b905092959891949750929550565b60805160a05160c05160e05161010051610120516118e761030b5f395f81816102730152610a2901525f81816103de0152818161147401526114cb01525f81816105980152610dc101525f61056501525f81816102cb01528181610822015261127e01525f81816106000152818161084801526112bb01526118e75ff3fe60806040526004361061018e575f3560e01c806386fa771b116100dc578063a85adeab11610087578063be9a655511610062578063be9a6555146105db578063d56d229d146105ef578063d57bde7914610622578063f2fde38b1461064a575f5ffd5b8063a85adeab1461051f578063b8622a3e14610554578063b9fdd56914610587575f5ffd5b80639038e693116100b75780639038e6931461047157806391f90157146104855780639d6a0f28146104b1575f5ffd5b806386fa771b146103cd5780638da5cb5b146104165780638f7758391461043f575f5ffd5b80631f2698ab1161013c57806365ffc9551161011757806365ffc95514610372578063715018a61461038657806386a317571461039a575f5ffd5b80631f2698ab1461030357806327e235e3146103335780633ccfd60b1461035e575f5ffd5b806316b1e8431161016c57806316b1e8431461026257806317d70f7c146102ba5780631998aeef146102fb575f5ffd5b80630182c1711461019257806311da60b4146101d8578063150b7a02146101ee575b5f5ffd5b34801561019d575f5ffd5b506002546101c39074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020015b60405180910390f35b3480156101e3575f5ffd5b506101ec610669565b005b3480156101f9575f5ffd5b50610231610208366004611687565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101cf565b34801561026d575f5ffd5b506102957f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cf565b3480156102c5575f5ffd5b506102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101cf565b6101ec610903565b34801561030e575f5ffd5b505f546101c39074010000000000000000000000000000000000000000900460ff1681565b34801561033e575f5ffd5b506102ed61034d3660046117a5565b60036020525f908152604090205481565b348015610369575f5ffd5b506101ec610c7f565b34801561037d575f5ffd5b506102ed610d90565b348015610391575f5ffd5b506101ec610e16565b3480156103a5575f5ffd5b506002546101c390760100000000000000000000000000000000000000000000900460ff1681565b3480156103d8575f5ffd5b506104007f000000000000000000000000000000000000000000000000000000000000000081565b60405164ffffffffff90911681526020016101cf565b348015610421575f5ffd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610295565b34801561044a575f5ffd5b506002546101c3907501000000000000000000000000000000000000000000900460ff1681565b34801561047c575f5ffd5b506101ec610e29565b348015610490575f5ffd5b506002546102959073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104bc575f5ffd5b506104c56110ab565b604080519715158852951515602088015293151594860194909452606085019190915273ffffffffffffffffffffffffffffffffffffffff16608084015260a083019190915264ffffffffff1660c082015260e0016101cf565b34801561052a575f5ffd5b505f54610400907501000000000000000000000000000000000000000000900464ffffffffff1681565b34801561055f575f5ffd5b506104007f000000000000000000000000000000000000000000000000000000000000000081565b348015610592575f5ffd5b506105ba7f000000000000000000000000000000000000000000000000000000000000000081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101cf565b3480156105e6575f5ffd5b506101ec6111fa565b3480156105fa575f5ffd5b506102957f000000000000000000000000000000000000000000000000000000000000000081565b34801561062d575f5ffd5b506001546105ba906fffffffffffffffffffffffffffffffff1681565b348015610655575f5ffd5b506101ec6106643660046117a5565b611409565b6002547501000000000000000000000000000000000000000000900460ff16156106bf576040517f4f4fee1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5474010000000000000000000000000000000000000000900460ff16158061070857505f547501000000000000000000000000000000000000000000900464ffffffffff1642105b1561073f576040517f6463738900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff81167501000000000000000000000000000000000000000000179091555f9073ffffffffffffffffffffffffffffffffffffffff16156107bd575060025473ffffffffffffffffffffffffffffffffffffffff166107d7565b505f5473ffffffffffffffffffffffffffffffffffffffff165b6040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82811660248301527f000000000000000000000000000000000000000000000000000000000000000060448301527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e906064015f604051808303815f87803b158015610889575f5ffd5b505af115801561089b573d5f5f3e3d5ffd5b50506001546040516fffffffffffffffffffffffffffffffff909116815273ffffffffffffffffffffffffffffffffffffffff841692507f15bff754355d68fa38fb3ca8459829a807947cbf186c0f47d283d8dbbfcad568915060200160405180910390a250565b5f5474010000000000000000000000000000000000000000900460ff16610956576040517feffaea8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f547501000000000000000000000000000000000000000000900464ffffffffff1642106109b0576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547501000000000000000000000000000000000000000000900460ff1615610a06576040517f4f4fee1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a0f610d90565b90503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801581610a575750813414155b15610a9c576040517fec7ed57e000000000000000000000000000000000000000000000000000000008152600481018390523460248201526044015b60405180910390fd5b60028054600180546fffffffffffffffffffffffffffffffff8681167fffffffffffffffffffffffffffffffff00000000000000000000000000000000831617909255841515740100000000000000000000000000000000000000009081027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffff0000000000000000000000000000000000000000008616171790945573ffffffffffffffffffffffffffffffffffffffff83169391169160ff91900416610b6f61146c565b73ffffffffffffffffffffffffffffffffffffffff831615801590610b92575080155b15610c3c575f8373ffffffffffffffffffffffffffffffffffffffff168361ea60906040515f60405180830381858888f193505050503d805f8114610bf2576040519150601f19603f3d011682016040523d82523d5f602084013e610bf7565b606091505b5050905080610c3a5773ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604081208054859290610c349084906117f4565b90915550505b505b60408051868152851515602082015233917fd5d1df7481b12aa66df1a85d5073710a23203850d6080356b160f1343de9e09b910160405180910390a25050505050565b335f9081526003602052604081205490819003610cc8576040517fbbd8170800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f818152600360205260408082208290555190919083908381818185875af1925050503d805f8114610d16576040519150601f19603f3d011682016040523d82523d5f602084013e610d1b565b606091505b5050905080610d56576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405182815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65906020015b60405180910390a25050565b6001545f906fffffffffffffffffffffffffffffffff168103610de457506fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600154606490610e07906fffffffffffffffffffffffffffffffff16606e61180d565b610e119190611824565b905090565b610e1e611573565b610e275f6115c5565b565b610e31611573565b6002547501000000000000000000000000000000000000000000900460ff16610e86576040517f6463738900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254760100000000000000000000000000000000000000000000900460ff1615610edd576040517fed56d45700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f9074010000000000000000000000000000000000000000900460ff16610f1b576001546fffffffffffffffffffffffffffffffff16610f1d565b5f5b9050805f03610f58576040517fba414ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790555f610fb85f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461100c576040519150601f19603f3d011682016040523d82523d5f602084013e611011565b606091505b505090508061104c576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0f2fb75cc1977a496e94837f859e957f68e26e70dc1b75d9945ee92ae57969ba83604051610d8491815260200190565b5f805474010000000000000000000000000000000000000000900460ff1681808080808580156110fc57505f547501000000000000000000000000000000000000000000900464ffffffffff164210155b8061112257506002547501000000000000000000000000000000000000000000900460ff165b945085801561112f575084155b6001546002549198506fffffffffffffffffffffffffffffffff16945073ffffffffffffffffffffffffffffffffffffffff16925061116c610d90565b5f5490925074010000000000000000000000000000000000000000900460ff1680156111b857505f547501000000000000000000000000000000000000000000900464ffffffffff1642105b6111c2575f6111ef565b5f546111ef9042907501000000000000000000000000000000000000000000900464ffffffffff1661185c565b905090919293949596565b611202611573565b5f5474010000000000000000000000000000000000000000900460ff1615611256576040517f628e388300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f6352211e0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152309073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611300573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113249190611879565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f03a273fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790819055604051750100000000000000000000000000000000000000000090910464ffffffffff1681527fcd040613cf8ef0cfcaa3af0d711783e827a275fc647c116b74595bf17cb9364f906020015b60405180910390a1565b611411611573565b73ffffffffffffffffffffffffffffffffffffffff8116611460576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610a93565b611469816115c5565b50565b5f546114b9907f0000000000000000000000000000000000000000000000000000000000000000907501000000000000000000000000000000000000000000900464ffffffffff1661185c565b64ffffffffff164210610e27576114f07f000000000000000000000000000000000000000000000000000000000000000042611894565b5f80547fffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000064ffffffffff93841681029190911791829055604051910490911681527fccfbb5a2a7c2859068af0a6fb0e90181c4d4f1d9b122630e9abf0ba3a3e7facd906020016113ff565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610e27576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a93565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff81168114611469575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f5f5f6080858703121561169a575f5ffd5b84356116a581611639565b935060208501356116b581611639565b925060408501359150606085013567ffffffffffffffff8111156116d7575f5ffd5b8501601f810187136116e7575f5ffd5b803567ffffffffffffffff8111156117015761170161165a565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561176d5761176d61165a565b604052818152828201602001891015611784575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f602082840312156117b5575f5ffd5b81356117c081611639565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611807576118076117c7565b92915050565b8082028115828204841417611807576118076117c7565b5f82611857577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b64ffffffffff8281168282160390811115611807576118076117c7565b5f60208284031215611889575f5ffd5b81516117c081611639565b64ffffffffff8181168382160190811115611807576118076117c756fea26469706673582212202d924b5719b998fe7eec4e29124c671ecd937bf92fa0857b3cb3a4449f0ec88f64736f6c634300081c0033000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce1000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce1000000000000000000000000346f28614274cb868b48986454d2eb738c13dcea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006935b290000000000000000000000000000000000000000000000000000110d9316ec0000000000000000000000000000000000000000000000000000000000000000e10
Deployed Bytecode
0x60806040526004361061018e575f3560e01c806386fa771b116100dc578063a85adeab11610087578063be9a655511610062578063be9a6555146105db578063d56d229d146105ef578063d57bde7914610622578063f2fde38b1461064a575f5ffd5b8063a85adeab1461051f578063b8622a3e14610554578063b9fdd56914610587575f5ffd5b80639038e693116100b75780639038e6931461047157806391f90157146104855780639d6a0f28146104b1575f5ffd5b806386fa771b146103cd5780638da5cb5b146104165780638f7758391461043f575f5ffd5b80631f2698ab1161013c57806365ffc9551161011757806365ffc95514610372578063715018a61461038657806386a317571461039a575f5ffd5b80631f2698ab1461030357806327e235e3146103335780633ccfd60b1461035e575f5ffd5b806316b1e8431161016c57806316b1e8431461026257806317d70f7c146102ba5780631998aeef146102fb575f5ffd5b80630182c1711461019257806311da60b4146101d8578063150b7a02146101ee575b5f5ffd5b34801561019d575f5ffd5b506002546101c39074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020015b60405180910390f35b3480156101e3575f5ffd5b506101ec610669565b005b3480156101f9575f5ffd5b50610231610208366004611687565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101cf565b34801561026d575f5ffd5b506102957f000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce181565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cf565b3480156102c5575f5ffd5b506102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101cf565b6101ec610903565b34801561030e575f5ffd5b505f546101c39074010000000000000000000000000000000000000000900460ff1681565b34801561033e575f5ffd5b506102ed61034d3660046117a5565b60036020525f908152604090205481565b348015610369575f5ffd5b506101ec610c7f565b34801561037d575f5ffd5b506102ed610d90565b348015610391575f5ffd5b506101ec610e16565b3480156103a5575f5ffd5b506002546101c390760100000000000000000000000000000000000000000000900460ff1681565b3480156103d8575f5ffd5b506104007f0000000000000000000000000000000000000000000000000000000000000e1081565b60405164ffffffffff90911681526020016101cf565b348015610421575f5ffd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610295565b34801561044a575f5ffd5b506002546101c3907501000000000000000000000000000000000000000000900460ff1681565b34801561047c575f5ffd5b506101ec610e29565b348015610490575f5ffd5b506002546102959073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104bc575f5ffd5b506104c56110ab565b604080519715158852951515602088015293151594860194909452606085019190915273ffffffffffffffffffffffffffffffffffffffff16608084015260a083019190915264ffffffffff1660c082015260e0016101cf565b34801561052a575f5ffd5b505f54610400907501000000000000000000000000000000000000000000900464ffffffffff1681565b34801561055f575f5ffd5b506104007f000000000000000000000000000000000000000000000000000000006935b29081565b348015610592575f5ffd5b506105ba7f000000000000000000000000000000000000000000000000000110d9316ec00081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101cf565b3480156105e6575f5ffd5b506101ec6111fa565b3480156105fa575f5ffd5b506102957f000000000000000000000000346f28614274cb868b48986454d2eb738c13dcea81565b34801561062d575f5ffd5b506001546105ba906fffffffffffffffffffffffffffffffff1681565b348015610655575f5ffd5b506101ec6106643660046117a5565b611409565b6002547501000000000000000000000000000000000000000000900460ff16156106bf576040517f4f4fee1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5474010000000000000000000000000000000000000000900460ff16158061070857505f547501000000000000000000000000000000000000000000900464ffffffffff1642105b1561073f576040517f6463738900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff81167501000000000000000000000000000000000000000000179091555f9073ffffffffffffffffffffffffffffffffffffffff16156107bd575060025473ffffffffffffffffffffffffffffffffffffffff166107d7565b505f5473ffffffffffffffffffffffffffffffffffffffff165b6040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82811660248301527f000000000000000000000000000000000000000000000000000000000000000060448301527f000000000000000000000000346f28614274cb868b48986454d2eb738c13dcea16906342842e0e906064015f604051808303815f87803b158015610889575f5ffd5b505af115801561089b573d5f5f3e3d5ffd5b50506001546040516fffffffffffffffffffffffffffffffff909116815273ffffffffffffffffffffffffffffffffffffffff841692507f15bff754355d68fa38fb3ca8459829a807947cbf186c0f47d283d8dbbfcad568915060200160405180910390a250565b5f5474010000000000000000000000000000000000000000900460ff16610956576040517feffaea8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f547501000000000000000000000000000000000000000000900464ffffffffff1642106109b0576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547501000000000000000000000000000000000000000000900460ff1615610a06576040517f4f4fee1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a0f610d90565b90503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce11614801581610a575750813414155b15610a9c576040517fec7ed57e000000000000000000000000000000000000000000000000000000008152600481018390523460248201526044015b60405180910390fd5b60028054600180546fffffffffffffffffffffffffffffffff8681167fffffffffffffffffffffffffffffffff00000000000000000000000000000000831617909255841515740100000000000000000000000000000000000000009081027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffff0000000000000000000000000000000000000000008616171790945573ffffffffffffffffffffffffffffffffffffffff83169391169160ff91900416610b6f61146c565b73ffffffffffffffffffffffffffffffffffffffff831615801590610b92575080155b15610c3c575f8373ffffffffffffffffffffffffffffffffffffffff168361ea60906040515f60405180830381858888f193505050503d805f8114610bf2576040519150601f19603f3d011682016040523d82523d5f602084013e610bf7565b606091505b5050905080610c3a5773ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604081208054859290610c349084906117f4565b90915550505b505b60408051868152851515602082015233917fd5d1df7481b12aa66df1a85d5073710a23203850d6080356b160f1343de9e09b910160405180910390a25050505050565b335f9081526003602052604081205490819003610cc8576040517fbbd8170800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f818152600360205260408082208290555190919083908381818185875af1925050503d805f8114610d16576040519150601f19603f3d011682016040523d82523d5f602084013e610d1b565b606091505b5050905080610d56576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405182815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65906020015b60405180910390a25050565b6001545f906fffffffffffffffffffffffffffffffff168103610de457506fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000110d9316ec0001690565b600154606490610e07906fffffffffffffffffffffffffffffffff16606e61180d565b610e119190611824565b905090565b610e1e611573565b610e275f6115c5565b565b610e31611573565b6002547501000000000000000000000000000000000000000000900460ff16610e86576040517f6463738900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254760100000000000000000000000000000000000000000000900460ff1615610edd576040517fed56d45700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f9074010000000000000000000000000000000000000000900460ff16610f1b576001546fffffffffffffffffffffffffffffffff16610f1d565b5f5b9050805f03610f58576040517fba414ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790555f610fb85f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461100c576040519150601f19603f3d011682016040523d82523d5f602084013e611011565b606091505b505090508061104c576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0f2fb75cc1977a496e94837f859e957f68e26e70dc1b75d9945ee92ae57969ba83604051610d8491815260200190565b5f805474010000000000000000000000000000000000000000900460ff1681808080808580156110fc57505f547501000000000000000000000000000000000000000000900464ffffffffff164210155b8061112257506002547501000000000000000000000000000000000000000000900460ff165b945085801561112f575084155b6001546002549198506fffffffffffffffffffffffffffffffff16945073ffffffffffffffffffffffffffffffffffffffff16925061116c610d90565b5f5490925074010000000000000000000000000000000000000000900460ff1680156111b857505f547501000000000000000000000000000000000000000000900464ffffffffff1642105b6111c2575f6111ef565b5f546111ef9042907501000000000000000000000000000000000000000000900464ffffffffff1661185c565b905090919293949596565b611202611573565b5f5474010000000000000000000000000000000000000000900460ff1615611256576040517f628e388300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f6352211e0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152309073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000346f28614274cb868b48986454d2eb738c13dcea1690636352211e90602401602060405180830381865afa158015611300573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113249190611879565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f03a273fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790819055604051750100000000000000000000000000000000000000000090910464ffffffffff1681527fcd040613cf8ef0cfcaa3af0d711783e827a275fc647c116b74595bf17cb9364f906020015b60405180910390a1565b611411611573565b73ffffffffffffffffffffffffffffffffffffffff8116611460576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610a93565b611469816115c5565b50565b5f546114b9907f0000000000000000000000000000000000000000000000000000000000000e10907501000000000000000000000000000000000000000000900464ffffffffff1661185c565b64ffffffffff164210610e27576114f07f0000000000000000000000000000000000000000000000000000000000000e1042611894565b5f80547fffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000064ffffffffff93841681029190911791829055604051910490911681527fccfbb5a2a7c2859068af0a6fb0e90181c4d4f1d9b122630e9abf0ba3a3e7facd906020016113ff565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610e27576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a93565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff81168114611469575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f5f5f6080858703121561169a575f5ffd5b84356116a581611639565b935060208501356116b581611639565b925060408501359150606085013567ffffffffffffffff8111156116d7575f5ffd5b8501601f810187136116e7575f5ffd5b803567ffffffffffffffff8111156117015761170161165a565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561176d5761176d61165a565b604052818152828201602001891015611784575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f602082840312156117b5575f5ffd5b81356117c081611639565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611807576118076117c7565b92915050565b8082028115828204841417611807576118076117c7565b5f82611857577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b64ffffffffff8281168282160390811115611807576118076117c7565b5f60208284031215611889575f5ffd5b81516117c081611639565b64ffffffffff8181168382160190811115611807576118076117c756fea26469706673582212202d924b5719b998fe7eec4e29124c671ecd937bf92fa0857b3cb3a4449f0ec88f64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce1000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce1000000000000000000000000346f28614274cb868b48986454d2eb738c13dcea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006935b290000000000000000000000000000000000000000000000000000110d9316ec0000000000000000000000000000000000000000000000000000000000000000e10
-----Decoded View---------------
Arg [0] : _owner (address): 0xC9979381750d5325378CBE36177E7aB037D87CE1
Arg [1] : _concierge (address): 0xC9979381750d5325378CBE36177E7aB037D87CE1
Arg [2] : _nftContract (address): 0x346f28614274Cb868B48986454D2EB738c13dCEa
Arg [3] : _tokenId (uint256): 0
Arg [4] : _endTimestamp (uint40): 1765126800
Arg [5] : _startingBid (uint128): 300000000000000
Arg [6] : _bidExtensionDelay (uint40): 3600
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce1
Arg [1] : 000000000000000000000000c9979381750d5325378cbe36177e7ab037d87ce1
Arg [2] : 000000000000000000000000346f28614274cb868b48986454d2eb738c13dcea
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000000000000000000000000000000000006935b290
Arg [5] : 000000000000000000000000000000000000000000000000000110d9316ec000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000e10
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.