Source Code
Overview
HYPE Balance
HYPE Value
$0.00Latest 25 from a total of 48 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| List NFT | 25436002 | 7 hrs ago | IN | 0 HYPE | 0.00007741 | ||||
| Remove Listing | 24540981 | 10 days ago | IN | 0 HYPE | 0.00000546 | ||||
| List NFT | 24540794 | 10 days ago | IN | 0 HYPE | 0.00002255 | ||||
| Buy NFT | 23142606 | 26 days ago | IN | 0 HYPE | 0.00008925 | ||||
| Buy NFT | 23142406 | 26 days ago | IN | 0 HYPE | 0.00032248 | ||||
| Buy NFT | 23142282 | 26 days ago | IN | 0 HYPE | 0.0002934 | ||||
| List NFT | 23141999 | 26 days ago | IN | 0 HYPE | 0.00013524 | ||||
| List NFT | 23141926 | 26 days ago | IN | 0 HYPE | 0.00058609 | ||||
| List NFT | 23141885 | 26 days ago | IN | 0 HYPE | 0.00024011 | ||||
| List NFT | 23087285 | 27 days ago | IN | 0 HYPE | 0.00006311 | ||||
| List NFT | 23087262 | 27 days ago | IN | 0 HYPE | 0.00008096 | ||||
| Buy NFT | 23087117 | 27 days ago | IN | 0 HYPE | 0.00031666 | ||||
| List NFT | 23086669 | 27 days ago | IN | 0 HYPE | 0.00032093 | ||||
| Buy NFT | 23085346 | 27 days ago | IN | 0 HYPE | 0.00022134 | ||||
| List NFT | 23084787 | 27 days ago | IN | 0 HYPE | 0.0002203 | ||||
| List NFT | 23083384 | 27 days ago | IN | 0 HYPE | 0.00008246 | ||||
| Buy NFT | 23082545 | 27 days ago | IN | 0 HYPE | 0.00023038 | ||||
| List NFT | 23081488 | 27 days ago | IN | 0 HYPE | 0.00031217 | ||||
| List NFT | 23079305 | 27 days ago | IN | 0 HYPE | 0.00013426 | ||||
| List NFT | 22895886 | 29 days ago | IN | 0 HYPE | 0.00029493 | ||||
| List NFT | 22894989 | 29 days ago | IN | 0 HYPE | 0.00030939 | ||||
| List NFT | 22862910 | 29 days ago | IN | 0 HYPE | 0.00016184 | ||||
| List NFT | 22862636 | 29 days ago | IN | 0 HYPE | 0.00011148 | ||||
| Remove Listing | 22862583 | 29 days ago | IN | 0 HYPE | 0.0000302 | ||||
| Remove Listing | 22862575 | 29 days ago | IN | 0 HYPE | 0.0000302 |
Latest 8 internal transactions
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 22633350 | 32 days ago | 0.0300038 HYPE | ||||
| 22633350 | 32 days ago | 0.00045691 HYPE | ||||
| 22148293 | 37 days ago | 0.03387957 HYPE | ||||
| 22148293 | 37 days ago | 0.00051593 HYPE | ||||
| 22148206 | 37 days ago | 0.05277891 HYPE | ||||
| 22148206 | 37 days ago | 0.00080373 HYPE | ||||
| 22055419 | 38 days ago | 0.04555991 HYPE | ||||
| 22055419 | 38 days ago | 0.0006938 HYPE |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
VeMarket
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import { INftMarket } from "./interfaces/INftMarket.sol";
import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { ReentrancyGuard } from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
contract VeMarket is INftMarket, ReentrancyGuard, Ownable {
/// @notice Current version of the contract
string public constant VERSION = "1.1";
/// @notice Precision for fee calculations (1 ether = 100%)
uint256 public constant BASIS_PRECISION = 1 ether;
/// @notice Address that receives marketplace fees
address public feeRecipient;
/// @notice Default fee percentage applied to all NFT sales unless overridden
uint256 public defaultFee;
/// @notice Custom fee percentages for specific NFT contracts
mapping(address => uint256) public nftFees;
/// @notice Array of all NFT listings
INftMarket.NftListing[] private _listings;
/// @notice Whitelist addresses for each listing
mapping(uint256 => address[]) public whitelists;
/// @notice Initialize the marketplace with default fee and fee recipient
/// @param _defaultFee The default fee percentage (in BASIS_PRECISION)
/// @param _feeRecipient The address to receive marketplace fees
constructor(uint256 _defaultFee, address _feeRecipient) Ownable() {
require(_defaultFee <= BASIS_PRECISION, "Fee too high");
require(_feeRecipient != address(0), "Zero address");
defaultFee = _defaultFee;
feeRecipient = _feeRecipient;
}
/*//////////////////////////////////////////////////////////////
VIEW FUNCTIONS
//////////////////////////////////////////////////////////////*/
/// @notice Returns the total number of NFT listings in the marketplace
/// @return The number of listings
function getListingLength() external view returns (uint256) {
return _listings.length;
}
/// @notice Retrieves detailed information about a listing by its index
/// @param _index The index of the listing to query
/// @return nft The NFT contract address
/// @return seller The address of the seller
/// @return buyer The address of the buyer (0x0 if not sold)
/// @return tokenId The token ID of the NFT
/// @return fundingToken The token used for payment (0x0 for ETH)
/// @return price The price of the NFT
/// @return fee The fee percentage stored at listing time
/// @return startDate The start date of the listing
/// @return endDate The end date of the listing
/// @return saleDate The date when the NFT was sold
function getListingByIndex(uint256 _index)
external
view
returns (address, address, address, uint256, address, uint256, uint256, uint256, uint256, uint256)
{
INftMarket.NftListing memory L = _listings[_index];
return (L.nft, L.seller, L.buyer, L.tokenId, L.fundingToken, L.price, L.fee, L.startDate, L.endDate, L.saleDate);
}
/*//////////////////////////////////////////////////////////////
MARKET FUNCTIONS
//////////////////////////////////////////////////////////////*/
/// @notice Creates a new NFT listing in the marketplace
/// @param _nft The address of the NFT contract
/// @param _tokenId The token ID of the NFT to list
/// @param _fundingToken The token to accept as payment (0x0 for ETH)
/// @param _price The price of the NFT
/// @param _whitelist Array of addresses allowed to buy (empty for public sale)
/// @param _startDate The timestamp when the listing becomes active (0 for immediate)
/// @param _endDate The timestamp when the listing expires (0 for no expiry)
function listNFT(
address _nft,
uint256 _tokenId,
address _fundingToken,
uint256 _price,
address[] calldata _whitelist,
uint256 _startDate,
uint256 _endDate
) external {
require(_price > 0, "PRICE");
require(IERC721(_nft).ownerOf(_tokenId) == msg.sender, "OWNER");
require(
IERC721(_nft).getApproved(_tokenId) == address(this)
|| IERC721(_nft).isApprovedForAll(msg.sender, address(this)),
"APPROVAL"
);
// Validate funding token if not native ETH
if (_fundingToken != address(0)) {
try IERC20(_fundingToken).totalSupply() returns (uint256) {
// Valid ERC20 interface
} catch {
revert("Invalid ERC20");
}
}
// Validate and adjust dates for usability
uint256 adjustedStartDate = _startDate;
if (_startDate < block.timestamp) {
adjustedStartDate = block.timestamp;
}
if (_endDate != 0) {
require(_endDate > block.timestamp, "End date must be in future");
require(_endDate > adjustedStartDate, "End date must be after start date");
}
// Get the fee rate for this NFT (custom fee or default)
uint256 currentFee = nftFees[_nft] > 0 ? nftFees[_nft] : defaultFee;
INftMarket.NftListing memory L = INftMarket.NftListing({
nft: _nft,
seller: msg.sender,
buyer: address(0),
tokenId: _tokenId,
fundingToken: _fundingToken,
price: _price,
fee: currentFee,
startDate: adjustedStartDate,
endDate: _endDate,
saleDate: 0
});
_listings.push(L);
uint256 id = _listings.length - 1;
if (_whitelist.length > 0) whitelists[id] = _whitelist;
emit NftListed(msg.sender, _nft, _tokenId, _fundingToken, _price, _whitelist, _startDate, _endDate, id);
}
/// @notice Purchase an NFT listing
/// @param _index The index of the listing to purchase
/// @dev For ETH purchases, msg.value must match the listing price
function buyNFT(uint256 _index) external payable nonReentrant {
INftMarket.NftListing memory L = _listings[_index];
require(L.seller != address(0), "NO_LISTING");
require(L.buyer == address(0), "SOLD");
if (L.startDate != 0) require(block.timestamp >= L.startDate, "NOT_STARTED");
if (L.endDate != 0) require(block.timestamp <= L.endDate, "EXPIRED");
if (whitelists[_index].length > 0) {
bool ok;
for (uint256 i; i < whitelists[_index].length; i++) {
if (whitelists[_index][i] == msg.sender) {
ok = true;
break;
}
}
require(ok, "NOT_WHITELISTED");
}
_listings[_index].buyer = msg.sender;
_listings[_index].saleDate = block.timestamp;
uint256 feeAmount = (L.price * L.fee) / BASIS_PRECISION;
uint256 sellerAmt = L.price - feeAmount;
if (L.fundingToken == address(0)) {
require(msg.value == L.price, "BAD_VALUE");
(bool ok1,) = payable(feeRecipient).call{ value: feeAmount }("");
require(ok1, "FEE");
(bool ok2,) = payable(L.seller).call{ value: sellerAmt }("");
require(ok2, "PAY");
} else {
IERC20 t = IERC20(L.fundingToken);
require(t.transferFrom(msg.sender, feeRecipient, feeAmount), "FEE_ERC20");
require(t.transferFrom(msg.sender, L.seller, sellerAmt), "PAY_ERC20");
}
IERC721(L.nft).safeTransferFrom(L.seller, msg.sender, L.tokenId);
emit NftSold(_index);
}
/// @notice Remove a listing from the marketplace
/// @param _id The index of the listing to remove
/// @dev Only the seller can remove their listing, and only if it hasn't been sold
function removeListing(uint256 _id) external {
INftMarket.NftListing memory L = _listings[_id];
require(L.seller == msg.sender, "OWNER");
require(L.buyer == address(0), "ALREADY_SOLD");
delete _listings[_id];
emit NftListingRemoved(_id);
}
/*//////////////////////////////////////////////////////////////
OWNER FUNCTIONS
//////////////////////////////////////////////////////////////*/
/// @notice Set the default fee for all NFTs (in BASIS_PRECISION)
function setDefaultFee(uint256 _fee) external onlyOwner {
require(_fee <= BASIS_PRECISION, "Fee too high");
emit DefaultFeeUpdated(defaultFee, _fee);
defaultFee = _fee;
}
/// @notice Set a custom fee for a specific NFT contract (in BASIS_PRECISION)
function setNFTFee(address _nft, uint256 _fee) external onlyOwner {
require(_fee <= BASIS_PRECISION, "Fee too high");
emit NFTFeeUpdated(_nft, nftFees[_nft], _fee);
nftFees[_nft] = _fee;
}
/// @notice Set the fee recipient address
function setFeeRecipient(address _newRecipient) external onlyOwner {
require(_newRecipient != address(0), "Zero address");
emit FeeRecipientUpdated(feeRecipient, _newRecipient);
feeRecipient = _newRecipient;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.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. 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 {
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.9.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;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.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.9.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.9.4) (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;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// 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.19;
interface INftMarket {
struct NftListing {
address nft;
address seller;
address buyer;
uint256 tokenId;
address fundingToken; // address(0) = native
uint256 price;
uint256 fee;
uint256 startDate;
uint256 endDate;
uint256 saleDate;
}
event DefaultFeeUpdated(uint256 oldFee, uint256 newFee);
event NFTFeeUpdated(address indexed nft, uint256 oldFee, uint256 newFee);
event FeeRecipientUpdated(address indexed oldRecipient, address indexed newRecipient);
event NftListed(
address indexed seller,
address indexed nft,
uint256 tokenId,
address fundingToken,
uint256 price,
address[] whitelist,
uint256 startDate,
uint256 endDate,
uint256 listingID
);
event NftSold(uint256 listingID);
event NftListingRemoved(uint256 indexed listingID);
function listNFT(
address _nft,
uint256 _tokenId,
address _fundingToken,
uint256 _price,
address[] calldata _whitelist,
uint256 _startDate,
uint256 _endDate
) external;
function buyNFT(uint256 _listingID) external payable;
function removeListing(uint256 _listingID) external;
function getListingLength() external view returns (uint256);
function getListingByIndex(uint256 _index)
external
view
returns (
address nft,
address seller,
address buyer,
uint256 tokenId,
address fundingToken,
uint256 price,
uint256 fee,
uint256 startDate,
uint256 endDate,
uint256 saleDate
);
}{
"optimizer": {
"enabled": true,
"runs": 1000
},
"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":"uint256","name":"_defaultFee","type":"uint256"},{"internalType":"address","name":"_feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"DefaultFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"newRecipient","type":"address"}],"name":"FeeRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nft","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"NFTFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"nft","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"fundingToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"whitelist","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"startDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"listingID","type":"uint256"}],"name":"NftListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingID","type":"uint256"}],"name":"NftListingRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"listingID","type":"uint256"}],"name":"NftSold","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"},{"inputs":[],"name":"BASIS_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"buyNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"defaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getListingByIndex","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getListingLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nft","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_fundingToken","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"address[]","name":"_whitelist","type":"address[]"},{"internalType":"uint256","name":"_startDate","type":"uint256"},{"internalType":"uint256","name":"_endDate","type":"uint256"}],"name":"listNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nftFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"removeListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setDefaultFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRecipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nft","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setNFTFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelists","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162001f6838038062001f68833981016040819052620000349162000155565b6001600055620000443362000103565b670de0b6b3a7640000821115620000915760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064015b60405180910390fd5b6001600160a01b038116620000d85760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640162000088565b600391909155600280546001600160a01b0319166001600160a01b0390921691909117905562000194565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080604083850312156200016957600080fd5b825160208401519092506001600160a01b03811681146200018957600080fd5b809150509250929050565b611dc480620001a46000396000f3fe60806040526004361061010e5760003560e01c8063715018a6116100a5578063c93a6c8411610074578063e74b981b11610059578063e74b981b14610337578063f2fde38b14610357578063ffa1ad741461037757600080fd5b8063c93a6c84146102f7578063dc707bf11461031757600080fd5b8063715018a6146102165780638da5cb5b1461022b578063b82eb9f814610249578063c2ca7175146102ca57600080fd5b806349edd0c7116100e157806349edd0c7146101b157806351ed8288146101cd5780635a6c72d0146101e057806362819a5f146101f657600080fd5b8063394e197c146101135780633d1ea47f14610137578063469048401461016f578063479ad4c31461018f575b600080fd5b34801561011f57600080fd5b506005545b6040519081526020015b60405180910390f35b34801561014357600080fd5b50610157610152366004611a6f565b6103cd565b6040516001600160a01b03909116815260200161012e565b34801561017b57600080fd5b50600254610157906001600160a01b031681565b34801561019b57600080fd5b506101af6101aa366004611a91565b610405565b005b3480156101bd57600080fd5b50610124670de0b6b3a764000081565b6101af6101db366004611a91565b6105ea565b3480156101ec57600080fd5b5061012460035481565b34801561020257600080fd5b506101af610211366004611abf565b610db2565b34801561022257600080fd5b506101af610e70565b34801561023757600080fd5b506001546001600160a01b0316610157565b34801561025557600080fd5b50610269610264366004611a91565b610e84565b604080516001600160a01b039b8c168152998b1660208b0152978a1697890197909752606088019590955296909216608086015260a085015260c084015260e08301939093526101008201929092526101208101919091526101400161012e565b3480156102d657600080fd5b506101246102e5366004611aeb565b60046020526000908152604090205481565b34801561030357600080fd5b506101af610312366004611a91565b611012565b34801561032357600080fd5b506101af610332366004611b0f565b6110a2565b34801561034357600080fd5b506101af610352366004611aeb565b6117ab565b34801561036357600080fd5b506101af610372366004611aeb565b611865565b34801561038357600080fd5b506103c06040518060400160405280600381526020017f312e31000000000000000000000000000000000000000000000000000000000081525081565b60405161012e9190611bce565b600660205281600052604060002081815481106103e957600080fd5b6000918252602090912001546001600160a01b03169150829050565b60006005828154811061041a5761041a611c1c565b60009182526020918290206040805161014081018252600a90930290910180546001600160a01b0390811684526001820154811694840185905260028201548116928401929092526003810154606084015260048101549091166080830152600581015460a0830152600681015460c0830152600781015460e0830152600881015461010083015260090154610120820152915033146104e95760405162461bcd60e51b815260206004820152600560248201526427aba722a960d91b60448201526064015b60405180910390fd5b60408101516001600160a01b0316156105445760405162461bcd60e51b815260206004820152600c60248201527f414c52454144595f534f4c44000000000000000000000000000000000000000060448201526064016104e0565b6005828154811061055757610557611c1c565b600091825260208220600a9091020180546001600160a01b0319908116825560018201805482169055600282018054821690556003820183905560048201805490911690556005810182905560068101829055600781018290556008810182905560090181905560405183917ffcba8a55f3e7a5d5b3c54a2e8632a02fa5f0e04404f69d3cc14d9577b01a532e91a25050565b6105f26118f2565b60006005828154811061060757610607611c1c565b60009182526020918290206040805161014081018252600a90930290910180546001600160a01b0390811684526001820154811694840185905260028201548116928401929092526003810154606084015260048101549091166080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009015461012082015291506106e75760405162461bcd60e51b815260206004820152600a60248201527f4e4f5f4c495354494e470000000000000000000000000000000000000000000060448201526064016104e0565b60408101516001600160a01b0316156107445760405162461bcd60e51b81526004016104e09060208082526004908201527f534f4c4400000000000000000000000000000000000000000000000000000000604082015260600190565b60e0810151156107a2578060e001514210156107a25760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016104e0565b61010081015115610802578061010001514211156108025760405162461bcd60e51b815260206004820152600760248201527f455850495245440000000000000000000000000000000000000000000000000060448201526064016104e0565b600082815260066020526040902054156108d8576000805b60008481526006602052604090205481101561088857600084815260066020526040902080543391908390811061085357610853611c1c565b6000918252602090912001546001600160a01b0316036108765760019150610888565b8061088081611c48565b91505061081a565b50806108d65760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f57484954454c4953544544000000000000000000000000000000000060448201526064016104e0565b505b33600583815481106108ec576108ec611c1c565b90600052602060002090600a020160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550426005838154811061093557610935611c1c565b90600052602060002090600a0201600901819055506000670de0b6b3a76400008260c001518360a001516109699190611c61565b6109739190611c7e565b90506000818360a001516109879190611ca0565b60808401519091506001600160a01b0316610b40578260a0015134146109ef5760405162461bcd60e51b815260206004820152600960248201527f4241445f56414c5545000000000000000000000000000000000000000000000060448201526064016104e0565b6002546040516000916001600160a01b03169084908381818185875af1925050503d8060008114610a3c576040519150601f19603f3d011682016040523d82523d6000602084013e610a41565b606091505b5050905080610a925760405162461bcd60e51b815260206004820152600360248201527f464545000000000000000000000000000000000000000000000000000000000060448201526064016104e0565b600084602001516001600160a01b03168360405160006040518083038185875af1925050503d8060008114610ae3576040519150601f19603f3d011682016040523d82523d6000602084013e610ae8565b606091505b5050905080610b395760405162461bcd60e51b815260206004820152600360248201527f504159000000000000000000000000000000000000000000000000000000000060448201526064016104e0565b5050610cdb565b60808301516002546040516323b872dd60e01b81523360048201526001600160a01b03918216602482015260448101859052908216906323b872dd906064016020604051808303816000875af1158015610b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc29190611cb3565b610c0e5760405162461bcd60e51b815260206004820152600960248201527f4645455f4552433230000000000000000000000000000000000000000000000060448201526064016104e0565b60208401516040516323b872dd60e01b81523360048201526001600160a01b03918216602482015260448101849052908216906323b872dd906064016020604051808303816000875af1158015610c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8d9190611cb3565b610cd95760405162461bcd60e51b815260206004820152600960248201527f5041595f4552433230000000000000000000000000000000000000000000000060448201526064016104e0565b505b8251602084015160608501516040517f42842e0e0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015233602482015260448101919091529116906342842e0e90606401600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b505050507f7de4fc5f40665d07bb617583443d17e37be07c379b26aaeef4e6dd18ab4da05a84604051610d9a91815260200190565b60405180910390a1505050610daf6001600055565b50565b610dba61194b565b670de0b6b3a7640000811115610e015760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104e0565b6001600160a01b0382166000818152600460209081526040918290205482519081529081018490527f7131684b13f4d0a7e839a858772b68c695510d58798266c4e5129fc218f5d33e910160405180910390a26001600160a01b03909116600090815260046020526040902055565b610e7861194b565b610e8260006119a5565b565b600080600080600080600080600080600060058c81548110610ea857610ea8611c1c565b90600052602060002090600a0201604051806101400160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600382015481526020016004820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e001518861010001518961012001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b61101a61194b565b670de0b6b3a76400008111156110615760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104e0565b60035460408051918252602082018390527fac1f58cd233fc224bd53b979e04547b08f9e5da37a3fa94f2afa216dfba59230910160405180910390a1600355565b600085116110f25760405162461bcd60e51b815260206004820152600560248201527f505249434500000000000000000000000000000000000000000000000000000060448201526064016104e0565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810188905233906001600160a01b038a1690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190611cd5565b6001600160a01b0316146111b45760405162461bcd60e51b815260206004820152600560248201526427aba722a960d91b60448201526064016104e0565b6040517f081812fc0000000000000000000000000000000000000000000000000000000081526004810188905230906001600160a01b038a169063081812fc90602401602060405180830381865afa158015611214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112389190611cd5565b6001600160a01b031614806112cf57506040517fe985e9c50000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160a01b0389169063e985e9c590604401602060405180830381865afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190611cb3565b61131b5760405162461bcd60e51b815260206004820152600860248201527f415050524f56414c00000000000000000000000000000000000000000000000060448201526064016104e0565b6001600160a01b038616156113d257856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611384575060408051601f3d908101601f1916820190925261138191810190611cf2565b60015b6113d05760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642045524332300000000000000000000000000000000000000060448201526064016104e0565b505b81428110156113de5750425b81156114a8574282116114335760405162461bcd60e51b815260206004820152601a60248201527f456e642064617465206d75737420626520696e2066757475726500000000000060448201526064016104e0565b8082116114a85760405162461bcd60e51b815260206004820152602160248201527f456e642064617465206d7573742062652061667465722073746172742064617460448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104e0565b6001600160a01b0389166000908152600460205260408120546114cd576003546114e7565b6001600160a01b038a166000908152600460205260409020545b60408051610140810182526001600160a01b03808e16825233602083019081526000938301848152606084018f81528e84166080860190815260a086018f815260c0870189815260e088018c815261010089018e81526101208a018b81526005805460018181018355828f528d51600a9092027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018054938f166001600160a01b03199485161790559b517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db18d018054918f1691841691909117905599517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db28c018054918e1691831691909117905597517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db38b015595517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db48a01805491909b1697169690961790985591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db5870155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db6860155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db785015593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db8840155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db990920191909155905493945090926117219190611ca0565b905086156117445760008181526006602052604090206117429089896119f7565b505b8b6001600160a01b0316336001600160a01b03167fb64565723ead64908bf659fd7f5c4940852a086c6376f2697244e815b2046d7c8d8d8d8d8d8d8d8a604051611795989796959493929190611d0b565b60405180910390a3505050505050505050505050565b6117b361194b565b6001600160a01b0381166118095760405162461bcd60e51b815260206004820152600c60248201527f5a65726f2061646472657373000000000000000000000000000000000000000060448201526064016104e0565b6002546040516001600160a01b038084169216907faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d390600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b61186d61194b565b6001600160a01b0381166118e95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104e0565b610daf816119a5565b6002600054036119445760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104e0565b6002600055565b6001546001600160a01b03163314610e825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e0565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215611a4a579160200282015b82811115611a4a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611a17565b50611a56929150611a5a565b5090565b5b80821115611a565760008155600101611a5b565b60008060408385031215611a8257600080fd5b50508035926020909101359150565b600060208284031215611aa357600080fd5b5035919050565b6001600160a01b0381168114610daf57600080fd5b60008060408385031215611ad257600080fd5b8235611add81611aaa565b946020939093013593505050565b600060208284031215611afd57600080fd5b8135611b0881611aaa565b9392505050565b60008060008060008060008060e0898b031215611b2b57600080fd5b8835611b3681611aaa565b9750602089013596506040890135611b4d81611aaa565b955060608901359450608089013567ffffffffffffffff80821115611b7157600080fd5b818b0191508b601f830112611b8557600080fd5b813581811115611b9457600080fd5b8c60208260051b8501011115611ba957600080fd5b999c989b50969995986020919091019790965060a08601359560c00135945092505050565b600060208083528351808285015260005b81811015611bfb57858101830151858201604001528201611bdf565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c5a57611c5a611c32565b5060010190565b8082028115828204841417611c7857611c78611c32565b92915050565b600082611c9b57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115611c7857611c78611c32565b600060208284031215611cc557600080fd5b81518015158114611b0857600080fd5b600060208284031215611ce757600080fd5b8151611b0881611aaa565b600060208284031215611d0457600080fd5b5051919050565b600060e082018a835260206001600160a01b03808c16828601528a604086015260e0606086015282898452610100860190508a935060005b8a811015611d6a578435611d5681611aaa565b831682529383019390830190600101611d43565b5060808601989098525050505060a081019290925260c0909101529594505050505056fea2646970667358221220346064321778a784b6f89d32a97d8e4d9514acfb231f22d74759035b7e6f86ae64736f6c634300081300330000000000000000000000000000000000000000000000000058d15e17628000000000000000000000000000bae7c88f01eaa273e8834af38cacab2910ed9b93
Deployed Bytecode
0x60806040526004361061010e5760003560e01c8063715018a6116100a5578063c93a6c8411610074578063e74b981b11610059578063e74b981b14610337578063f2fde38b14610357578063ffa1ad741461037757600080fd5b8063c93a6c84146102f7578063dc707bf11461031757600080fd5b8063715018a6146102165780638da5cb5b1461022b578063b82eb9f814610249578063c2ca7175146102ca57600080fd5b806349edd0c7116100e157806349edd0c7146101b157806351ed8288146101cd5780635a6c72d0146101e057806362819a5f146101f657600080fd5b8063394e197c146101135780633d1ea47f14610137578063469048401461016f578063479ad4c31461018f575b600080fd5b34801561011f57600080fd5b506005545b6040519081526020015b60405180910390f35b34801561014357600080fd5b50610157610152366004611a6f565b6103cd565b6040516001600160a01b03909116815260200161012e565b34801561017b57600080fd5b50600254610157906001600160a01b031681565b34801561019b57600080fd5b506101af6101aa366004611a91565b610405565b005b3480156101bd57600080fd5b50610124670de0b6b3a764000081565b6101af6101db366004611a91565b6105ea565b3480156101ec57600080fd5b5061012460035481565b34801561020257600080fd5b506101af610211366004611abf565b610db2565b34801561022257600080fd5b506101af610e70565b34801561023757600080fd5b506001546001600160a01b0316610157565b34801561025557600080fd5b50610269610264366004611a91565b610e84565b604080516001600160a01b039b8c168152998b1660208b0152978a1697890197909752606088019590955296909216608086015260a085015260c084015260e08301939093526101008201929092526101208101919091526101400161012e565b3480156102d657600080fd5b506101246102e5366004611aeb565b60046020526000908152604090205481565b34801561030357600080fd5b506101af610312366004611a91565b611012565b34801561032357600080fd5b506101af610332366004611b0f565b6110a2565b34801561034357600080fd5b506101af610352366004611aeb565b6117ab565b34801561036357600080fd5b506101af610372366004611aeb565b611865565b34801561038357600080fd5b506103c06040518060400160405280600381526020017f312e31000000000000000000000000000000000000000000000000000000000081525081565b60405161012e9190611bce565b600660205281600052604060002081815481106103e957600080fd5b6000918252602090912001546001600160a01b03169150829050565b60006005828154811061041a5761041a611c1c565b60009182526020918290206040805161014081018252600a90930290910180546001600160a01b0390811684526001820154811694840185905260028201548116928401929092526003810154606084015260048101549091166080830152600581015460a0830152600681015460c0830152600781015460e0830152600881015461010083015260090154610120820152915033146104e95760405162461bcd60e51b815260206004820152600560248201526427aba722a960d91b60448201526064015b60405180910390fd5b60408101516001600160a01b0316156105445760405162461bcd60e51b815260206004820152600c60248201527f414c52454144595f534f4c44000000000000000000000000000000000000000060448201526064016104e0565b6005828154811061055757610557611c1c565b600091825260208220600a9091020180546001600160a01b0319908116825560018201805482169055600282018054821690556003820183905560048201805490911690556005810182905560068101829055600781018290556008810182905560090181905560405183917ffcba8a55f3e7a5d5b3c54a2e8632a02fa5f0e04404f69d3cc14d9577b01a532e91a25050565b6105f26118f2565b60006005828154811061060757610607611c1c565b60009182526020918290206040805161014081018252600a90930290910180546001600160a01b0390811684526001820154811694840185905260028201548116928401929092526003810154606084015260048101549091166080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009015461012082015291506106e75760405162461bcd60e51b815260206004820152600a60248201527f4e4f5f4c495354494e470000000000000000000000000000000000000000000060448201526064016104e0565b60408101516001600160a01b0316156107445760405162461bcd60e51b81526004016104e09060208082526004908201527f534f4c4400000000000000000000000000000000000000000000000000000000604082015260600190565b60e0810151156107a2578060e001514210156107a25760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016104e0565b61010081015115610802578061010001514211156108025760405162461bcd60e51b815260206004820152600760248201527f455850495245440000000000000000000000000000000000000000000000000060448201526064016104e0565b600082815260066020526040902054156108d8576000805b60008481526006602052604090205481101561088857600084815260066020526040902080543391908390811061085357610853611c1c565b6000918252602090912001546001600160a01b0316036108765760019150610888565b8061088081611c48565b91505061081a565b50806108d65760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f57484954454c4953544544000000000000000000000000000000000060448201526064016104e0565b505b33600583815481106108ec576108ec611c1c565b90600052602060002090600a020160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550426005838154811061093557610935611c1c565b90600052602060002090600a0201600901819055506000670de0b6b3a76400008260c001518360a001516109699190611c61565b6109739190611c7e565b90506000818360a001516109879190611ca0565b60808401519091506001600160a01b0316610b40578260a0015134146109ef5760405162461bcd60e51b815260206004820152600960248201527f4241445f56414c5545000000000000000000000000000000000000000000000060448201526064016104e0565b6002546040516000916001600160a01b03169084908381818185875af1925050503d8060008114610a3c576040519150601f19603f3d011682016040523d82523d6000602084013e610a41565b606091505b5050905080610a925760405162461bcd60e51b815260206004820152600360248201527f464545000000000000000000000000000000000000000000000000000000000060448201526064016104e0565b600084602001516001600160a01b03168360405160006040518083038185875af1925050503d8060008114610ae3576040519150601f19603f3d011682016040523d82523d6000602084013e610ae8565b606091505b5050905080610b395760405162461bcd60e51b815260206004820152600360248201527f504159000000000000000000000000000000000000000000000000000000000060448201526064016104e0565b5050610cdb565b60808301516002546040516323b872dd60e01b81523360048201526001600160a01b03918216602482015260448101859052908216906323b872dd906064016020604051808303816000875af1158015610b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc29190611cb3565b610c0e5760405162461bcd60e51b815260206004820152600960248201527f4645455f4552433230000000000000000000000000000000000000000000000060448201526064016104e0565b60208401516040516323b872dd60e01b81523360048201526001600160a01b03918216602482015260448101849052908216906323b872dd906064016020604051808303816000875af1158015610c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8d9190611cb3565b610cd95760405162461bcd60e51b815260206004820152600960248201527f5041595f4552433230000000000000000000000000000000000000000000000060448201526064016104e0565b505b8251602084015160608501516040517f42842e0e0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015233602482015260448101919091529116906342842e0e90606401600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b505050507f7de4fc5f40665d07bb617583443d17e37be07c379b26aaeef4e6dd18ab4da05a84604051610d9a91815260200190565b60405180910390a1505050610daf6001600055565b50565b610dba61194b565b670de0b6b3a7640000811115610e015760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104e0565b6001600160a01b0382166000818152600460209081526040918290205482519081529081018490527f7131684b13f4d0a7e839a858772b68c695510d58798266c4e5129fc218f5d33e910160405180910390a26001600160a01b03909116600090815260046020526040902055565b610e7861194b565b610e8260006119a5565b565b600080600080600080600080600080600060058c81548110610ea857610ea8611c1c565b90600052602060002090600a0201604051806101400160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600382015481526020016004820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e001518861010001518961012001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b61101a61194b565b670de0b6b3a76400008111156110615760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104e0565b60035460408051918252602082018390527fac1f58cd233fc224bd53b979e04547b08f9e5da37a3fa94f2afa216dfba59230910160405180910390a1600355565b600085116110f25760405162461bcd60e51b815260206004820152600560248201527f505249434500000000000000000000000000000000000000000000000000000060448201526064016104e0565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810188905233906001600160a01b038a1690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190611cd5565b6001600160a01b0316146111b45760405162461bcd60e51b815260206004820152600560248201526427aba722a960d91b60448201526064016104e0565b6040517f081812fc0000000000000000000000000000000000000000000000000000000081526004810188905230906001600160a01b038a169063081812fc90602401602060405180830381865afa158015611214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112389190611cd5565b6001600160a01b031614806112cf57506040517fe985e9c50000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160a01b0389169063e985e9c590604401602060405180830381865afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190611cb3565b61131b5760405162461bcd60e51b815260206004820152600860248201527f415050524f56414c00000000000000000000000000000000000000000000000060448201526064016104e0565b6001600160a01b038616156113d257856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611384575060408051601f3d908101601f1916820190925261138191810190611cf2565b60015b6113d05760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642045524332300000000000000000000000000000000000000060448201526064016104e0565b505b81428110156113de5750425b81156114a8574282116114335760405162461bcd60e51b815260206004820152601a60248201527f456e642064617465206d75737420626520696e2066757475726500000000000060448201526064016104e0565b8082116114a85760405162461bcd60e51b815260206004820152602160248201527f456e642064617465206d7573742062652061667465722073746172742064617460448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104e0565b6001600160a01b0389166000908152600460205260408120546114cd576003546114e7565b6001600160a01b038a166000908152600460205260409020545b60408051610140810182526001600160a01b03808e16825233602083019081526000938301848152606084018f81528e84166080860190815260a086018f815260c0870189815260e088018c815261010089018e81526101208a018b81526005805460018181018355828f528d51600a9092027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018054938f166001600160a01b03199485161790559b517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db18d018054918f1691841691909117905599517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db28c018054918e1691831691909117905597517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db38b015595517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db48a01805491909b1697169690961790985591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db5870155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db6860155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db785015593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db8840155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db990920191909155905493945090926117219190611ca0565b905086156117445760008181526006602052604090206117429089896119f7565b505b8b6001600160a01b0316336001600160a01b03167fb64565723ead64908bf659fd7f5c4940852a086c6376f2697244e815b2046d7c8d8d8d8d8d8d8d8a604051611795989796959493929190611d0b565b60405180910390a3505050505050505050505050565b6117b361194b565b6001600160a01b0381166118095760405162461bcd60e51b815260206004820152600c60248201527f5a65726f2061646472657373000000000000000000000000000000000000000060448201526064016104e0565b6002546040516001600160a01b038084169216907faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d390600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b61186d61194b565b6001600160a01b0381166118e95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104e0565b610daf816119a5565b6002600054036119445760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104e0565b6002600055565b6001546001600160a01b03163314610e825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e0565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215611a4a579160200282015b82811115611a4a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611a17565b50611a56929150611a5a565b5090565b5b80821115611a565760008155600101611a5b565b60008060408385031215611a8257600080fd5b50508035926020909101359150565b600060208284031215611aa357600080fd5b5035919050565b6001600160a01b0381168114610daf57600080fd5b60008060408385031215611ad257600080fd5b8235611add81611aaa565b946020939093013593505050565b600060208284031215611afd57600080fd5b8135611b0881611aaa565b9392505050565b60008060008060008060008060e0898b031215611b2b57600080fd5b8835611b3681611aaa565b9750602089013596506040890135611b4d81611aaa565b955060608901359450608089013567ffffffffffffffff80821115611b7157600080fd5b818b0191508b601f830112611b8557600080fd5b813581811115611b9457600080fd5b8c60208260051b8501011115611ba957600080fd5b999c989b50969995986020919091019790965060a08601359560c00135945092505050565b600060208083528351808285015260005b81811015611bfb57858101830151858201604001528201611bdf565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c5a57611c5a611c32565b5060010190565b8082028115828204841417611c7857611c78611c32565b92915050565b600082611c9b57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115611c7857611c78611c32565b600060208284031215611cc557600080fd5b81518015158114611b0857600080fd5b600060208284031215611ce757600080fd5b8151611b0881611aaa565b600060208284031215611d0457600080fd5b5051919050565b600060e082018a835260206001600160a01b03808c16828601528a604086015260e0606086015282898452610100860190508a935060005b8a811015611d6a578435611d5681611aaa565b831682529383019390830190600101611d43565b5060808601989098525050505060a081019290925260c0909101529594505050505056fea2646970667358221220346064321778a784b6f89d32a97d8e4d9514acfb231f22d74759035b7e6f86ae64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000058d15e17628000000000000000000000000000bae7c88f01eaa273e8834af38cacab2910ed9b93
-----Decoded View---------------
Arg [0] : _defaultFee (uint256): 25000000000000000
Arg [1] : _feeRecipient (address): 0xbAE7c88F01eAa273e8834Af38Cacab2910ed9B93
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000058d15e17628000
Arg [1] : 000000000000000000000000bae7c88f01eaa273e8834af38cacab2910ed9b93
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in HYPE
Multichain Portfolio | 35 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.