More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 389 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Start | 5582122 | 424 days ago | IN | 0 GLMR | 0.03161028 | ||||
Start | 5147892 | 486 days ago | IN | 0 GLMR | 0.22584745 | ||||
Start | 5114838 | 490 days ago | IN | 0 GLMR | 0.04532451 | ||||
Bid | 5114693 | 490 days ago | IN | 300 GLMR | 0.01148993 | ||||
Start | 5107605 | 491 days ago | IN | 0 GLMR | 0.1083622 | ||||
Bid | 5100497 | 492 days ago | IN | 300 GLMR | 0.01206495 | ||||
Start | 5100489 | 492 days ago | IN | 0 GLMR | 0.04472455 | ||||
Bid | 5097507 | 493 days ago | IN | 300 GLMR | 0.01029542 | ||||
Start | 5093370 | 493 days ago | IN | 0 GLMR | 0.04456251 | ||||
Bid | 5093198 | 493 days ago | IN | 300 GLMR | 0.01105953 | ||||
Start | 5086177 | 494 days ago | IN | 0 GLMR | 0.03430295 | ||||
Start | 5078366 | 495 days ago | IN | 0 GLMR | 0.03771676 | ||||
Start | 5071202 | 496 days ago | IN | 0 GLMR | 0.04456251 | ||||
Bid | 5062110 | 498 days ago | IN | 300 GLMR | 0.01642439 | ||||
Start | 5062105 | 498 days ago | IN | 0 GLMR | 0.04603797 | ||||
Start | 5011082 | 505 days ago | IN | 0 GLMR | 0.00460543 | ||||
Start | 5011081 | 505 days ago | IN | 0 GLMR | 0.03465309 | ||||
Start | 4799870 | 535 days ago | IN | 0 GLMR | 0.03156138 | ||||
Start | 4720742 | 546 days ago | IN | 0 GLMR | 0.0873116 | ||||
Start | 4694147 | 550 days ago | IN | 0 GLMR | 0.0311845 | ||||
Start | 4529326 | 573 days ago | IN | 0 GLMR | 0.03411864 | ||||
Start | 4220426 | 616 days ago | IN | 0 GLMR | 0.03277582 | ||||
Start | 4168027 | 624 days ago | IN | 0 GLMR | 0.04385387 | ||||
Bid | 4160767 | 625 days ago | IN | 300 GLMR | 0.0109442 | ||||
Start | 4160762 | 625 days ago | IN | 0 GLMR | 0.03403062 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5114838 | 490 days ago | 300 GLMR | ||||
5107605 | 491 days ago | 300 GLMR | ||||
5100489 | 492 days ago | 300 GLMR | ||||
5093370 | 493 days ago | 300 GLMR | ||||
5071202 | 496 days ago | 300 GLMR | ||||
4168027 | 624 days ago | 300 GLMR | ||||
4134609 | 628 days ago | 303 GLMR | ||||
3836334 | 670 days ago | 300 GLMR | ||||
3813839 | 673 days ago | 300 GLMR | ||||
3752283 | 682 days ago | 301 GLMR | ||||
3743365 | 683 days ago | 303 GLMR | ||||
3736237 | 684 days ago | 300 GLMR | ||||
3683575 | 692 days ago | 300 GLMR | ||||
3662463 | 695 days ago | 300 GLMR | ||||
3655437 | 696 days ago | 400 GLMR | ||||
3650628 | 697 days ago | 300 GLMR | ||||
3648324 | 697 days ago | 303 GLMR | ||||
3646736 | 697 days ago | 300 GLMR | ||||
3641140 | 698 days ago | 300 GLMR | ||||
3632572 | 699 days ago | 470 GLMR | ||||
3625595 | 700 days ago | 465 GLMR | ||||
3624863 | 700 days ago | 550 GLMR | ||||
3624205 | 700 days ago | 499.95 GLMR | ||||
3618750 | 701 days ago | 495 GLMR | ||||
3618474 | 701 days ago | 300 GLMR |
Loading...
Loading
Contract Name:
AuctionHouse
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import {ICrest} from "./interfaces/ICrest.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /** * @title Auction House contract * @author Polkadot Builders * @dev This contract allows for the creation and execution of auctions for Polkadot Builder Crests NFTs. * @custom:security-contact [email protected] */ contract AuctionHouse is Ownable, ReentrancyGuard, IERC721Receiver, Pausable { /** * @dev AuctionConfig struct containing auction configuration parameters */ struct AuctionConfig { address treasury; address token; address glmr; uint duration; uint extendedDuration; uint minFirstBid; uint minBidIncrementPercent; } /** * @dev AuctionState struct containing the current state of an auction */ struct AuctionState { uint tokenId; uint startTime; uint endTime; uint currentBid; address bidder; uint minBid; bool isFinished; } address public treasury; IERC20 public glmr = IERC20(0x0000000000000000000000000000000000000802); ICrest private token; uint private duration = 1 days; uint private extendedDuration = 10 minutes; uint private minFirstBid = 1 ether; uint private minBidIncrementPercent = 1; uint private startTime; uint private endTime; uint private currentBid; uint private tokenId; address private bidder; event Bid(uint tokenId, address bidder, uint bid); event Start(uint tokenId); /** * @dev Initializes the contract with the given token and treasury addresses * @param _token The ERC721 token used in the auction * @param _treasury The address to receive the auction proceeds */ constructor(ICrest _token, address _treasury) { token = _token; treasury = _treasury; } /** * @notice Disallows new auctions to be created * @dev Pauses the contract */ function pause() external onlyOwner { _pause(); } /** * @notice Allows new auctions to be created * @dev Unpauses the contract */ function unpause() external onlyOwner { _unpause(); } /** * @notice Sets the address of the treasury account * @dev Sets the address of the treasury account * @param _treasury The new treasury address */ function setTreasury(address _treasury) external onlyOwner { treasury = _treasury; } /** * @notice Sets the address of the ERC20 precompiled contract for GLMR * @dev Sets the address of the ERC20 precompiled contract for GLMR * @param _glmr The new GLMR contract address */ function setGLMR(IERC20 _glmr) external onlyOwner { glmr = _glmr; } /** * @notice Sets the duration, in seconds, of the auction * @dev Sets the duration, in seconds, of the auction * @param _duration The new duration, in seconds, of the auction */ function setDuration(uint _duration) external onlyOwner { duration = _duration; } /** * @notice Sets the extended duration, in seconds, of the auction * @dev Sets the extended duration, in seconds, of the auction * @param _extendedDuration The new extended duration, in seconds, of the auction */ function setExtendedDuration(uint _extendedDuration) external onlyOwner { extendedDuration = _extendedDuration; } /** * @dev Sets the minimum bid amount for the auction * @param _minFirstBid The new minimum bid amount for the auction */ function setMinFirstBid(uint _minFirstBid) external onlyOwner { minFirstBid = _minFirstBid; } /** * @dev Sets the minimum bid increment percentage for the auction * @param _minBidIncrementPercent The new minimum bid increment percentage for the auction */ function setMinBidIncrementPercent(uint _minBidIncrementPercent) external onlyOwner { minBidIncrementPercent = _minBidIncrementPercent; } /** * @dev Returns the current auction house configuration parameters * @dev Returns the current auction house configuration parameters */ function getConfig() external view returns (AuctionConfig memory) { return AuctionConfig( treasury, address(token), address(glmr), duration, extendedDuration, minFirstBid, minBidIncrementPercent ); } /** * @notice Returns the state of the current auction. * @return AuctionState The state of the current auction. */ function getAuction() external view returns (AuctionState memory) { return AuctionState( tokenId, startTime, endTime, currentBid, bidder, getCurrentMinBid(), bool(block.timestamp > endTime) ); } /** * @notice Returns the minimum bid amount required for the current auction. * @dev Returns the minimum bid amount required for the current auction. * @return uint The minimum bid amount required for the current auction. */ function getCurrentMinBid() private view returns (uint) { if (currentBid == 0) return minFirstBid; return currentBid + ((currentBid * minBidIncrementPercent) / 100); } /** * @notice Place a bid for the current auction. * @dev Place a bid for the current auction. */ function bid() external payable nonReentrant { require(block.timestamp >= startTime, "Auction hasn't started yet"); require(block.timestamp <= endTime, "Auction has ended"); require(msg.value >= getCurrentMinBid(), "Bid amount is too low"); // refund previous bidder if (bidder != address(0)) safeSendEther(payable(bidder), currentBid); // extend auction duration if (block.timestamp + extendedDuration > endTime) endTime = block.timestamp + extendedDuration; bidder = msg.sender; currentBid = msg.value; emit Bid(tokenId, bidder, currentBid); } /** * @notice Ends previous auction and starts a new one. * @dev Ends previous auction and starts a new one. */ function start() external nonReentrant whenNotPaused { require(block.timestamp > endTime, "Auction hasn't ended yet"); // send the token to the latest winner if (bidder != address(0)) token.safeTransferFrom(address(this), bidder, tokenId); // or burn the nft if there's no bidder else if (tokenId > 0) token.burn(tokenId); // send the bid amount to the treasury if (currentBid > 0) safeSendEther(payable(treasury), currentBid); // mint a new token token.mint(); // initialize next auction startTime = block.timestamp; endTime = startTime + duration; currentBid = 0; bidder = address(0); tokenId = token.tokenOfOwnerByIndex(address(this), 0); emit Start(tokenId); } /** * @dev Safely sends Ether to the recipient. * @param _to The recipient of the Ether. * @param _amount The amount of Ether to send. */ function safeSendEther(address payable _to, uint _amount) private { (bool sent, ) = _to.call{value: _amount}(""); // transfer may fail if the recipient is a contract. If so, send GLMR over precompiled ERC20 contract if (!sent) glmr.transfer(_to, _amount); } /** * @dev Required method for a contract to allow receiving an ERC721 token. */ function onERC721Received( address, address, uint256, bytes calldata ) external pure override returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol) 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`. * * 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 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 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 ERC721 * 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 caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) 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.17; import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; interface ICrest is IERC721Enumerable { function mint() external; function mintSpecific(address to, uint96 dna) external; function burn(uint256 tokenId) external; }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 10000 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract ICrest","name":"_token","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"bidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"}],"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Start","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getAuction","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"currentBid","type":"uint256"},{"internalType":"address","name":"bidder","type":"address"},{"internalType":"uint256","name":"minBid","type":"uint256"},{"internalType":"bool","name":"isFinished","type":"bool"}],"internalType":"struct AuctionHouse.AuctionState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getConfig","outputs":[{"components":[{"internalType":"address","name":"treasury","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"glmr","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"extendedDuration","type":"uint256"},{"internalType":"uint256","name":"minFirstBid","type":"uint256"},{"internalType":"uint256","name":"minBidIncrementPercent","type":"uint256"}],"internalType":"struct AuctionHouse.AuctionConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"glmr","outputs":[{"internalType":"contract IERC20","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":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_extendedDuration","type":"uint256"}],"name":"setExtendedDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_glmr","type":"address"}],"name":"setGLMR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBidIncrementPercent","type":"uint256"}],"name":"setMinBidIncrementPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minFirstBid","type":"uint256"}],"name":"setMinFirstBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600380546001600160a01b03191661080217905562015180600555610258600655670de0b6b3a764000060075560016008553480156200004357600080fd5b50604051620015ed380380620015ed83398101604081905262000066916200011d565b6200007133620000b4565b6001805560028054600480546001600160a01b039586166001600160a01b031990911617905591909216610100026001600160a81b03199091161790556200015c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200011a57600080fd5b50565b600080604083850312156200013157600080fd5b82516200013e8162000104565b6020840151909250620001518162000104565b809150509250929050565b611481806200016c6000396000f3fe6080604052600436106101445760003560e01c80638456cb59116100c0578063c3f909d411610074578063f0f4426011610059578063f0f442601461047e578063f2fde38b1461049e578063f6be71d1146104be57600080fd5b8063c3f909d4146103d7578063e0f0815c1461045e57600080fd5b80638da5cb5b116100a55780638da5cb5b14610377578063b535ef80146103a2578063be9a6555146103c257600080fd5b80638456cb59146103425780638b0587151461035757600080fd5b80633f4ba83a1161011757806361d027b3116100fc57806361d027b314610278578063715018a6146102aa5780637327df25146102bf57600080fd5b80633f4ba83a146102405780635c975abb1461025557600080fd5b806312d8e41b14610149578063150b7a02146101a05780631998aeef146102165780633d44ce3214610220575b600080fd5b34801561015557600080fd5b506003546101769073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101ac57600080fd5b506101e56101bb36600461129a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610197565b61021e6104de565b005b34801561022c57600080fd5b5061021e61023b366004611339565b610721565b34801561024c57600080fd5b5061021e61072e565b34801561026157600080fd5b5060025460ff166040519015158152602001610197565b34801561028457600080fd5b5060025461017690610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b657600080fd5b5061021e61073e565b3480156102cb57600080fd5b506102d4610750565b6040516101979190600060e0820190508251825260208301516020830152604083015160408301526060830151606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015260a083015160a083015260c0830151151560c083015292915050565b34801561034e57600080fd5b5061021e61080d565b34801561036357600080fd5b5061021e610372366004611352565b61081d565b34801561038357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610176565b3480156103ae57600080fd5b5061021e6103bd366004611339565b61086c565b3480156103ce57600080fd5b5061021e610879565b3480156103e357600080fd5b506103ec610c05565b6040516101979190600060e08201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b34801561046a57600080fd5b5061021e610479366004611339565b610cec565b34801561048a57600080fd5b5061021e610499366004611352565b610cf9565b3480156104aa57600080fd5b5061021e6104b9366004611352565b610d4d565b3480156104ca57600080fd5b5061021e6104d9366004611339565b610e04565b6104e6610e11565b600954421015610557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41756374696f6e206861736e277420737461727465642079657400000000000060448201526064015b60405180910390fd5b600a544211156105c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f41756374696f6e2068617320656e646564000000000000000000000000000000604482015260640161054e565b6105cb610e84565b341015610634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f42696420616d6f756e7420697320746f6f206c6f770000000000000000000000604482015260640161054e565b600d5473ffffffffffffffffffffffffffffffffffffffff161561067857600d54600b546106789173ffffffffffffffffffffffffffffffffffffffff1690610ec5565b600a5460065461068890426113a5565b111561069f5760065461069b90426113a5565b600a555b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915534600b819055600c54604080519182526020820193909352918201527fdcd726e11f8b5e160f00290f0fe3a1abb547474e53a8e7a8f49a85e7b1ca3199906060015b60405180910390a161071f60018055565b565b610729610fd1565b600755565b610736610fd1565b61071f611052565b610746610fd1565b61071f60006110cf565b6107a86040518060e0016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b6040805160e081018252600c5481526009546020820152600a5491810191909152600b546060820152600d5473ffffffffffffffffffffffffffffffffffffffff16608082015260a081016107fb610e84565b8152600a544211602090910152919050565b610815610fd1565b61071f611144565b610825610fd1565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610874610fd1565b600655565b610881610e11565b61088961119f565b600a5442116108f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41756374696f6e206861736e277420656e646564207965740000000000000000604482015260640161054e565b600d5473ffffffffffffffffffffffffffffffffffffffff16156109ae5760048054600d54600c546040517f42842e0e000000000000000000000000000000000000000000000000000000008152309481019490945273ffffffffffffffffffffffffffffffffffffffff9182166024850152604484015216906342842e0e90606401600060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b50505050610a3a565b600c5415610a3a5760048054600c546040517f42966c680000000000000000000000000000000000000000000000000000000081529283015273ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b158015610a2157600080fd5b505af1158015610a35573d6000803e3d6000fd5b505050505b600b5415610a6d57600254600b54610a6d91610100900473ffffffffffffffffffffffffffffffffffffffff1690610ec5565b60048054604080517f1249c58b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692631249c58b92828201926000929082900301818387803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b5050426009819055600554610b01935091506113a5565b600a556000600b819055600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480546040517f2f745c590000000000000000000000000000000000000000000000000000000081523092810192909252602482019290925273ffffffffffffffffffffffffffffffffffffffff90911690632f745c5990604401602060405180830381865afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd091906113be565b600c8190556040519081527ff06a29c94c6f4edc1085072972d9441f7603e81c8535a308f214285d0653c8509060200161070e565b610c876040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b506040805160e08101825260025473ffffffffffffffffffffffffffffffffffffffff610100909104811682526004548116602083015260035416918101919091526005546060820152600654608082015260075460a082015260085460c082015290565b610cf4610fd1565b600855565b610d01610fd1565b6002805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610d55610fd1565b73ffffffffffffffffffffffffffffffffffffffff8116610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161054e565b610e01816110cf565b50565b610e0c610fd1565b600555565b600260015403610e7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161054e565b6002600155565b6000600b54600003610e97575060075490565b6064600854600b54610ea991906113d7565b610eb391906113ee565b600b54610ec091906113a5565b905090565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5050905080610fcc576003546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190611429565b505b505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161054e565b61105a61120c565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61114c61119f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110a53390565b60025460ff161561071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161054e565b60025460ff1661071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161054e565b73ffffffffffffffffffffffffffffffffffffffff81168114610e0157600080fd5b6000806000806000608086880312156112b257600080fd5b85356112bd81611278565b945060208601356112cd81611278565b935060408601359250606086013567ffffffffffffffff808211156112f157600080fd5b818801915088601f83011261130557600080fd5b81358181111561131457600080fd5b89602082850101111561132657600080fd5b9699959850939650602001949392505050565b60006020828403121561134b57600080fd5b5035919050565b60006020828403121561136457600080fd5b813561136f81611278565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156113b8576113b8611376565b92915050565b6000602082840312156113d057600080fd5b5051919050565b80820281158282048414176113b8576113b8611376565b600082611424577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561143b57600080fd5b8151801515811461136f57600080fdfea2646970667358221220f42e863b46c0972fb9e01200f77aae4d54a24d1ab7d44874006c0c380e14a65a64736f6c634300081100330000000000000000000000008417f77904a86436223942a516f00f8adf933b700000000000000000000000006bdfdc29a4bd39bf97d4c75c7f03b9dcbb9374af
Deployed Bytecode
0x6080604052600436106101445760003560e01c80638456cb59116100c0578063c3f909d411610074578063f0f4426011610059578063f0f442601461047e578063f2fde38b1461049e578063f6be71d1146104be57600080fd5b8063c3f909d4146103d7578063e0f0815c1461045e57600080fd5b80638da5cb5b116100a55780638da5cb5b14610377578063b535ef80146103a2578063be9a6555146103c257600080fd5b80638456cb59146103425780638b0587151461035757600080fd5b80633f4ba83a1161011757806361d027b3116100fc57806361d027b314610278578063715018a6146102aa5780637327df25146102bf57600080fd5b80633f4ba83a146102405780635c975abb1461025557600080fd5b806312d8e41b14610149578063150b7a02146101a05780631998aeef146102165780633d44ce3214610220575b600080fd5b34801561015557600080fd5b506003546101769073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101ac57600080fd5b506101e56101bb36600461129a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610197565b61021e6104de565b005b34801561022c57600080fd5b5061021e61023b366004611339565b610721565b34801561024c57600080fd5b5061021e61072e565b34801561026157600080fd5b5060025460ff166040519015158152602001610197565b34801561028457600080fd5b5060025461017690610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b657600080fd5b5061021e61073e565b3480156102cb57600080fd5b506102d4610750565b6040516101979190600060e0820190508251825260208301516020830152604083015160408301526060830151606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015260a083015160a083015260c0830151151560c083015292915050565b34801561034e57600080fd5b5061021e61080d565b34801561036357600080fd5b5061021e610372366004611352565b61081d565b34801561038357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610176565b3480156103ae57600080fd5b5061021e6103bd366004611339565b61086c565b3480156103ce57600080fd5b5061021e610879565b3480156103e357600080fd5b506103ec610c05565b6040516101979190600060e08201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b34801561046a57600080fd5b5061021e610479366004611339565b610cec565b34801561048a57600080fd5b5061021e610499366004611352565b610cf9565b3480156104aa57600080fd5b5061021e6104b9366004611352565b610d4d565b3480156104ca57600080fd5b5061021e6104d9366004611339565b610e04565b6104e6610e11565b600954421015610557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41756374696f6e206861736e277420737461727465642079657400000000000060448201526064015b60405180910390fd5b600a544211156105c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f41756374696f6e2068617320656e646564000000000000000000000000000000604482015260640161054e565b6105cb610e84565b341015610634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f42696420616d6f756e7420697320746f6f206c6f770000000000000000000000604482015260640161054e565b600d5473ffffffffffffffffffffffffffffffffffffffff161561067857600d54600b546106789173ffffffffffffffffffffffffffffffffffffffff1690610ec5565b600a5460065461068890426113a5565b111561069f5760065461069b90426113a5565b600a555b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163390811790915534600b819055600c54604080519182526020820193909352918201527fdcd726e11f8b5e160f00290f0fe3a1abb547474e53a8e7a8f49a85e7b1ca3199906060015b60405180910390a161071f60018055565b565b610729610fd1565b600755565b610736610fd1565b61071f611052565b610746610fd1565b61071f60006110cf565b6107a86040518060e0016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b6040805160e081018252600c5481526009546020820152600a5491810191909152600b546060820152600d5473ffffffffffffffffffffffffffffffffffffffff16608082015260a081016107fb610e84565b8152600a544211602090910152919050565b610815610fd1565b61071f611144565b610825610fd1565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610874610fd1565b600655565b610881610e11565b61088961119f565b600a5442116108f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41756374696f6e206861736e277420656e646564207965740000000000000000604482015260640161054e565b600d5473ffffffffffffffffffffffffffffffffffffffff16156109ae5760048054600d54600c546040517f42842e0e000000000000000000000000000000000000000000000000000000008152309481019490945273ffffffffffffffffffffffffffffffffffffffff9182166024850152604484015216906342842e0e90606401600060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b50505050610a3a565b600c5415610a3a5760048054600c546040517f42966c680000000000000000000000000000000000000000000000000000000081529283015273ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b158015610a2157600080fd5b505af1158015610a35573d6000803e3d6000fd5b505050505b600b5415610a6d57600254600b54610a6d91610100900473ffffffffffffffffffffffffffffffffffffffff1690610ec5565b60048054604080517f1249c58b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692631249c58b92828201926000929082900301818387803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b5050426009819055600554610b01935091506113a5565b600a556000600b819055600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480546040517f2f745c590000000000000000000000000000000000000000000000000000000081523092810192909252602482019290925273ffffffffffffffffffffffffffffffffffffffff90911690632f745c5990604401602060405180830381865afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd091906113be565b600c8190556040519081527ff06a29c94c6f4edc1085072972d9441f7603e81c8535a308f214285d0653c8509060200161070e565b610c876040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b506040805160e08101825260025473ffffffffffffffffffffffffffffffffffffffff610100909104811682526004548116602083015260035416918101919091526005546060820152600654608082015260075460a082015260085460c082015290565b610cf4610fd1565b600855565b610d01610fd1565b6002805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610d55610fd1565b73ffffffffffffffffffffffffffffffffffffffff8116610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161054e565b610e01816110cf565b50565b610e0c610fd1565b600555565b600260015403610e7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161054e565b6002600155565b6000600b54600003610e97575060075490565b6064600854600b54610ea991906113d7565b610eb391906113ee565b600b54610ec091906113a5565b905090565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5050905080610fcc576003546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190611429565b505b505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161054e565b61105a61120c565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61114c61119f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110a53390565b60025460ff161561071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161054e565b60025460ff1661071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161054e565b73ffffffffffffffffffffffffffffffffffffffff81168114610e0157600080fd5b6000806000806000608086880312156112b257600080fd5b85356112bd81611278565b945060208601356112cd81611278565b935060408601359250606086013567ffffffffffffffff808211156112f157600080fd5b818801915088601f83011261130557600080fd5b81358181111561131457600080fd5b89602082850101111561132657600080fd5b9699959850939650602001949392505050565b60006020828403121561134b57600080fd5b5035919050565b60006020828403121561136457600080fd5b813561136f81611278565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156113b8576113b8611376565b92915050565b6000602082840312156113d057600080fd5b5051919050565b80820281158282048414176113b8576113b8611376565b600082611424577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561143b57600080fd5b8151801515811461136f57600080fdfea2646970667358221220f42e863b46c0972fb9e01200f77aae4d54a24d1ab7d44874006c0c380e14a65a64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008417f77904a86436223942a516f00f8adf933b700000000000000000000000006bdfdc29a4bd39bf97d4c75c7f03b9dcbb9374af
-----Decoded View---------------
Arg [0] : _token (address): 0x8417F77904a86436223942a516f00F8aDF933B70
Arg [1] : _treasury (address): 0x6bdFDC29A4bd39Bf97D4C75c7f03b9dcbb9374af
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008417f77904a86436223942a516f00f8adf933b70
Arg [1] : 0000000000000000000000006bdfdc29a4bd39bf97d4c75c7f03b9dcbb9374af
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.