Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 16763354 | 555 days ago | IN | 0 ETH | 0.01300218 |
Loading...
Loading
Contract Name:
CoWUidGenerator
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-05 */ // SPDX-License-Identifier: LGPL-3.0-or-later pragma solidity ^0.7.6; pragma abicoder v2; interface GPv2SettlementContract { function domainSeparator() external view returns (bytes32); } contract CoWUidGenerator { using GPv2Order for GPv2Order.Data; GPv2SettlementContract settlement = GPv2SettlementContract(0x9008D19f58AAbD9eD0D60971565AA8510560ab41); function getUid( address sellToken, address buyToken, address receiver, uint256 sellAmount, uint256 buyAmount, uint32 validTo, bytes32 appData, uint256 feeAmount, bool isSell, bool partiallyFillable) public view returns (bytes32 hash, bytes memory encoded){ bytes32 kind = 0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc; if (isSell) { kind = 0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775; } GPv2Order.Data memory order = GPv2Order.Data( sellToken, buyToken, receiver, sellAmount, buyAmount, validTo, appData, feeAmount, kind, partiallyFillable, 0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9, 0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9 ); hash = order.hash(settlement.domainSeparator()); encoded = abi.encode(order); } } library GPv2Order { /// @dev The complete data for a Gnosis Protocol order. This struct contains /// all order parameters that are signed for submitting to GP. struct Data { address sellToken; address buyToken; address receiver; uint256 sellAmount; uint256 buyAmount; uint32 validTo; bytes32 appData; uint256 feeAmount; bytes32 kind; bool partiallyFillable; bytes32 sellTokenBalance; bytes32 buyTokenBalance; } /// @dev The order EIP-712 type hash for the [`GPv2Order.Data`] struct. /// /// This value is pre-computed from the following expression: /// ``` /// keccak256( /// "Order(" + /// "address sellToken," + /// "address buyToken," + /// "address receiver," + /// "uint256 sellAmount," + /// "uint256 buyAmount," + /// "uint32 validTo," + /// "bytes32 appData," + /// "uint256 feeAmount," + /// "string kind," + /// "bool partiallyFillable" + /// "string sellTokenBalance" + /// "string buyTokenBalance" + /// ")" /// ) /// ``` bytes32 internal constant TYPE_HASH = hex"d5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489"; /// @dev The marker value for a sell order for computing the order struct /// hash. This allows the EIP-712 compatible wallets to display a /// descriptive string for the order kind (instead of 0 or 1). /// /// This value is pre-computed from the following expression: /// ``` /// keccak256("sell") /// ``` bytes32 internal constant KIND_SELL = hex"f3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775"; /// @dev The OrderKind marker value for a buy order for computing the order /// struct hash. /// /// This value is pre-computed from the following expression: /// ``` /// keccak256("buy") /// ``` bytes32 internal constant KIND_BUY = hex"6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc"; /// @dev The TokenBalance marker value for using direct ERC20 balances for /// computing the order struct hash. /// /// This value is pre-computed from the following expression: /// ``` /// keccak256("erc20") /// ``` bytes32 internal constant BALANCE_ERC20 = hex"5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9"; /// @dev The TokenBalance marker value for using Balancer Vault external /// balances (in order to re-use Vault ERC20 approvals) for computing the /// order struct hash. /// /// This value is pre-computed from the following expression: /// ``` /// keccak256("external") /// ``` bytes32 internal constant BALANCE_EXTERNAL = hex"abee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632"; /// @dev The TokenBalance marker value for using Balancer Vault internal /// balances for computing the order struct hash. /// /// This value is pre-computed from the following expression: /// ``` /// keccak256("internal") /// ``` bytes32 internal constant BALANCE_INTERNAL = hex"4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce"; /// @dev Marker address used to indicate that the receiver of the trade /// proceeds should the owner of the order. /// /// This is chosen to be `address(0)` for gas efficiency as it is expected /// to be the most common case. address internal constant RECEIVER_SAME_AS_OWNER = address(0); /// @dev The byte length of an order unique identifier. uint256 internal constant UID_LENGTH = 56; /// @dev Returns the actual receiver for an order. This function checks /// whether or not the [`receiver`] field uses the marker value to indicate /// it is the same as the order owner. /// /// @return receiver The actual receiver of trade proceeds. function actualReceiver(Data memory order, address owner) internal pure returns (address receiver) { if (order.receiver == RECEIVER_SAME_AS_OWNER) { receiver = owner; } else { receiver = order.receiver; } } /// @dev Return the EIP-712 signing hash for the specified order. /// /// @param order The order to compute the EIP-712 signing hash for. /// @param domainSeparator The EIP-712 domain separator to use. /// @return orderDigest The 32 byte EIP-712 struct hash. function hash(Data memory order, bytes32 domainSeparator) internal pure returns (bytes32 orderDigest) { bytes32 structHash; // NOTE: Compute the EIP-712 order struct hash in place. As suggested // in the EIP proposal, noting that the order struct has 10 fields, and // including the type hash `(12 + 1) * 32 = 416` bytes to hash. // <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md#rationale-for-encodedata> // solhint-disable-next-line no-inline-assembly assembly { let dataStart := sub(order, 32) let temp := mload(dataStart) mstore(dataStart, TYPE_HASH) structHash := keccak256(dataStart, 416) mstore(dataStart, temp) } // NOTE: Now that we have the struct hash, compute the EIP-712 signing // hash using scratch memory past the free memory pointer. The signing // hash is computed from `"\x19\x01" || domainSeparator || structHash`. // <https://docs.soliditylang.org/en/v0.7.6/internals/layout_in_memory.html#layout-in-memory> // <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md#specification> // solhint-disable-next-line no-inline-assembly assembly { let freeMemoryPointer := mload(0x40) mstore(freeMemoryPointer, "\x19\x01") mstore(add(freeMemoryPointer, 2), domainSeparator) mstore(add(freeMemoryPointer, 34), structHash) orderDigest := keccak256(freeMemoryPointer, 66) } } /// @dev Packs order UID parameters into the specified memory location. The /// result is equivalent to `abi.encodePacked(...)` with the difference that /// it allows re-using the memory for packing the order UID. /// /// This function reverts if the order UID buffer is not the correct size. /// /// @param orderUid The buffer pack the order UID parameters into. /// @param orderDigest The EIP-712 struct digest derived from the order /// parameters. /// @param owner The address of the user who owns this order. /// @param validTo The epoch time at which the order will stop being valid. function packOrderUidParams( bytes memory orderUid, bytes32 orderDigest, address owner, uint32 validTo ) internal pure { require(orderUid.length == UID_LENGTH, "GPv2: uid buffer overflow"); // NOTE: Write the order UID to the allocated memory buffer. The order // parameters are written to memory in **reverse order** as memory // operations write 32-bytes at a time and we want to use a packed // encoding. This means, for example, that after writing the value of // `owner` to bytes `20:52`, writing the `orderDigest` to bytes `0:32` // will **overwrite** bytes `20:32`. This is desirable as addresses are // only 20 bytes and `20:32` should be `0`s: // // | 1111111111222222222233333333334444444444555555 // byte | 01234567890123456789012345678901234567890123456789012345 // -------+--------------------------------------------------------- // field | [.........orderDigest..........][......owner.......][vT] // -------+--------------------------------------------------------- // mstore | [000000000000000000000000000.vT] // | [00000000000.......owner.......] // | [.........orderDigest..........] // // Additionally, since Solidity `bytes memory` are length prefixed, // 32 needs to be added to all the offsets. // // solhint-disable-next-line no-inline-assembly assembly { mstore(add(orderUid, 56), validTo) mstore(add(orderUid, 52), owner) mstore(add(orderUid, 32), orderDigest) } } /// @dev Extracts specific order information from the standardized unique /// order id of the protocol. /// /// @param orderUid The unique identifier used to represent an order in /// the protocol. This uid is the packed concatenation of the order digest, /// the validTo order parameter and the address of the user who created the /// order. It is used by the user to interface with the contract directly, /// and not by calls that are triggered by the solvers. /// @return orderDigest The EIP-712 signing digest derived from the order /// parameters. /// @return owner The address of the user who owns this order. /// @return validTo The epoch time at which the order will stop being valid. function extractOrderUidParams(bytes calldata orderUid) internal pure returns ( bytes32 orderDigest, address owner, uint32 validTo ) { require(orderUid.length == UID_LENGTH, "GPv2: invalid uid"); // Use assembly to efficiently decode packed calldata. // solhint-disable-next-line no-inline-assembly assembly { orderDigest := calldataload(orderUid.offset) owner := shr(96, calldataload(add(orderUid.offset, 32))) validTo := shr(224, calldataload(add(orderUid.offset, 52))) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bool","name":"isSell","type":"bool"},{"internalType":"bool","name":"partiallyFillable","type":"bool"}],"name":"getUid","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"encoded","type":"bytes"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052739008d19f58aabd9ed0d60971565aa8510560ab416000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006457600080fd5b506107bf806100746000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635871d10a14610030575b600080fd5b61004a6004803603810190610045919061037b565b610061565b604051610058929190610608565b60405180910390f35b6000606060007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc60001b905084156100ba577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677560001b90505b60006040518061018001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a63ffffffff16815260200189815260200188815260200183815260200186151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960001b81526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960001b815250905061025060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b815260040160206040518083038186803b15801561020957600080fd5b505afa15801561021d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102419190610456565b8261028590919063ffffffff16565b9350806040516020016102639190610638565b604051602081830303815290604052925050509a509a98505050505050505050565b6000806020840380517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a08220925080825250506040517f19010000000000000000000000000000000000000000000000000000000000008152836002820152816022820152604281209250505092915050565b60008135905061030c81610716565b92915050565b6000813590506103218161072d565b92915050565b60008135905061033681610744565b92915050565b60008151905061034b81610744565b92915050565b6000813590506103608161075b565b92915050565b60008135905061037581610772565b92915050565b6000806000806000806000806000806101408b8d03121561039b57600080fd5b60006103a98d828e016102fd565b9a505060206103ba8d828e016102fd565b99505060406103cb8d828e016102fd565b98505060606103dc8d828e01610351565b97505060806103ed8d828e01610351565b96505060a06103fe8d828e01610366565b95505060c061040f8d828e01610327565b94505060e06104208d828e01610351565b9350506101006104328d828e01610312565b9250506101206104448d828e01610312565b9150509295989b9194979a5092959850565b60006020828403121561046857600080fd5b60006104768482850161033c565b91505092915050565b61048881610670565b82525050565b61049781610682565b82525050565b6104a68161068e565b82525050565b6104b58161068e565b82525050565b60006104c682610654565b6104d0818561065f565b93506104e08185602086016106d2565b6104e981610705565b840191505092915050565b6101808201600082015161050b600085018261047f565b50602082015161051e602085018261047f565b506040820151610531604085018261047f565b50606082015161054460608501826105ea565b50608082015161055760808501826105ea565b5060a082015161056a60a08501826105f9565b5060c082015161057d60c085018261049d565b5060e082015161059060e08501826105ea565b506101008201516105a561010085018261049d565b506101208201516105ba61012085018261048e565b506101408201516105cf61014085018261049d565b506101608201516105e461016085018261049d565b50505050565b6105f3816106b8565b82525050565b610602816106c2565b82525050565b600060408201905061061d60008301856104ac565b818103602083015261062f81846104bb565b90509392505050565b60006101808201905061064e60008301846104f4565b92915050565b600081519050919050565b600082825260208201905092915050565b600061067b82610698565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b60005b838110156106f05780820151818401526020810190506106d5565b838111156106ff576000848401525b50505050565b6000601f19601f8301169050919050565b61071f81610670565b811461072a57600080fd5b50565b61073681610682565b811461074157600080fd5b50565b61074d8161068e565b811461075857600080fd5b50565b610764816106b8565b811461076f57600080fd5b50565b61077b816106c2565b811461078657600080fd5b5056fea264697066735822122040ad3b53ec465b51bb09cdc3720f0e2ed42693f85c3c5f741297035a59b64be364736f6c63430007060033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635871d10a14610030575b600080fd5b61004a6004803603810190610045919061037b565b610061565b604051610058929190610608565b60405180910390f35b6000606060007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc60001b905084156100ba577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677560001b90505b60006040518061018001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a63ffffffff16815260200189815260200188815260200183815260200186151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960001b81526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960001b815250905061025060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b815260040160206040518083038186803b15801561020957600080fd5b505afa15801561021d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102419190610456565b8261028590919063ffffffff16565b9350806040516020016102639190610638565b604051602081830303815290604052925050509a509a98505050505050505050565b6000806020840380517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a08220925080825250506040517f19010000000000000000000000000000000000000000000000000000000000008152836002820152816022820152604281209250505092915050565b60008135905061030c81610716565b92915050565b6000813590506103218161072d565b92915050565b60008135905061033681610744565b92915050565b60008151905061034b81610744565b92915050565b6000813590506103608161075b565b92915050565b60008135905061037581610772565b92915050565b6000806000806000806000806000806101408b8d03121561039b57600080fd5b60006103a98d828e016102fd565b9a505060206103ba8d828e016102fd565b99505060406103cb8d828e016102fd565b98505060606103dc8d828e01610351565b97505060806103ed8d828e01610351565b96505060a06103fe8d828e01610366565b95505060c061040f8d828e01610327565b94505060e06104208d828e01610351565b9350506101006104328d828e01610312565b9250506101206104448d828e01610312565b9150509295989b9194979a5092959850565b60006020828403121561046857600080fd5b60006104768482850161033c565b91505092915050565b61048881610670565b82525050565b61049781610682565b82525050565b6104a68161068e565b82525050565b6104b58161068e565b82525050565b60006104c682610654565b6104d0818561065f565b93506104e08185602086016106d2565b6104e981610705565b840191505092915050565b6101808201600082015161050b600085018261047f565b50602082015161051e602085018261047f565b506040820151610531604085018261047f565b50606082015161054460608501826105ea565b50608082015161055760808501826105ea565b5060a082015161056a60a08501826105f9565b5060c082015161057d60c085018261049d565b5060e082015161059060e08501826105ea565b506101008201516105a561010085018261049d565b506101208201516105ba61012085018261048e565b506101408201516105cf61014085018261049d565b506101608201516105e461016085018261049d565b50505050565b6105f3816106b8565b82525050565b610602816106c2565b82525050565b600060408201905061061d60008301856104ac565b818103602083015261062f81846104bb565b90509392505050565b60006101808201905061064e60008301846104f4565b92915050565b600081519050919050565b600082825260208201905092915050565b600061067b82610698565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b60005b838110156106f05780820151818401526020810190506106d5565b838111156106ff576000848401525b50505050565b6000601f19601f8301169050919050565b61071f81610670565b811461072a57600080fd5b50565b61073681610682565b811461074157600080fd5b50565b61074d8161068e565b811461075857600080fd5b50565b610764816106b8565b811461076f57600080fd5b50565b61077b816106c2565b811461078657600080fd5b5056fea264697066735822122040ad3b53ec465b51bb09cdc3720f0e2ed42693f85c3c5f741297035a59b64be364736f6c63430007060033
Deployed Bytecode Sourcemap
201:1334:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:1147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;711:12;726:20;758:12;773:66;758:81;;;;854:6;850:112;;;884:66;877:73;;;;850:112;972:27;1003:425;;;;;;;;1032:9;1003:425;;;;;;1056:8;1003:425;;;;;;1079:8;1003:425;;;;;;1102:10;1003:425;;;;1127:9;1003:425;;;;1151:7;1003:425;;;;;;1173:7;1003:425;;;;1195:9;1003:425;;;;1219:4;1003:425;;;;1238:17;1003:425;;;;;;1270:66;1003:425;;;;;;1351:66;1003:425;;;;;972:456;;1446:40;1457:10;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1446:5;:10;;:40;;;;:::i;:::-;1439:47;;1518:5;1507:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;1497:27;;385:1147;;;;;;;;;;;;;;;:::o;6295:1622::-;6403:19;6440:18;6913:2;6906:5;6902:14;6948:9;6942:16;6990:9;6979;6972:28;7049:3;7038:9;7028:25;7014:39;;7085:4;7074:9;7067:23;6870:231;;7658:4;7652:11;7703:10;7684:17;7677:37;7762:15;7758:1;7739:17;7735:25;7728:50;7827:10;7822:2;7803:17;7799:26;7792:46;7896:2;7877:17;7867:32;7852:47;;7612:298;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:143::-;;524:6;518:13;509:22;;540:33;567:5;540:33;:::i;:::-;499:80;;;;:::o;585:139::-;;669:6;656:20;647:29;;685:33;712:5;685:33;:::i;:::-;637:87;;;;:::o;730:137::-;;813:6;800:20;791:29;;829:32;855:5;829:32;:::i;:::-;781:86;;;;:::o;873:1560::-;;;;;;;;;;;1127:3;1115:9;1106:7;1102:23;1098:33;1095:2;;;1144:1;1141;1134:12;1095:2;1187:1;1212:53;1257:7;1248:6;1237:9;1233:22;1212:53;:::i;:::-;1202:63;;1158:117;1314:2;1340:53;1385:7;1376:6;1365:9;1361:22;1340:53;:::i;:::-;1330:63;;1285:118;1442:2;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1413:118;1570:2;1596:53;1641:7;1632:6;1621:9;1617:22;1596:53;:::i;:::-;1586:63;;1541:118;1698:3;1725:53;1770:7;1761:6;1750:9;1746:22;1725:53;:::i;:::-;1715:63;;1669:119;1827:3;1854:52;1898:7;1889:6;1878:9;1874:22;1854:52;:::i;:::-;1844:62;;1798:118;1955:3;1982:53;2027:7;2018:6;2007:9;2003:22;1982:53;:::i;:::-;1972:63;;1926:119;2084:3;2111:53;2156:7;2147:6;2136:9;2132:22;2111:53;:::i;:::-;2101:63;;2055:119;2213:3;2240:50;2282:7;2273:6;2262:9;2258:22;2240:50;:::i;:::-;2230:60;;2184:116;2339:3;2366:50;2408:7;2399:6;2388:9;2384:22;2366:50;:::i;:::-;2356:60;;2310:116;1085:1348;;;;;;;;;;;;;:::o;2439:284::-;;2558:2;2546:9;2537:7;2533:23;2529:32;2526:2;;;2574:1;2571;2564:12;2526:2;2617:1;2642:64;2698:7;2689:6;2678:9;2674:22;2642:64;:::i;:::-;2632:74;;2588:128;2516:207;;;;:::o;2729:108::-;2806:24;2824:5;2806:24;:::i;:::-;2801:3;2794:37;2784:53;;:::o;2843:99::-;2914:21;2929:5;2914:21;:::i;:::-;2909:3;2902:34;2892:50;;:::o;2948:108::-;3025:24;3043:5;3025:24;:::i;:::-;3020:3;3013:37;3003:53;;:::o;3062:118::-;3149:24;3167:5;3149:24;:::i;:::-;3144:3;3137:37;3127:53;;:::o;3186:360::-;;3300:38;3332:5;3300:38;:::i;:::-;3354:70;3417:6;3412:3;3354:70;:::i;:::-;3347:77;;3433:52;3478:6;3473:3;3466:4;3459:5;3455:16;3433:52;:::i;:::-;3510:29;3532:6;3510:29;:::i;:::-;3505:3;3501:39;3494:46;;3276:270;;;;;:::o;3606:2320::-;3745:6;3740:3;3736:16;3839:4;3832:5;3828:16;3822:23;3858:63;3915:4;3910:3;3906:14;3892:12;3858:63;:::i;:::-;3762:169;4017:4;4010:5;4006:16;4000:23;4036:63;4093:4;4088:3;4084:14;4070:12;4036:63;:::i;:::-;3941:168;4195:4;4188:5;4184:16;4178:23;4214:63;4271:4;4266:3;4262:14;4248:12;4214:63;:::i;:::-;4119:168;4375:4;4368:5;4364:16;4358:23;4394:63;4451:4;4446:3;4442:14;4428:12;4394:63;:::i;:::-;4297:170;4554:4;4547:5;4543:16;4537:23;4573:63;4630:4;4625:3;4621:14;4607:12;4573:63;:::i;:::-;4477:169;4731:4;4724:5;4720:16;4714:23;4750:61;4805:4;4800:3;4796:14;4782:12;4750:61;:::i;:::-;4656:165;4906:4;4899:5;4895:16;4889:23;4925:63;4982:4;4977:3;4973:14;4959:12;4925:63;:::i;:::-;4831:167;5085:4;5078:5;5074:16;5068:23;5104:63;5161:4;5156:3;5152:14;5138:12;5104:63;:::i;:::-;5008:169;5259:6;5252:5;5248:18;5242:25;5280:65;5337:6;5332:3;5328:16;5314:12;5280:65;:::i;:::-;5187:168;5450:6;5443:5;5439:18;5433:25;5471:59;5522:6;5517:3;5513:16;5499:12;5471:59;:::i;:::-;5365:175;5634:6;5627:5;5623:18;5617:25;5655:65;5712:6;5707:3;5703:16;5689:12;5655:65;:::i;:::-;5550:180;5823:6;5816:5;5812:18;5806:25;5844:65;5901:6;5896:3;5892:16;5878:12;5844:65;:::i;:::-;5740:179;3714:2212;;;:::o;5932:108::-;6009:24;6027:5;6009:24;:::i;:::-;6004:3;5997:37;5987:53;;:::o;6046:105::-;6121:23;6138:5;6121:23;:::i;:::-;6116:3;6109:36;6099:52;;:::o;6157:419::-;;6334:2;6323:9;6319:18;6311:26;;6347:71;6415:1;6404:9;6400:17;6391:6;6347:71;:::i;:::-;6465:9;6459:4;6455:20;6450:2;6439:9;6435:18;6428:48;6493:76;6564:4;6555:6;6493:76;:::i;:::-;6485:84;;6301:275;;;;;:::o;6582:307::-;;6755:3;6744:9;6740:19;6732:27;;6769:113;6879:1;6868:9;6864:17;6855:6;6769:113;:::i;:::-;6722:167;;;;:::o;6895:98::-;;6980:5;6974:12;6964:22;;6953:40;;;:::o;6999:168::-;;7116:6;7111:3;7104:19;7156:4;7151:3;7147:14;7132:29;;7094:73;;;;:::o;7173:96::-;;7239:24;7257:5;7239:24;:::i;:::-;7228:35;;7218:51;;;:::o;7275:90::-;;7352:5;7345:13;7338:21;7327:32;;7317:48;;;:::o;7371:77::-;;7437:5;7426:16;;7416:32;;;:::o;7454:126::-;;7531:42;7524:5;7520:54;7509:65;;7499:81;;;:::o;7586:77::-;;7652:5;7641:16;;7631:32;;;:::o;7669:93::-;;7745:10;7738:5;7734:22;7723:33;;7713:49;;;:::o;7768:307::-;7836:1;7846:113;7860:6;7857:1;7854:13;7846:113;;;7945:1;7940:3;7936:11;7930:18;7926:1;7921:3;7917:11;7910:39;7882:2;7879:1;7875:10;7870:15;;7846:113;;;7977:6;7974:1;7971:13;7968:2;;;8057:1;8048:6;8043:3;8039:16;8032:27;7968:2;7817:258;;;;:::o;8081:102::-;;8173:2;8169:7;8164:2;8157:5;8153:14;8149:28;8139:38;;8129:54;;;:::o;8189:122::-;8262:24;8280:5;8262:24;:::i;:::-;8255:5;8252:35;8242:2;;8301:1;8298;8291:12;8242:2;8232:79;:::o;8317:116::-;8387:21;8402:5;8387:21;:::i;:::-;8380:5;8377:32;8367:2;;8423:1;8420;8413:12;8367:2;8357:76;:::o;8439:122::-;8512:24;8530:5;8512:24;:::i;:::-;8505:5;8502:35;8492:2;;8551:1;8548;8541:12;8492:2;8482:79;:::o;8567:122::-;8640:24;8658:5;8640:24;:::i;:::-;8633:5;8630:35;8620:2;;8679:1;8676;8669:12;8620:2;8610:79;:::o;8695:120::-;8767:23;8784:5;8767:23;:::i;:::-;8760:5;8757:34;8747:2;;8805:1;8802;8795:12;8747:2;8737:78;:::o
Swarm Source
ipfs://40ad3b53ec465b51bb09cdc3720f0e2ed42693f85c3c5f741297035a59b64be3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.