Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
NftMarket
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; contract NftMarket is IERC721Receiver { event List( address indexed seller, address indexed nftAddr, uint256 indexed tokenId, uint256 price ); event Purchase( address indexed buyer, address indexed nftAddr, uint256 indexed tokenId, uint256 price ); event Cancel( address indexed seller, address indexed nftAddr, uint256 indexed tokenId ); struct Order { address owner; uint256 price; uint256 listTime; } struct OrderData { address owner; uint256 price; uint256 listTime; uint256 tokenId; } mapping(address => mapping(uint256 => Order)) public orderList; mapping(address => uint256[]) public orderTokenIdList; IERC20 private _myToken; constructor(address _myTokenAddress) { _myToken = IERC20(_myTokenAddress); } function list( address _nftAddress, uint256 _tokenId, uint256 _price ) public { IERC721 _nft = IERC721(_nftAddress); require( _nft.getApproved(_tokenId) == address(this), "need approved this nft" ); require(_price > 0, "price need more than zero"); Order storage _order = orderList[_nftAddress][_tokenId]; _order.owner = msg.sender; _order.price = _price; _order.listTime = block.timestamp; _nft.safeTransferFrom(msg.sender, address(this), _tokenId); uint256[] storage _tokenIdList = orderTokenIdList[_nftAddress]; _tokenIdList.push(_tokenId); emit List(msg.sender, _nftAddress, _tokenId, _price); } function purchase(address _nftAddress, uint256 _tokenId) public { Order storage _order = orderList[_nftAddress][_tokenId]; require( _myToken.balanceOf(msg.sender) > _order.price, "not enough token to buy" ); IERC721 _nft = IERC721(_nftAddress); require(_nft.ownerOf(_tokenId) == address(this), "invalid order"); _nft.safeTransferFrom(address(this), msg.sender, _tokenId); _myToken.transferFrom(msg.sender, _order.owner, _order.price); delete orderList[_nftAddress][_tokenId]; uint256[] storage _tokenIdList = orderTokenIdList[_nftAddress]; for (uint256 i = 0; i < _tokenIdList.length; i++) { if (_tokenIdList[i] == _tokenId) { _tokenIdList[i] = _tokenIdList[_tokenIdList.length - 1]; _tokenIdList.pop(); break; } } emit Purchase(msg.sender, _nftAddress, _tokenId, _order.price); } function cancel(address _nftAddress, uint256 _tokenId) public { Order storage _order = orderList[_nftAddress][_tokenId]; require(_order.owner == msg.sender, "not owner"); IERC721 _nft = IERC721(_nftAddress); _nft.safeTransferFrom(address(this), msg.sender, _tokenId); delete orderList[_nftAddress][_tokenId]; emit Cancel(msg.sender, _nftAddress, _tokenId); } function getAllListNft( address _nftAddress ) public view returns (OrderData[] memory orderDataList) { uint256[] storage _tokenIdList = orderTokenIdList[_nftAddress]; OrderData[] memory _orderList = new OrderData[](_tokenIdList.length); for (uint256 i = 0; i < _tokenIdList.length; i++) { Order storage _order = orderList[_nftAddress][_tokenIdList[i]]; _orderList[i] = OrderData( _order.owner, _order.price, _order.listTime, _tokenIdList[i] ); } orderDataList = _orderList; } function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external override returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.20; import {IERC165} from "../../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 address zero. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.20; /** * @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 v5.0.0) (utils/introspection/IERC165.sol) pragma solidity ^0.8.20; /** * @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); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_myTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"nftAddr","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"nftAddr","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"List","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"address","name":"nftAddr","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"Purchase","type":"event"},{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"}],"name":"getAllListNft","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"listTime","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"internalType":"struct NftMarket.OrderData[]","name":"orderDataList","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"list","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderList","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"listTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderTokenIdList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"purchase","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b5060405161181c38038061181c833981810160405281019061003191906100d5565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610100565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a48261007b565b9050919050565b6100b48161009a565b81146100be575f80fd5b50565b5f815190506100cf816100ab565b92915050565b5f602082840312156100ea576100e9610077565b5b5f6100f7848285016100c1565b91505092915050565b61170f8061010d5f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c806398590ef91161005957806398590ef9146100fb578063dda342bb14610117578063f4fb9b2f14610133578063fa728b13146101655761007b565b8063150b7a021461007f5780631a098056146100af5780638de93222146100df575b5f80fd5b61009960048036038101906100949190610f79565b610195565b6040516100a69190611037565b60405180910390f35b6100c960048036038101906100c49190611050565b6101a9565b6040516100d6919061109d565b60405180910390f35b6100f960048036038101906100f49190611050565b6101d4565b005b61011560048036038101906101109190611050565b6106fc565b005b610131600480360381019061012c91906110b6565b61092a565b005b61014d60048036038101906101489190611050565b610c33565b60405161015c93929190611115565b60405180910390f35b61017f600480360381019061017a919061114a565b610c82565b60405161018c919061128e565b60405180910390f35b5f63150b7a0260e01b905095945050505050565b6001602052815f5260405f2081815481106101c2575f80fd5b905f5260205f20015f91509150505481565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f209050806001015460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161028191906112ae565b602060405180830381865afa15801561029c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c091906112db565b11610300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f790611360565b60405180910390fd5b5f8390503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b8152600401610354919061109d565b602060405180830381865afa15801561036f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103939190611392565b73ffffffffffffffffffffffffffffffffffffffff16146103e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e090611407565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342842e0e3033866040518463ffffffff1660e01b815260040161042693929190611425565b5f604051808303815f87803b15801561043d575f80fd5b505af115801561044f573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33845f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600101546040518463ffffffff1660e01b81526004016104d793929190611425565b6020604051808303815f875af11580156104f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610517919061148f565b505f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f905550505f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b818054905081101561068a57848282815481106105fb576105fa6114ba565b5b905f5260205f2001540361067d57816001838054905061061b9190611514565b8154811061062c5761062b6114ba565b5b905f5260205f200154828281548110610648576106476114ba565b5b905f5260205f2001819055508180548061066557610664611547565b5b600190038181905f5260205f20015f9055905561068a565b80806001019150506105db565b50838573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f46661dab58311a6838247afecbee792192b4f27fc8b3e7168c66bc55ec2e404e86600101546040516106ed919061109d565b60405180910390a45050505050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2090503373ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906115be565b60405180910390fd5b5f8390508073ffffffffffffffffffffffffffffffffffffffff166342842e0e3033866040518463ffffffff1660e01b815260040161081b93929190611425565b5f604051808303815f87803b158015610832575f80fd5b505af1158015610844573d5f803e3d5ffd5b505050505f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f90555050828473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f977ca88fbe72d930c467bb5e513bf5120fa044293ebf66e5deb33354c612c9fb60405160405180910390a450505050565b5f8390503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663081812fc856040518263ffffffff1660e01b815260040161097e919061109d565b602060405180830381865afa158015610999573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd9190611392565b73ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90611626565b60405180910390fd5b5f8211610a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4c9061168e565b60405180910390fd5b5f805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20905033815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508281600101819055504281600201819055508173ffffffffffffffffffffffffffffffffffffffff166342842e0e3330876040518463ffffffff1660e01b8152600401610b3393929190611425565b5f604051808303815f87803b158015610b4a575f80fd5b505af1158015610b5c573d5f803e3d5ffd5b505050505f60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090508085908060018154018082558091505060019003905f5260205f20015f9091909190915055848673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fedbdf022944a3291f4b30148903a84720506f48e10478ec5812e5caf30e1fab087604051610c23919061109d565b60405180910390a4505050505050565b5f602052815f5260405f20602052805f5260405f205f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60605f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f818054905067ffffffffffffffff811115610ce357610ce26116ac565b5b604051908082528060200260200182016040528015610d1c57816020015b610d09610e49565b815260200190600190039081610d015790505b5090505f5b8280549050811015610e3e575f805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f858481548110610d7e57610d7d6114ba565b5b905f5260205f20015481526020019081526020015f2090506040518060800160405280825f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260010154815260200182600201548152602001858481548110610e0657610e056114ba565b5b905f5260205f200154815250838381518110610e2557610e246114ba565b5b6020026020010181905250508080600101915050610d21565b508092505050919050565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610eb482610e8b565b9050919050565b610ec481610eaa565b8114610ece575f80fd5b50565b5f81359050610edf81610ebb565b92915050565b5f819050919050565b610ef781610ee5565b8114610f01575f80fd5b50565b5f81359050610f1281610eee565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610f3957610f38610f18565b5b8235905067ffffffffffffffff811115610f5657610f55610f1c565b5b602083019150836001820283011115610f7257610f71610f20565b5b9250929050565b5f805f805f60808688031215610f9257610f91610e83565b5b5f610f9f88828901610ed1565b9550506020610fb088828901610ed1565b9450506040610fc188828901610f04565b935050606086013567ffffffffffffffff811115610fe257610fe1610e87565b5b610fee88828901610f24565b92509250509295509295909350565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61103181610ffd565b82525050565b5f60208201905061104a5f830184611028565b92915050565b5f806040838503121561106657611065610e83565b5b5f61107385828601610ed1565b925050602061108485828601610f04565b9150509250929050565b61109781610ee5565b82525050565b5f6020820190506110b05f83018461108e565b92915050565b5f805f606084860312156110cd576110cc610e83565b5b5f6110da86828701610ed1565b93505060206110eb86828701610f04565b92505060406110fc86828701610f04565b9150509250925092565b61110f81610eaa565b82525050565b5f6060820190506111285f830186611106565b611135602083018561108e565b611142604083018461108e565b949350505050565b5f6020828403121561115f5761115e610e83565b5b5f61116c84828501610ed1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6111a781610eaa565b82525050565b6111b681610ee5565b82525050565b608082015f8201516111d05f85018261119e565b5060208201516111e360208501826111ad565b5060408201516111f660408501826111ad565b50606082015161120960608501826111ad565b50505050565b5f61121a83836111bc565b60808301905092915050565b5f602082019050919050565b5f61123c82611175565b611246818561117f565b93506112518361118f565b805f5b83811015611281578151611268888261120f565b975061127383611226565b925050600181019050611254565b5085935050505092915050565b5f6020820190508181035f8301526112a68184611232565b905092915050565b5f6020820190506112c15f830184611106565b92915050565b5f815190506112d581610eee565b92915050565b5f602082840312156112f0576112ef610e83565b5b5f6112fd848285016112c7565b91505092915050565b5f82825260208201905092915050565b7f6e6f7420656e6f75676820746f6b656e20746f206275790000000000000000005f82015250565b5f61134a601783611306565b915061135582611316565b602082019050919050565b5f6020820190508181035f8301526113778161133e565b9050919050565b5f8151905061138c81610ebb565b92915050565b5f602082840312156113a7576113a6610e83565b5b5f6113b48482850161137e565b91505092915050565b7f696e76616c6964206f72646572000000000000000000000000000000000000005f82015250565b5f6113f1600d83611306565b91506113fc826113bd565b602082019050919050565b5f6020820190508181035f83015261141e816113e5565b9050919050565b5f6060820190506114385f830186611106565b6114456020830185611106565b611452604083018461108e565b949350505050565b5f8115159050919050565b61146e8161145a565b8114611478575f80fd5b50565b5f8151905061148981611465565b92915050565b5f602082840312156114a4576114a3610e83565b5b5f6114b18482850161147b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61151e82610ee5565b915061152983610ee5565b9250828203905081811115611541576115406114e7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f6e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f6115a8600983611306565b91506115b382611574565b602082019050919050565b5f6020820190508181035f8301526115d58161159c565b9050919050565b7f6e65656420617070726f7665642074686973206e6674000000000000000000005f82015250565b5f611610601683611306565b915061161b826115dc565b602082019050919050565b5f6020820190508181035f83015261163d81611604565b9050919050565b7f7072696365206e656564206d6f7265207468616e207a65726f000000000000005f82015250565b5f611678601983611306565b915061168382611644565b602082019050919050565b5f6020820190508181035f8301526116a58161166c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea264697066735822122001f91abe249dc4b710345c0e7c5aaa315e660cdac777988c79e38d00ce81f63b64736f6c634300081a003300000000000000000000000024d69aba97dddcef0c58655da820b5f2deed2a0c
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061007b575f3560e01c806398590ef91161005957806398590ef9146100fb578063dda342bb14610117578063f4fb9b2f14610133578063fa728b13146101655761007b565b8063150b7a021461007f5780631a098056146100af5780638de93222146100df575b5f80fd5b61009960048036038101906100949190610f79565b610195565b6040516100a69190611037565b60405180910390f35b6100c960048036038101906100c49190611050565b6101a9565b6040516100d6919061109d565b60405180910390f35b6100f960048036038101906100f49190611050565b6101d4565b005b61011560048036038101906101109190611050565b6106fc565b005b610131600480360381019061012c91906110b6565b61092a565b005b61014d60048036038101906101489190611050565b610c33565b60405161015c93929190611115565b60405180910390f35b61017f600480360381019061017a919061114a565b610c82565b60405161018c919061128e565b60405180910390f35b5f63150b7a0260e01b905095945050505050565b6001602052815f5260405f2081815481106101c2575f80fd5b905f5260205f20015f91509150505481565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f209050806001015460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161028191906112ae565b602060405180830381865afa15801561029c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c091906112db565b11610300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f790611360565b60405180910390fd5b5f8390503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b8152600401610354919061109d565b602060405180830381865afa15801561036f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103939190611392565b73ffffffffffffffffffffffffffffffffffffffff16146103e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e090611407565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342842e0e3033866040518463ffffffff1660e01b815260040161042693929190611425565b5f604051808303815f87803b15801561043d575f80fd5b505af115801561044f573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33845f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600101546040518463ffffffff1660e01b81526004016104d793929190611425565b6020604051808303815f875af11580156104f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610517919061148f565b505f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f905550505f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b818054905081101561068a57848282815481106105fb576105fa6114ba565b5b905f5260205f2001540361067d57816001838054905061061b9190611514565b8154811061062c5761062b6114ba565b5b905f5260205f200154828281548110610648576106476114ba565b5b905f5260205f2001819055508180548061066557610664611547565b5b600190038181905f5260205f20015f9055905561068a565b80806001019150506105db565b50838573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f46661dab58311a6838247afecbee792192b4f27fc8b3e7168c66bc55ec2e404e86600101546040516106ed919061109d565b60405180910390a45050505050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2090503373ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906115be565b60405180910390fd5b5f8390508073ffffffffffffffffffffffffffffffffffffffff166342842e0e3033866040518463ffffffff1660e01b815260040161081b93929190611425565b5f604051808303815f87803b158015610832575f80fd5b505af1158015610844573d5f803e3d5ffd5b505050505f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f90555050828473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f977ca88fbe72d930c467bb5e513bf5120fa044293ebf66e5deb33354c612c9fb60405160405180910390a450505050565b5f8390503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663081812fc856040518263ffffffff1660e01b815260040161097e919061109d565b602060405180830381865afa158015610999573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd9190611392565b73ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90611626565b60405180910390fd5b5f8211610a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4c9061168e565b60405180910390fd5b5f805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20905033815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508281600101819055504281600201819055508173ffffffffffffffffffffffffffffffffffffffff166342842e0e3330876040518463ffffffff1660e01b8152600401610b3393929190611425565b5f604051808303815f87803b158015610b4a575f80fd5b505af1158015610b5c573d5f803e3d5ffd5b505050505f60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090508085908060018154018082558091505060019003905f5260205f20015f9091909190915055848673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fedbdf022944a3291f4b30148903a84720506f48e10478ec5812e5caf30e1fab087604051610c23919061109d565b60405180910390a4505050505050565b5f602052815f5260405f20602052805f5260405f205f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60605f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f818054905067ffffffffffffffff811115610ce357610ce26116ac565b5b604051908082528060200260200182016040528015610d1c57816020015b610d09610e49565b815260200190600190039081610d015790505b5090505f5b8280549050811015610e3e575f805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f858481548110610d7e57610d7d6114ba565b5b905f5260205f20015481526020019081526020015f2090506040518060800160405280825f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260010154815260200182600201548152602001858481548110610e0657610e056114ba565b5b905f5260205f200154815250838381518110610e2557610e246114ba565b5b6020026020010181905250508080600101915050610d21565b508092505050919050565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610eb482610e8b565b9050919050565b610ec481610eaa565b8114610ece575f80fd5b50565b5f81359050610edf81610ebb565b92915050565b5f819050919050565b610ef781610ee5565b8114610f01575f80fd5b50565b5f81359050610f1281610eee565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610f3957610f38610f18565b5b8235905067ffffffffffffffff811115610f5657610f55610f1c565b5b602083019150836001820283011115610f7257610f71610f20565b5b9250929050565b5f805f805f60808688031215610f9257610f91610e83565b5b5f610f9f88828901610ed1565b9550506020610fb088828901610ed1565b9450506040610fc188828901610f04565b935050606086013567ffffffffffffffff811115610fe257610fe1610e87565b5b610fee88828901610f24565b92509250509295509295909350565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61103181610ffd565b82525050565b5f60208201905061104a5f830184611028565b92915050565b5f806040838503121561106657611065610e83565b5b5f61107385828601610ed1565b925050602061108485828601610f04565b9150509250929050565b61109781610ee5565b82525050565b5f6020820190506110b05f83018461108e565b92915050565b5f805f606084860312156110cd576110cc610e83565b5b5f6110da86828701610ed1565b93505060206110eb86828701610f04565b92505060406110fc86828701610f04565b9150509250925092565b61110f81610eaa565b82525050565b5f6060820190506111285f830186611106565b611135602083018561108e565b611142604083018461108e565b949350505050565b5f6020828403121561115f5761115e610e83565b5b5f61116c84828501610ed1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6111a781610eaa565b82525050565b6111b681610ee5565b82525050565b608082015f8201516111d05f85018261119e565b5060208201516111e360208501826111ad565b5060408201516111f660408501826111ad565b50606082015161120960608501826111ad565b50505050565b5f61121a83836111bc565b60808301905092915050565b5f602082019050919050565b5f61123c82611175565b611246818561117f565b93506112518361118f565b805f5b83811015611281578151611268888261120f565b975061127383611226565b925050600181019050611254565b5085935050505092915050565b5f6020820190508181035f8301526112a68184611232565b905092915050565b5f6020820190506112c15f830184611106565b92915050565b5f815190506112d581610eee565b92915050565b5f602082840312156112f0576112ef610e83565b5b5f6112fd848285016112c7565b91505092915050565b5f82825260208201905092915050565b7f6e6f7420656e6f75676820746f6b656e20746f206275790000000000000000005f82015250565b5f61134a601783611306565b915061135582611316565b602082019050919050565b5f6020820190508181035f8301526113778161133e565b9050919050565b5f8151905061138c81610ebb565b92915050565b5f602082840312156113a7576113a6610e83565b5b5f6113b48482850161137e565b91505092915050565b7f696e76616c6964206f72646572000000000000000000000000000000000000005f82015250565b5f6113f1600d83611306565b91506113fc826113bd565b602082019050919050565b5f6020820190508181035f83015261141e816113e5565b9050919050565b5f6060820190506114385f830186611106565b6114456020830185611106565b611452604083018461108e565b949350505050565b5f8115159050919050565b61146e8161145a565b8114611478575f80fd5b50565b5f8151905061148981611465565b92915050565b5f602082840312156114a4576114a3610e83565b5b5f6114b18482850161147b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61151e82610ee5565b915061152983610ee5565b9250828203905081811115611541576115406114e7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f6e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f6115a8600983611306565b91506115b382611574565b602082019050919050565b5f6020820190508181035f8301526115d58161159c565b9050919050565b7f6e65656420617070726f7665642074686973206e6674000000000000000000005f82015250565b5f611610601683611306565b915061161b826115dc565b602082019050919050565b5f6020820190508181035f83015261163d81611604565b9050919050565b7f7072696365206e656564206d6f7265207468616e207a65726f000000000000005f82015250565b5f611678601983611306565b915061168382611644565b602082019050919050565b5f6020820190508181035f8301526116a58161166c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea264697066735822122001f91abe249dc4b710345c0e7c5aaa315e660cdac777988c79e38d00ce81f63b64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000024d69aba97dddcef0c58655da820b5f2deed2a0c
-----Decoded View---------------
Arg [0] : _myTokenAddress (address): 0x24d69aBA97DdDCEf0c58655Da820B5F2deED2A0c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000024d69aba97dddcef0c58655da820b5f2deed2a0c
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.