Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 938 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Cancel Order | 16593303 | 721 days ago | IN | 0 ETH | 0.00578107 | ||||
Cancel Order | 16293218 | 763 days ago | IN | 0 ETH | 0.000949 | ||||
Cancel Order | 16293217 | 763 days ago | IN | 0 ETH | 0.00093221 | ||||
Cancel Order | 16293192 | 763 days ago | IN | 0 ETH | 0.00061477 | ||||
Cancel Order | 16293190 | 763 days ago | IN | 0 ETH | 0.00105004 | ||||
Cancel Order | 16293189 | 763 days ago | IN | 0 ETH | 0.00106622 | ||||
Cancel Order | 16293185 | 763 days ago | IN | 0 ETH | 0.00118068 | ||||
Cancel Order | 16239531 | 771 days ago | IN | 0 ETH | 0.00071256 | ||||
Increment Nonce | 15525632 | 871 days ago | IN | 0 ETH | 0.00016938 | ||||
Fill Ask | 15467075 | 880 days ago | IN | 0.01 ETH | 0.00091921 | ||||
Cancel Order | 15462653 | 881 days ago | IN | 0 ETH | 0.00040196 | ||||
Fill Bid | 15441446 | 885 days ago | IN | 0 ETH | 0.0042526 | ||||
Fill Bid | 15441446 | 885 days ago | IN | 0 ETH | 0.00456097 | ||||
Fill Bid | 15441445 | 885 days ago | IN | 0 ETH | 0.00407827 | ||||
Fill Bid | 15441435 | 885 days ago | IN | 0 ETH | 0.00536828 | ||||
Cancel Order | 15437118 | 885 days ago | IN | 0 ETH | 0.00067223 | ||||
Increment Nonce | 15436411 | 885 days ago | IN | 0 ETH | 0.00054935 | ||||
Cancel Order | 15424468 | 887 days ago | IN | 0 ETH | 0.00025333 | ||||
Cancel Order | 15424456 | 887 days ago | IN | 0 ETH | 0.00028125 | ||||
Increment Nonce | 15422020 | 888 days ago | IN | 0 ETH | 0.00104195 | ||||
Cancel Order | 15421998 | 888 days ago | IN | 0 ETH | 0.00136551 | ||||
Cancel Order | 15421974 | 888 days ago | IN | 0 ETH | 0.0023728 | ||||
Fill Ask | 15421619 | 888 days ago | IN | 0.03 ETH | 0.00090985 | ||||
Fill Ask | 15415682 | 889 days ago | IN | 14 ETH | 0.00203164 | ||||
Cancel Order | 15411035 | 889 days ago | IN | 0 ETH | 0.00091727 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15467075 | 880 days ago | 0.00995 ETH | ||||
15467075 | 880 days ago | 0.00005 ETH | ||||
15441446 | 885 days ago | 0.398 ETH | ||||
15441446 | 885 days ago | 0.002 ETH | ||||
15441446 | 885 days ago | 0.4 ETH | ||||
15441446 | 885 days ago | 0.398 ETH | ||||
15441446 | 885 days ago | 0.002 ETH | ||||
15441446 | 885 days ago | 0.4 ETH | ||||
15441445 | 885 days ago | 0.398 ETH | ||||
15441445 | 885 days ago | 0.002 ETH | ||||
15441445 | 885 days ago | 0.4 ETH | ||||
15441435 | 885 days ago | 0.398 ETH | ||||
15441435 | 885 days ago | 0.002 ETH | ||||
15441435 | 885 days ago | 0.4 ETH | ||||
15421619 | 888 days ago | 0.02985 ETH | ||||
15421619 | 888 days ago | 0.00015 ETH | ||||
15415682 | 889 days ago | 13.93 ETH | ||||
15415682 | 889 days ago | 0.07 ETH | ||||
15385823 | 893 days ago | 3.6815 ETH | ||||
15385823 | 893 days ago | 0.0185 ETH | ||||
15370282 | 896 days ago | 10.945 ETH | ||||
15370282 | 896 days ago | 0.055 ETH | ||||
15331718 | 902 days ago | 2.2885 ETH | ||||
15331718 | 902 days ago | 0.0115 ETH | ||||
15252172 | 914 days ago | 49.75 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
GolomTrader
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.11; import '@openzeppelin/contracts/access/Ownable.sol'; interface ERC721 { function transferFrom( address from, address to, uint256 tokenId ) external; } interface ERC1155 { function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; } interface ERC20 { function transferFrom( address src, address dst, uint256 wad ) external returns (bool); function withdraw(uint256 wad) external; } interface Distributor { function addFee(address[2] calldata addr, uint256 fee) external; } contract GolomTrader is Ownable { bytes32 public immutable EIP712_DOMAIN_TYPEHASH; mapping(address => uint256) public nonces; // all nonces other then this nonce mapping(bytes32 => uint256) public filled; ERC20 WETH = ERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); struct Order { address collection; // NFT contract address uint256 tokenId; // order for which tokenId of the collection address signer; // maker of order address uint256 orderType; // 0 if selling nft for eth , 1 if offering weth for nft,2 if offering weth for collection with special criteria root uint256 totalAmt; // price value of the trade // total amt maker is willing to give up per unit of amount Payment exchange; // payment agreed by maker of the order to pay on succesful filling of trade this amt is subtracted from totalamt Payment prePayment; // another payment , can be used for royalty, facilating trades bool isERC721; // standard of the collection , if 721 then true , if 1155 then false uint256 tokenAmt; // token amt useful if standard is 1155 if >1 means whole order can be filled tokenAmt times uint256 refererrAmt; // amt to pay to the address that helps in filling your order bytes32 root; // A merkle root derived from each valid tokenId — set to 0 to indicate a collection-level or tokenId-specific order. address reservedAddress; // if not address(0) , only this address can fill the order uint256 nonce; // nonce of order usefull for cancelling in bulk uint256 deadline; // timestamp till order is valid epoch timestamp in secs uint8 v; bytes32 r; bytes32 s; } struct Payment { uint256 paymentAmt; address paymentAddress; } address public governance; Distributor public distributor; address public pendingDistributor; uint256 public distributorEnableDate; // events event NonceIncremented(address indexed maker, uint256 newNonce); event OrderFilled( address indexed maker, address indexed taker, uint256 indexed orderType, bytes32 orderHash, uint256 price ); event OrderCancelled(bytes32 indexed orderHash); /// @param _governance Address of the governance, responsible for setting distributor constructor(address _governance) { // sets governance as owner _transferOwnership(_governance); EIP712_DOMAIN_TYPEHASH = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes('GOLOM.IO')), keccak256(bytes('1')), 1, address(this) ) ); } function hashPayment(Payment calldata p) private pure returns (bytes32) { return keccak256( abi.encode( keccak256('payment(uint256 paymentAmt,address paymentAddress)'), p.paymentAmt, p.paymentAddress ) ); } function _hashOrder(Order calldata o) private pure returns (bytes32) { return _hashOrderinternal(o, [o.nonce, o.deadline]); } function _hashOrderinternal(Order calldata o, uint256[2] memory extra) private pure returns (bytes32) { return keccak256( abi.encode( keccak256( 'order(address collection,uint256 tokenId,address signer,uint256 orderType,uint256 totalAmt,payment exchange,payment prePayment,bool isERC721,uint256 tokenAmt,uint256 refererrAmt,bytes32 root,address reservedAddress,uint256 nonce,uint256 deadline)payment(uint256 paymentAmt,address paymentAddress)' ), o.collection, o.tokenId, o.signer, o.orderType, o.totalAmt, hashPayment(o.exchange), hashPayment(o.prePayment), o.isERC721, o.tokenAmt, o.refererrAmt, o.root, o.reservedAddress, extra ) ); } function payEther(uint256 payAmt, address payAddress) internal { if (payAmt > 0) { // if royalty has to be paid payable(payAddress).transfer(payAmt); // royalty transfer to royaltyaddress } } /// @dev Validates Order and returns OrderStatus, hashedorder, amountRemaining to be filled /// OrderStatus = 0 , if signature is invalid /// OrderStatus = 1 , if deadline has been /// OrderStatus = 2 , order is filled or cancelled /// OrderStatus = 3 , valid order /// @param o the Order struct to be validated function validateOrder(Order calldata o) public view returns ( uint256, bytes32, uint256 ) { // match signature bytes32 hashStruct = _hashOrder(o); bytes32 hash = keccak256(abi.encodePacked('\x19\x01', EIP712_DOMAIN_TYPEHASH, hashStruct)); address signaturesigner = ecrecover(hash, o.v, o.r, o.s); require(signaturesigner == o.signer, 'invalid signature'); if (signaturesigner != o.signer) { return (0, hashStruct, 0); } //deadline if (block.timestamp > o.deadline) { return (1, hashStruct, 0); } // not cancelled by nonce or by hash if (o.nonce != nonces[o.signer]) { return (2, hashStruct, 0); } if (filled[hashStruct] >= o.tokenAmt) { // handles erc1155 return (2, hashStruct, 0); } return (3, hashStruct, o.tokenAmt - filled[hashStruct]); } /// @dev function to fill a signed order of ordertype 0, also has a payment param in case the taker wants /// to send ether to that address on filling the order /// @param o the Order struct to be filled must be orderType 0 /// @param amount the amount of times the order is to be filled(useful for ERC1155) /// @param referrer referrer of the order /// @param p any extra payment that the taker of this order wanna send on succesful execution of order function fillAsk( Order calldata o, uint256 amount, address referrer, Payment calldata p ) public payable { // check if the signed total amount has all the amounts as well as 50 basis points fee require( o.totalAmt >= o.exchange.paymentAmt + o.prePayment.paymentAmt + o.refererrAmt + (o.totalAmt * 50) / 10000, 'amt not matching' ); // attached ETH value should be greater than total value of one NFT * total number of NFTs + any extra payment to be given require(msg.value >= o.totalAmt * amount + p.paymentAmt, 'mgmtm'); if (o.reservedAddress != address(0)) { require(msg.sender == o.reservedAddress); } require(o.orderType == 0, 'invalid orderType'); (uint256 status, bytes32 hashStruct, uint256 amountRemaining) = validateOrder(o); require(status == 3, 'order not valid'); require(amountRemaining >= amount, 'order already filled'); filled[hashStruct] = filled[hashStruct] + amount; if (o.isERC721) { require(amount == 1, 'only 1 erc721 at 1 time'); ERC721(o.collection).transferFrom(o.signer, msg.sender, o.tokenId); } else { ERC1155(o.collection).safeTransferFrom(o.signer, msg.sender, o.tokenId, amount, ''); } // pay fees of 50 basis points to the distributor payEther(((o.totalAmt * 50) / 10000) * amount, address(distributor)); // pay the exchange share payEther(o.exchange.paymentAmt * amount, o.exchange.paymentAddress); // pay the pre payment payEther(o.prePayment.paymentAmt * amount, o.prePayment.paymentAddress); if (o.refererrAmt > 0 && referrer != address(0)) { payEther(o.refererrAmt * amount, referrer); payEther( (o.totalAmt - (o.totalAmt * 50) / 10000 - o.exchange.paymentAmt - o.prePayment.paymentAmt - o.refererrAmt) * amount, o.signer ); } else { payEther( (o.totalAmt - (o.totalAmt * 50) / 10000 - o.exchange.paymentAmt - o.prePayment.paymentAmt) * amount, o.signer ); } payEther(p.paymentAmt, p.paymentAddress); distributor.addFee([o.signer, o.exchange.paymentAddress], ((o.totalAmt * 50) / 10000) * amount); emit OrderFilled(o.signer, msg.sender, 0, hashStruct, o.totalAmt * amount); } /// @dev function to fill a signed order of ordertype 1 also has a payment param in case the taker wants /// to send ether to that address on filling the order /// @param o the Order struct to be filled must be orderType 1 /// @param amount the amount of times the order is to be filled(useful for ERC1155) /// @param referrer referrer of the order /// @param p any extra payment that the taker of this order wanna send on succesful execution of order function fillBid( Order calldata o, uint256 amount, address referrer, Payment calldata p ) public { require( o.totalAmt * amount > (o.exchange.paymentAmt + o.prePayment.paymentAmt + o.refererrAmt) * amount + p.paymentAmt ); // cause bidder eth is paying for seller payment p , dont take anything extra from seller // require eth amt is sufficient if (o.reservedAddress != address(0)) { require(msg.sender == o.reservedAddress); } require(o.orderType == 1); (uint256 status, bytes32 hashStruct, uint256 amountRemaining) = validateOrder(o); require(status == 3); require(amountRemaining >= amount); filled[hashStruct] = filled[hashStruct] + amount; if (o.isERC721) { require(amount == 1, 'only 1 erc721 at 1 time'); ERC721 nftcontract = ERC721(o.collection); nftcontract.transferFrom(msg.sender, o.signer, o.tokenId); } else { ERC1155 nftcontract = ERC1155(o.collection); nftcontract.safeTransferFrom(msg.sender, o.signer, o.tokenId, amount, ''); } emit OrderFilled(msg.sender, o.signer, 1, hashStruct, o.totalAmt * amount); _settleBalances(o, amount, referrer, p); } // cancel by nonce and by individual order function cancelOrder(Order calldata o) public { require(o.signer == msg.sender); (, bytes32 hashStruct, ) = validateOrder(o); filled[hashStruct] = o.tokenAmt + 1; emit OrderCancelled(hashStruct); } /** * Increment a particular maker's nonce, thereby invalidating all orders that were not signed * with the original nonce. */ function incrementNonce() external { uint256 newNonce = ++nonces[msg.sender]; emit NonceIncremented(msg.sender, newNonce); } /// @dev function to fill a signed order of ordertype 2 also has a payment param in case the taker wants /// to send ether to that address on filling the order, Match an criteria order, ensuring that the supplied proof demonstrates inclusion of the tokenId in the associated merkle root, if root is 0 then any token can be used to fill the order /// @param o the Order struct to be filled must be orderType 2 /// @param amount the amount of times the order is to be filled(useful for ERC1155) /// @param referrer referrer of the order /// @param p any extra payment that the taker of this order wanna send on succesful execution of order function fillCriteriaBid( Order calldata o, uint256 amount, uint256 tokenId, bytes32[] calldata proof, address referrer, Payment calldata p ) public { require(o.totalAmt >= o.exchange.paymentAmt + o.prePayment.paymentAmt + o.refererrAmt); // require eth amt is sufficient if (o.reservedAddress != address(0)) { require(msg.sender == o.reservedAddress); } require(o.orderType == 2); (uint256 status, bytes32 hashStruct, uint256 amountRemaining) = validateOrder(o); require(status == 3); require(amountRemaining >= amount); filled[hashStruct] = filled[hashStruct] + amount; // Proof verification is performed when there's a non-zero root. if (o.root != bytes32(0)) { _verifyProof(tokenId, o.root, proof); } if (o.isERC721) { require(amount == 1, 'only 1 erc721 at 1 time'); ERC721 nftcontract = ERC721(o.collection); nftcontract.transferFrom(msg.sender, o.signer, tokenId); } else { ERC1155 nftcontract = ERC1155(o.collection); nftcontract.safeTransferFrom(msg.sender, o.signer, tokenId, amount, ''); } emit OrderFilled(msg.sender, o.signer, 2, hashStruct, o.totalAmt * amount); _settleBalances(o, amount, referrer, p); } /// @dev function to settle balances when a bid is filled succesfully /// @param o the Order struct to be filled must be orderType 1 /// @param amount the amount of times the order is to be filled(useful for ERC1155) /// @param referrer referrer of the order /// @param p any extra payment that the taker of this order wanna send on succesful execution of order function _settleBalances( Order calldata o, uint256 amount, address referrer, Payment calldata p ) internal { uint256 protocolfee = ((o.totalAmt * 50) / 10000) * amount; WETH.transferFrom(o.signer, address(this), o.totalAmt * amount); WETH.withdraw(o.totalAmt * amount); payEther(protocolfee, address(distributor)); payEther(o.exchange.paymentAmt * amount, o.exchange.paymentAddress); payEther(o.prePayment.paymentAmt * amount, o.prePayment.paymentAddress); if (o.refererrAmt > 0 && referrer != address(0)) { payEther(o.refererrAmt * amount, referrer); payEther( (o.totalAmt - protocolfee - o.exchange.paymentAmt - o.prePayment.paymentAmt - o.refererrAmt) * amount - p.paymentAmt, msg.sender ); } else { payEther( (o.totalAmt - protocolfee - o.exchange.paymentAmt - o.prePayment.paymentAmt) * amount - p.paymentAmt, msg.sender ); } payEther(p.paymentAmt, p.paymentAddress); distributor.addFee([msg.sender, o.exchange.paymentAddress], protocolfee); } /// @dev Ensure that a given tokenId is contained within a supplied merkle root using a supplied proof. /// @param leaf The tokenId. /// @param root A merkle root derived from each valid tokenId. /// @param proof A proof that the supplied tokenId is contained within the associated merkle root. function _verifyProof( uint256 leaf, bytes32 root, bytes32[] memory proof ) public view { bytes32 computedHash = keccak256(abi.encode(leaf)); for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } if (computedHash != root) { revert('invalid proof'); } } /// @dev Efficiently hash two bytes32 elements using memory scratch space. /// @param a The first element included in the hash. /// @param b The second element included in the hash. /// @return value The resultant hash of the two bytes32 elements. function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } /// @notice Sets the distributor contract /// @param _distributor Address of the distributor function setDistributor(address _distributor) external onlyOwner { if (address(distributor) == address(0)) { distributor = Distributor(_distributor); } else { pendingDistributor = _distributor; distributorEnableDate = block.timestamp + 1 days; } } /// @notice Executes the set distributor function after the timelock function executeSetDistributor() external onlyOwner { require(distributorEnableDate >= block.timestamp, 'not allowed'); distributor = Distributor(pendingDistributor); } fallback() external payable {} receive() external payable {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _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 v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"uint256","name":"newNonce","type":"uint256"}],"name":"NonceIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"name":"OrderCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":true,"internalType":"address","name":"taker","type":"address"},{"indexed":true,"internalType":"uint256","name":"orderType","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"orderHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"OrderFilled","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"EIP712_DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"leaf","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"_verifyProof","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"orderType","type":"uint256"},{"internalType":"uint256","name":"totalAmt","type":"uint256"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"exchange","type":"tuple"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"prePayment","type":"tuple"},{"internalType":"bool","name":"isERC721","type":"bool"},{"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"internalType":"uint256","name":"refererrAmt","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"reservedAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct GolomTrader.Order","name":"o","type":"tuple"}],"name":"cancelOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract Distributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorEnableDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeSetDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"orderType","type":"uint256"},{"internalType":"uint256","name":"totalAmt","type":"uint256"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"exchange","type":"tuple"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"prePayment","type":"tuple"},{"internalType":"bool","name":"isERC721","type":"bool"},{"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"internalType":"uint256","name":"refererrAmt","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"reservedAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct GolomTrader.Order","name":"o","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"p","type":"tuple"}],"name":"fillAsk","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"orderType","type":"uint256"},{"internalType":"uint256","name":"totalAmt","type":"uint256"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"exchange","type":"tuple"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"prePayment","type":"tuple"},{"internalType":"bool","name":"isERC721","type":"bool"},{"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"internalType":"uint256","name":"refererrAmt","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"reservedAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct GolomTrader.Order","name":"o","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"p","type":"tuple"}],"name":"fillBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"orderType","type":"uint256"},{"internalType":"uint256","name":"totalAmt","type":"uint256"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"exchange","type":"tuple"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"prePayment","type":"tuple"},{"internalType":"bool","name":"isERC721","type":"bool"},{"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"internalType":"uint256","name":"refererrAmt","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"reservedAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct GolomTrader.Order","name":"o","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"address","name":"referrer","type":"address"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"p","type":"tuple"}],"name":"fillCriteriaBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"filled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"orderType","type":"uint256"},{"internalType":"uint256","name":"totalAmt","type":"uint256"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"exchange","type":"tuple"},{"components":[{"internalType":"uint256","name":"paymentAmt","type":"uint256"},{"internalType":"address","name":"paymentAddress","type":"address"}],"internalType":"struct GolomTrader.Payment","name":"prePayment","type":"tuple"},{"internalType":"bool","name":"isERC721","type":"bool"},{"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"internalType":"uint256","name":"refererrAmt","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"reservedAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct GolomTrader.Order","name":"o","type":"tuple"}],"name":"validateOrder","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600380546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790553480156200003757600080fd5b506040516200227c3803806200227c8339810160408190526200005a91620001a2565b620000653362000152565b620000708162000152565b6040805180820182526008815267474f4c4f4d2e494f60c01b602091820152815180830183526001808252603160f81b9183019190915282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f928101929092527fe57859c27f57af58eb92116da721df7b2f5c90f2e1323a6e0cca8a7d4758320b928201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101919091523060a082015260c00160408051601f19818403018152919052805160209091012060805250620001d4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620001b557600080fd5b81516001600160a01b0381168114620001cd57600080fd5b9392505050565b608051612085620001f7600039600081816102ff0152610cba01526120856000f3fe60806040526004361061010c5760003560e01c80637ecebe001161009a578063c7977be711610061578063c7977be7146102ed578063cdcca52614610321578063d929309e1461035c578063e18cdf361461037c578063f2fde38b1461038f57005b80637ecebe00146102425780638da5cb5b1461026f57806391e198ea1461028d578063bd78839d146102ad578063bfe10928146102cd57005b8063627cdcb9116100de578063627cdcb9146101c25780636540b5eb146101d7578063715018a6146101ed57806375619ab5146102025780637aebe0d41461022257005b8063288cdc911461011557806335ae205714610155578063461f67f41461016a5780635aa6e6751461018a57005b3661011357005b005b34801561012157600080fd5b50610142610130366004611ad6565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561016157600080fd5b506101136103af565b34801561017657600080fd5b50610113610185366004611b36565b610446565b34801561019657600080fd5b506004546101aa906001600160a01b031681565b6040516001600160a01b03909116815260200161014c565b3480156101ce57600080fd5b50610113610716565b3480156101e357600080fd5b5061014260075481565b3480156101f957600080fd5b50610113610772565b34801561020e57600080fd5b5061011361021d366004611b89565b6107a8565b34801561022e57600080fd5b5061011361023d366004611bc1565b610831565b34801561024e57600080fd5b5061014261025d366004611b89565b60016020526000908152604090205481565b34801561027b57600080fd5b506000546001600160a01b03166101aa565b34801561029957600080fd5b506101136102a8366004611c94565b61090e565b3480156102b957600080fd5b506101136102c8366004611d57565b610c19565b3480156102d957600080fd5b506005546101aa906001600160a01b031681565b3480156102f957600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b34801561032d57600080fd5b5061034161033c366004611d57565b610c9b565b6040805193845260208401929092529082015260600161014c565b34801561036857600080fd5b506006546101aa906001600160a01b031681565b61011361038a366004611b36565b610ef7565b34801561039b57600080fd5b506101136103aa366004611b89565b611539565b6000546001600160a01b031633146103e25760405162461bcd60e51b81526004016103d990611d74565b60405180910390fd5b4260075410156104225760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016103d9565b600654600580546001600160a01b0319166001600160a01b03909216919091179055565b80358361016086013561046160e088013560a0890135611dbf565b61046b9190611dbf565b6104759190611dd7565b61047f9190611dbf565b61048d846080870135611dd7565b1161049757600080fd5b60006104ab6101c086016101a08701611b89565b6001600160a01b0316146104e8576104cb6101c085016101a08601611b89565b6001600160a01b0316336001600160a01b0316146104e857600080fd5b83606001356001146104f957600080fd5b600080600061050787610c9b565b9250925092508260031461051a57600080fd5b8581101561052757600080fd5b600082815260026020526040902054610541908790611dbf565b60008381526002602052604090205561056261014088016101208901611e04565b1561061357856001146105875760405162461bcd60e51b81526004016103d990611e21565b60006105966020890189611b89565b90506001600160a01b0381166323b872dd336105b860608c0160408d01611b89565b8b602001356040518463ffffffff1660e01b81526004016105db93929190611e58565b600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b505050505061069d565b60006106226020890189611b89565b90506001600160a01b03811663f242432a3361064460608c0160408d01611b89565b8b602001358b6040518563ffffffff1660e01b81526004016106699493929190611e7c565b600060405180830381600087803b15801561068357600080fd5b505af1158015610697573d6000803e3d6000fd5b50505050505b60016106af6060890160408a01611b89565b6001600160a01b0316337f5ff9e72404463058acdc1a7367b634d29a9c3c5aa4d41dddf6321b586afb5aed856106e98b60808e0135611dd7565b6040805192835260208301919091520160405180910390a461070d878787876115d1565b50505050505050565b3360009081526001602052604081208054829061073290611eb4565b918290555060405181815290915033907fa82a649bbd060c9099cd7b7326e2b0dc9e9af0836480e0f849dc9eaa79710b3b9060200160405180910390a250565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016103d990611d74565b6107a660006118c4565b565b6000546001600160a01b031633146107d25760405162461bcd60e51b81526004016103d990611d74565b6005546001600160a01b031661080257600580546001600160a01b0383166001600160a01b031990911617905550565b600680546001600160a01b0319166001600160a01b03831617905561082a4262015180611dbf565b6007555b50565b60008360405160200161084691815260200190565b60405160208183030381529060405280519060200120905060005b82518110156108c857600083828151811061087e5761087e611ecf565b602002602001015190508083116108a457600083815260208290526040902092506108b5565b600081815260208490526040902092505b50806108c081611eb4565b915050610861565b508281146109085760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b60448201526064016103d9565b50505050565b61016087013561092660e089013560a08a0135611dbf565b6109309190611dbf565b8760800135101561094057600080fd5b60006109546101c089016101a08a01611b89565b6001600160a01b031614610991576109746101c088016101a08901611b89565b6001600160a01b0316336001600160a01b03161461099157600080fd5b86606001356002146109a257600080fd5b60008060006109b08a610c9b565b925092509250826003146109c357600080fd5b888110156109d057600080fd5b6000828152600260205260409020546109ea908a90611dbf565b6000838152600260205260409020556101808a013515610a4757610a47888b610180013589898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061083192505050565b610a596101408b016101208c01611e04565b15610b095788600114610a7e5760405162461bcd60e51b81526004016103d990611e21565b6000610a8d60208c018c611b89565b9050806001600160a01b03166323b872dd338d6040016020810190610ab29190611b89565b8c6040518463ffffffff1660e01b8152600401610ad193929190611e58565b600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b5050505050610b92565b6000610b1860208c018c611b89565b9050806001600160a01b031663f242432a338d6040016020810190610b3d9190611b89565b8c8e6040518563ffffffff1660e01b8152600401610b5e9493929190611e7c565b600060405180830381600087803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b50505050505b6002610ba460608c0160408d01611b89565b6001600160a01b0316336001600160a01b03167f5ff9e72404463058acdc1a7367b634d29a9c3c5aa4d41dddf6321b586afb5aed858d8f60800135610be99190611dd7565b6040805192835260208301919091520160405180910390a4610c0d8a8a87876115d1565b50505050505050505050565b33610c2a6060830160408401611b89565b6001600160a01b031614610c3d57600080fd5b6000610c4882610c9b565b509150610c5d90506101408301356001611dbf565b60008281526002602052604080822092909255905182917f5152abf959f6564662358c2e52b702259b78bac5ee7842a0f01937e670efcc7d91a25050565b600080600080610caa85611914565b60405161190160f01b60208201527f000000000000000000000000000000000000000000000000000000000000000060228201526042810182905290915060009060620160408051601f19818403018152919052805160209091012090506000600182610d1f6102208a016102008b01611ee5565b6040805160008152602081018083529390935260ff909116908201526102208901356060820152610240890135608082015260a0016020604051602081039080840390855afa158015610d76573d6000803e3d6000fd5b505060408051601f1901519250610d94915060608901908901611b89565b6001600160a01b0316816001600160a01b031614610de85760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016103d9565b610df86060880160408901611b89565b6001600160a01b0316816001600160a01b031614610e23576000836000955095509550505050610ef0565b866101e00135421115610e43576001836000955095509550505050610ef0565b60016000610e5760608a0160408b01611b89565b6001600160a01b03166001600160a01b0316815260200190815260200160002054876101c0013514610e96576002836000955095509550505050610ef0565b60008381526002602052604090205461014088013511610ec3576002836000955095509550505050610ef0565b6000838152600260205260409020546003908490610ee6906101408b0135611f08565b9550955095505050505b9193909250565b612710610f0960808601356032611dd7565b610f139190611f1f565b610160850135610f2b60e087013560a0880135611dbf565b610f359190611dbf565b610f3f9190611dbf565b84608001351015610f855760405162461bcd60e51b815260206004820152601060248201526f616d74206e6f74206d61746368696e6760801b60448201526064016103d9565b8035610f95846080870135611dd7565b610f9f9190611dbf565b341015610fd65760405162461bcd60e51b81526020600482015260056024820152646d676d746d60d81b60448201526064016103d9565b6000610fea6101c086016101a08701611b89565b6001600160a01b0316146110275761100a6101c085016101a08601611b89565b6001600160a01b0316336001600160a01b03161461102757600080fd5b60608401351561106d5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206f726465725479706560781b60448201526064016103d9565b600080600061107b87610c9b565b925092509250826003146110c35760405162461bcd60e51b815260206004820152600f60248201526e1bdc99195c881b9bdd081d985b1a59608a1b60448201526064016103d9565b8581101561110a5760405162461bcd60e51b81526020600482015260146024820152731bdc99195c88185b1c9958591e48199a5b1b195960621b60448201526064016103d9565b600082815260026020526040902054611124908790611dbf565b60008381526002602052604090205561114561014088016101208901611e04565b156111f0578560011461116a5760405162461bcd60e51b81526004016103d990611e21565b6111776020880188611b89565b6001600160a01b03166323b872dd61119560608a0160408b01611b89565b338a602001356040518463ffffffff1660e01b81526004016111b993929190611e58565b600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b50505050611274565b6111fd6020880188611b89565b6001600160a01b031663f242432a61121b60608a0160408b01611b89565b338a602001358a6040518563ffffffff1660e01b81526004016112419493929190611e7c565b600060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b505050505b6112af8661271061128a60808b01356032611dd7565b6112949190611f1f565b61129e9190611dd7565b6005546001600160a01b0316611944565b6112d56112c08760a08a0135611dd7565b6112d060e08a0160c08b01611b89565b611944565b6112f86112e68760e08a0135611dd7565b6112d06101208a016101008b01611b89565b600087610160013511801561131557506001600160a01b03851615155b156113ad5761133261132c876101608a0135611dd7565b86611944565b6113a88661016089013560e08a013560a08b013561271061135860808e01356032611dd7565b6113629190611f1f565b6113709060808e0135611f08565b61137a9190611f08565b6113849190611f08565b61138e9190611f08565b6113989190611dd7565b6112d060608a0160408b01611b89565b6113e5565b6113e58660e089013560a08a01356127106113cd60808d01356032611dd7565b6113d79190611f1f565b61137a9060808d0135611f08565b6113fa84356112d06040870160208801611b89565b6005546040805180820182526001600160a01b0390921691634e2a875c91819061142a9060608d01908d01611b89565b6001600160a01b0316815260200161144860e08c0160c08d01611b89565b6001600160a01b031690528861271061146660808d01356032611dd7565b6114709190611f1f565b61147a9190611dd7565b6040518363ffffffff1660e01b8152600401611497929190611f41565b600060405180830381600087803b1580156114b157600080fd5b505af11580156114c5573d6000803e3d6000fd5b50600092503391506114df905060608a0160408b01611b89565b6001600160a01b03167f5ff9e72404463058acdc1a7367b634d29a9c3c5aa4d41dddf6321b586afb5aed856115188b60808e0135611dd7565b6040805192835260208301919091520160405180910390a450505050505050565b6000546001600160a01b031633146115635760405162461bcd60e51b81526004016103d990611d74565b6001600160a01b0381166115c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d9565b61082e816118c4565b6000836127106115e660808801356032611dd7565b6115f09190611f1f565b6115fa9190611dd7565b6003549091506001600160a01b03166323b872dd61161e6060880160408901611b89565b3061162d8860808b0135611dd7565b6040518463ffffffff1660e01b815260040161164b93929190611e58565b6020604051808303816000875af115801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e9190611f82565b506003546001600160a01b0316632e1a7d4d6116ae866080890135611dd7565b6040518263ffffffff1660e01b81526004016116cc91815260200190565b600060405180830381600087803b1580156116e657600080fd5b505af11580156116fa573d6000803e3d6000fd5b505060055461171592508391506001600160a01b0316611944565b6117366117268560a0880135611dd7565b6112d060e0880160c08901611b89565b6117596117478560e0880135611dd7565b6112d061012088016101008901611b89565b600085610160013511801561177657506001600160a01b03831615155b156117f45761179361178d85610160880135611dd7565b84611944565b6117ef82358561016088013560e089013560a08a01356117b78760808d0135611f08565b6117c19190611f08565b6117cb9190611f08565b6117d59190611f08565b6117df9190611dd7565b6117e99190611f08565b33611944565b611812565b61181282358560e088013560a08901356117c18660808c0135611f08565b61182782356112d06040850160208601611b89565b600554604080518082019091523381526001600160a01b0390911690634e2a875c906020810161185d60e08a0160c08b01611b89565b6001600160a01b031690526040516001600160e01b031960e084901b16815261188b91908590600401611f41565b600060405180830381600087803b1580156118a557600080fd5b505af11580156118b9573d6000803e3d6000fd5b505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061193e826040518060400160405280856101c001358152602001856101e00135815250611986565b92915050565b8115611982576040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611980573d6000803e3d6000fd5b505b5050565b60007f927713a6a2bbbbf81b9d3bfa3af9ab935fb4b6053d9d9055f0ea69a28d8324676119b66020850185611b89565b60208501356119cb6060870160408801611b89565b866060013587608001356119e18960a001611a61565b6119ed8a60e001611a61565b6119ff6101408c016101208d01611e04565b8b61014001358c61016001358d61018001358e6101a0016020810190611a259190611b89565b8e604051602001611a439e9d9c9b9a99989796959493929190611fc2565b60405160208183030381529060405280519060200120905092915050565b60007f930082631ee6130d8146e71be66ee2af78081e142d431f763e505c2d73fa4be18235611a966040850160208601611b89565b6040805160208101949094528301919091526001600160a01b03166060820152608001604051602081830303815290604052805190602001209050919050565b600060208284031215611ae857600080fd5b5035919050565b60006102608284031215611b0257600080fd5b50919050565b80356001600160a01b0381168114611b1f57600080fd5b919050565b600060408284031215611b0257600080fd5b6000806000806102e08587031215611b4d57600080fd5b611b578686611aef565b93506102608501359250611b6e6102808601611b08565b9150611b7e866102a08701611b24565b905092959194509250565b600060208284031215611b9b57600080fd5b611ba482611b08565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611bd657600080fd5b833592506020808501359250604085013567ffffffffffffffff80821115611bfd57600080fd5b818701915087601f830112611c1157600080fd5b813581811115611c2357611c23611bab565b8060051b604051601f19603f83011681018181108582111715611c4857611c48611bab565b60405291825284820192508381018501918a831115611c6657600080fd5b938501935b82851015611c8457843584529385019392850192611c6b565b8096505050505050509250925092565b6000806000806000806000610320888a031215611cb057600080fd5b611cba8989611aef565b9650610260880135955061028088013594506102a088013567ffffffffffffffff80821115611ce857600080fd5b818a0191508a601f830112611cfc57600080fd5b813581811115611d0b57600080fd5b8b60208260051b8501011115611d2057600080fd5b602083019650809550505050611d396102c08901611b08565b9150611d49896102e08a01611b24565b905092959891949750929550565b60006102608284031215611d6a57600080fd5b611ba48383611aef565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611dd257611dd2611da9565b500190565b6000816000190483118215151615611df157611df1611da9565b500290565b801515811461082e57600080fd5b600060208284031215611e1657600080fd5b8135611ba481611df6565b60208082526017908201527f6f6e6c7920312065726337323120617420312074696d65000000000000000000604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6000600019821415611ec857611ec8611da9565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ef757600080fd5b813560ff81168114611ba457600080fd5b600082821015611f1a57611f1a611da9565b500390565b600082611f3c57634e487b7160e01b600052601260045260246000fd5b500490565b60608101818460005b6002811015611f725781516001600160a01b0316835260209283019290910190600101611f4a565b5050508260408301529392505050565b600060208284031215611f9457600080fd5b8151611ba481611df6565b8060005b6002811015610908578151845260209384019390910190600101611fa3565b8e81526001600160a01b038e81166020830152604082018e90528c81166060830152608082018c905260a082018b905260c082018a905260e0820189905287151561010083015261012082018790526101408201869052610160820185905283166101808201526101e0810161203c6101a0830184611f9f565b9f9e50505050505050505050505050505056fea2646970667358221220e14178adbeb150feadbd211da8ee1044e6fbfabd57d982d82d1f0cc30dd330d664736f6c634300080b0033000000000000000000000000552d2e380987c8b3c096d9069ea1bb8df432b5fc
Deployed Bytecode
0x60806040526004361061010c5760003560e01c80637ecebe001161009a578063c7977be711610061578063c7977be7146102ed578063cdcca52614610321578063d929309e1461035c578063e18cdf361461037c578063f2fde38b1461038f57005b80637ecebe00146102425780638da5cb5b1461026f57806391e198ea1461028d578063bd78839d146102ad578063bfe10928146102cd57005b8063627cdcb9116100de578063627cdcb9146101c25780636540b5eb146101d7578063715018a6146101ed57806375619ab5146102025780637aebe0d41461022257005b8063288cdc911461011557806335ae205714610155578063461f67f41461016a5780635aa6e6751461018a57005b3661011357005b005b34801561012157600080fd5b50610142610130366004611ad6565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561016157600080fd5b506101136103af565b34801561017657600080fd5b50610113610185366004611b36565b610446565b34801561019657600080fd5b506004546101aa906001600160a01b031681565b6040516001600160a01b03909116815260200161014c565b3480156101ce57600080fd5b50610113610716565b3480156101e357600080fd5b5061014260075481565b3480156101f957600080fd5b50610113610772565b34801561020e57600080fd5b5061011361021d366004611b89565b6107a8565b34801561022e57600080fd5b5061011361023d366004611bc1565b610831565b34801561024e57600080fd5b5061014261025d366004611b89565b60016020526000908152604090205481565b34801561027b57600080fd5b506000546001600160a01b03166101aa565b34801561029957600080fd5b506101136102a8366004611c94565b61090e565b3480156102b957600080fd5b506101136102c8366004611d57565b610c19565b3480156102d957600080fd5b506005546101aa906001600160a01b031681565b3480156102f957600080fd5b506101427f8e467fafd86120a38a2d604e9d7fcc638b0d9d93cb749c065826e6e0ff3ac44681565b34801561032d57600080fd5b5061034161033c366004611d57565b610c9b565b6040805193845260208401929092529082015260600161014c565b34801561036857600080fd5b506006546101aa906001600160a01b031681565b61011361038a366004611b36565b610ef7565b34801561039b57600080fd5b506101136103aa366004611b89565b611539565b6000546001600160a01b031633146103e25760405162461bcd60e51b81526004016103d990611d74565b60405180910390fd5b4260075410156104225760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016103d9565b600654600580546001600160a01b0319166001600160a01b03909216919091179055565b80358361016086013561046160e088013560a0890135611dbf565b61046b9190611dbf565b6104759190611dd7565b61047f9190611dbf565b61048d846080870135611dd7565b1161049757600080fd5b60006104ab6101c086016101a08701611b89565b6001600160a01b0316146104e8576104cb6101c085016101a08601611b89565b6001600160a01b0316336001600160a01b0316146104e857600080fd5b83606001356001146104f957600080fd5b600080600061050787610c9b565b9250925092508260031461051a57600080fd5b8581101561052757600080fd5b600082815260026020526040902054610541908790611dbf565b60008381526002602052604090205561056261014088016101208901611e04565b1561061357856001146105875760405162461bcd60e51b81526004016103d990611e21565b60006105966020890189611b89565b90506001600160a01b0381166323b872dd336105b860608c0160408d01611b89565b8b602001356040518463ffffffff1660e01b81526004016105db93929190611e58565b600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b505050505061069d565b60006106226020890189611b89565b90506001600160a01b03811663f242432a3361064460608c0160408d01611b89565b8b602001358b6040518563ffffffff1660e01b81526004016106699493929190611e7c565b600060405180830381600087803b15801561068357600080fd5b505af1158015610697573d6000803e3d6000fd5b50505050505b60016106af6060890160408a01611b89565b6001600160a01b0316337f5ff9e72404463058acdc1a7367b634d29a9c3c5aa4d41dddf6321b586afb5aed856106e98b60808e0135611dd7565b6040805192835260208301919091520160405180910390a461070d878787876115d1565b50505050505050565b3360009081526001602052604081208054829061073290611eb4565b918290555060405181815290915033907fa82a649bbd060c9099cd7b7326e2b0dc9e9af0836480e0f849dc9eaa79710b3b9060200160405180910390a250565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016103d990611d74565b6107a660006118c4565b565b6000546001600160a01b031633146107d25760405162461bcd60e51b81526004016103d990611d74565b6005546001600160a01b031661080257600580546001600160a01b0383166001600160a01b031990911617905550565b600680546001600160a01b0319166001600160a01b03831617905561082a4262015180611dbf565b6007555b50565b60008360405160200161084691815260200190565b60405160208183030381529060405280519060200120905060005b82518110156108c857600083828151811061087e5761087e611ecf565b602002602001015190508083116108a457600083815260208290526040902092506108b5565b600081815260208490526040902092505b50806108c081611eb4565b915050610861565b508281146109085760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b60448201526064016103d9565b50505050565b61016087013561092660e089013560a08a0135611dbf565b6109309190611dbf565b8760800135101561094057600080fd5b60006109546101c089016101a08a01611b89565b6001600160a01b031614610991576109746101c088016101a08901611b89565b6001600160a01b0316336001600160a01b03161461099157600080fd5b86606001356002146109a257600080fd5b60008060006109b08a610c9b565b925092509250826003146109c357600080fd5b888110156109d057600080fd5b6000828152600260205260409020546109ea908a90611dbf565b6000838152600260205260409020556101808a013515610a4757610a47888b610180013589898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061083192505050565b610a596101408b016101208c01611e04565b15610b095788600114610a7e5760405162461bcd60e51b81526004016103d990611e21565b6000610a8d60208c018c611b89565b9050806001600160a01b03166323b872dd338d6040016020810190610ab29190611b89565b8c6040518463ffffffff1660e01b8152600401610ad193929190611e58565b600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b5050505050610b92565b6000610b1860208c018c611b89565b9050806001600160a01b031663f242432a338d6040016020810190610b3d9190611b89565b8c8e6040518563ffffffff1660e01b8152600401610b5e9493929190611e7c565b600060405180830381600087803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b50505050505b6002610ba460608c0160408d01611b89565b6001600160a01b0316336001600160a01b03167f5ff9e72404463058acdc1a7367b634d29a9c3c5aa4d41dddf6321b586afb5aed858d8f60800135610be99190611dd7565b6040805192835260208301919091520160405180910390a4610c0d8a8a87876115d1565b50505050505050505050565b33610c2a6060830160408401611b89565b6001600160a01b031614610c3d57600080fd5b6000610c4882610c9b565b509150610c5d90506101408301356001611dbf565b60008281526002602052604080822092909255905182917f5152abf959f6564662358c2e52b702259b78bac5ee7842a0f01937e670efcc7d91a25050565b600080600080610caa85611914565b60405161190160f01b60208201527f8e467fafd86120a38a2d604e9d7fcc638b0d9d93cb749c065826e6e0ff3ac44660228201526042810182905290915060009060620160408051601f19818403018152919052805160209091012090506000600182610d1f6102208a016102008b01611ee5565b6040805160008152602081018083529390935260ff909116908201526102208901356060820152610240890135608082015260a0016020604051602081039080840390855afa158015610d76573d6000803e3d6000fd5b505060408051601f1901519250610d94915060608901908901611b89565b6001600160a01b0316816001600160a01b031614610de85760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016103d9565b610df86060880160408901611b89565b6001600160a01b0316816001600160a01b031614610e23576000836000955095509550505050610ef0565b866101e00135421115610e43576001836000955095509550505050610ef0565b60016000610e5760608a0160408b01611b89565b6001600160a01b03166001600160a01b0316815260200190815260200160002054876101c0013514610e96576002836000955095509550505050610ef0565b60008381526002602052604090205461014088013511610ec3576002836000955095509550505050610ef0565b6000838152600260205260409020546003908490610ee6906101408b0135611f08565b9550955095505050505b9193909250565b612710610f0960808601356032611dd7565b610f139190611f1f565b610160850135610f2b60e087013560a0880135611dbf565b610f359190611dbf565b610f3f9190611dbf565b84608001351015610f855760405162461bcd60e51b815260206004820152601060248201526f616d74206e6f74206d61746368696e6760801b60448201526064016103d9565b8035610f95846080870135611dd7565b610f9f9190611dbf565b341015610fd65760405162461bcd60e51b81526020600482015260056024820152646d676d746d60d81b60448201526064016103d9565b6000610fea6101c086016101a08701611b89565b6001600160a01b0316146110275761100a6101c085016101a08601611b89565b6001600160a01b0316336001600160a01b03161461102757600080fd5b60608401351561106d5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206f726465725479706560781b60448201526064016103d9565b600080600061107b87610c9b565b925092509250826003146110c35760405162461bcd60e51b815260206004820152600f60248201526e1bdc99195c881b9bdd081d985b1a59608a1b60448201526064016103d9565b8581101561110a5760405162461bcd60e51b81526020600482015260146024820152731bdc99195c88185b1c9958591e48199a5b1b195960621b60448201526064016103d9565b600082815260026020526040902054611124908790611dbf565b60008381526002602052604090205561114561014088016101208901611e04565b156111f0578560011461116a5760405162461bcd60e51b81526004016103d990611e21565b6111776020880188611b89565b6001600160a01b03166323b872dd61119560608a0160408b01611b89565b338a602001356040518463ffffffff1660e01b81526004016111b993929190611e58565b600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b50505050611274565b6111fd6020880188611b89565b6001600160a01b031663f242432a61121b60608a0160408b01611b89565b338a602001358a6040518563ffffffff1660e01b81526004016112419493929190611e7c565b600060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b505050505b6112af8661271061128a60808b01356032611dd7565b6112949190611f1f565b61129e9190611dd7565b6005546001600160a01b0316611944565b6112d56112c08760a08a0135611dd7565b6112d060e08a0160c08b01611b89565b611944565b6112f86112e68760e08a0135611dd7565b6112d06101208a016101008b01611b89565b600087610160013511801561131557506001600160a01b03851615155b156113ad5761133261132c876101608a0135611dd7565b86611944565b6113a88661016089013560e08a013560a08b013561271061135860808e01356032611dd7565b6113629190611f1f565b6113709060808e0135611f08565b61137a9190611f08565b6113849190611f08565b61138e9190611f08565b6113989190611dd7565b6112d060608a0160408b01611b89565b6113e5565b6113e58660e089013560a08a01356127106113cd60808d01356032611dd7565b6113d79190611f1f565b61137a9060808d0135611f08565b6113fa84356112d06040870160208801611b89565b6005546040805180820182526001600160a01b0390921691634e2a875c91819061142a9060608d01908d01611b89565b6001600160a01b0316815260200161144860e08c0160c08d01611b89565b6001600160a01b031690528861271061146660808d01356032611dd7565b6114709190611f1f565b61147a9190611dd7565b6040518363ffffffff1660e01b8152600401611497929190611f41565b600060405180830381600087803b1580156114b157600080fd5b505af11580156114c5573d6000803e3d6000fd5b50600092503391506114df905060608a0160408b01611b89565b6001600160a01b03167f5ff9e72404463058acdc1a7367b634d29a9c3c5aa4d41dddf6321b586afb5aed856115188b60808e0135611dd7565b6040805192835260208301919091520160405180910390a450505050505050565b6000546001600160a01b031633146115635760405162461bcd60e51b81526004016103d990611d74565b6001600160a01b0381166115c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d9565b61082e816118c4565b6000836127106115e660808801356032611dd7565b6115f09190611f1f565b6115fa9190611dd7565b6003549091506001600160a01b03166323b872dd61161e6060880160408901611b89565b3061162d8860808b0135611dd7565b6040518463ffffffff1660e01b815260040161164b93929190611e58565b6020604051808303816000875af115801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e9190611f82565b506003546001600160a01b0316632e1a7d4d6116ae866080890135611dd7565b6040518263ffffffff1660e01b81526004016116cc91815260200190565b600060405180830381600087803b1580156116e657600080fd5b505af11580156116fa573d6000803e3d6000fd5b505060055461171592508391506001600160a01b0316611944565b6117366117268560a0880135611dd7565b6112d060e0880160c08901611b89565b6117596117478560e0880135611dd7565b6112d061012088016101008901611b89565b600085610160013511801561177657506001600160a01b03831615155b156117f45761179361178d85610160880135611dd7565b84611944565b6117ef82358561016088013560e089013560a08a01356117b78760808d0135611f08565b6117c19190611f08565b6117cb9190611f08565b6117d59190611f08565b6117df9190611dd7565b6117e99190611f08565b33611944565b611812565b61181282358560e088013560a08901356117c18660808c0135611f08565b61182782356112d06040850160208601611b89565b600554604080518082019091523381526001600160a01b0390911690634e2a875c906020810161185d60e08a0160c08b01611b89565b6001600160a01b031690526040516001600160e01b031960e084901b16815261188b91908590600401611f41565b600060405180830381600087803b1580156118a557600080fd5b505af11580156118b9573d6000803e3d6000fd5b505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061193e826040518060400160405280856101c001358152602001856101e00135815250611986565b92915050565b8115611982576040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611980573d6000803e3d6000fd5b505b5050565b60007f927713a6a2bbbbf81b9d3bfa3af9ab935fb4b6053d9d9055f0ea69a28d8324676119b66020850185611b89565b60208501356119cb6060870160408801611b89565b866060013587608001356119e18960a001611a61565b6119ed8a60e001611a61565b6119ff6101408c016101208d01611e04565b8b61014001358c61016001358d61018001358e6101a0016020810190611a259190611b89565b8e604051602001611a439e9d9c9b9a99989796959493929190611fc2565b60405160208183030381529060405280519060200120905092915050565b60007f930082631ee6130d8146e71be66ee2af78081e142d431f763e505c2d73fa4be18235611a966040850160208601611b89565b6040805160208101949094528301919091526001600160a01b03166060820152608001604051602081830303815290604052805190602001209050919050565b600060208284031215611ae857600080fd5b5035919050565b60006102608284031215611b0257600080fd5b50919050565b80356001600160a01b0381168114611b1f57600080fd5b919050565b600060408284031215611b0257600080fd5b6000806000806102e08587031215611b4d57600080fd5b611b578686611aef565b93506102608501359250611b6e6102808601611b08565b9150611b7e866102a08701611b24565b905092959194509250565b600060208284031215611b9b57600080fd5b611ba482611b08565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611bd657600080fd5b833592506020808501359250604085013567ffffffffffffffff80821115611bfd57600080fd5b818701915087601f830112611c1157600080fd5b813581811115611c2357611c23611bab565b8060051b604051601f19603f83011681018181108582111715611c4857611c48611bab565b60405291825284820192508381018501918a831115611c6657600080fd5b938501935b82851015611c8457843584529385019392850192611c6b565b8096505050505050509250925092565b6000806000806000806000610320888a031215611cb057600080fd5b611cba8989611aef565b9650610260880135955061028088013594506102a088013567ffffffffffffffff80821115611ce857600080fd5b818a0191508a601f830112611cfc57600080fd5b813581811115611d0b57600080fd5b8b60208260051b8501011115611d2057600080fd5b602083019650809550505050611d396102c08901611b08565b9150611d49896102e08a01611b24565b905092959891949750929550565b60006102608284031215611d6a57600080fd5b611ba48383611aef565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611dd257611dd2611da9565b500190565b6000816000190483118215151615611df157611df1611da9565b500290565b801515811461082e57600080fd5b600060208284031215611e1657600080fd5b8135611ba481611df6565b60208082526017908201527f6f6e6c7920312065726337323120617420312074696d65000000000000000000604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6000600019821415611ec857611ec8611da9565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ef757600080fd5b813560ff81168114611ba457600080fd5b600082821015611f1a57611f1a611da9565b500390565b600082611f3c57634e487b7160e01b600052601260045260246000fd5b500490565b60608101818460005b6002811015611f725781516001600160a01b0316835260209283019290910190600101611f4a565b5050508260408301529392505050565b600060208284031215611f9457600080fd5b8151611ba481611df6565b8060005b6002811015610908578151845260209384019390910190600101611fa3565b8e81526001600160a01b038e81166020830152604082018e90528c81166060830152608082018c905260a082018b905260c082018a905260e0820189905287151561010083015261012082018790526101408201869052610160820185905283166101808201526101e0810161203c6101a0830184611f9f565b9f9e50505050505050505050505050505056fea2646970667358221220e14178adbeb150feadbd211da8ee1044e6fbfabd57d982d82d1f0cc30dd330d664736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000552d2e380987c8b3c096d9069ea1bb8df432b5fc
-----Decoded View---------------
Arg [0] : _governance (address): 0x552d2E380987C8B3C096d9069EA1bb8df432b5Fc
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000552d2e380987c8b3c096d9069ea1bb8df432b5fc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.