Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OpenOraclePriceData
Compiler Version
v0.6.10+commit.00c0fcaf
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.6.10; import "./OpenOracleData.sol"; /** * @title The Open Oracle Price Data Contract * @notice Values stored in this contract should represent a USD price with 6 decimals precision * @author Compound Labs, Inc. */ contract OpenOraclePriceData is OpenOracleData { ///@notice The event emitted when a source writes to its storage event Write(address indexed source, string key, uint64 timestamp, uint64 value); ///@notice The event emitted when the timestamp on a price is invalid and it is not written to storage event NotWritten(uint64 priorTimestamp, uint256 messageTimestamp, uint256 blockTimestamp); ///@notice The fundamental unit of storage for a reporter source struct Datum { uint64 timestamp; uint64 value; } /** * @dev The most recent authenticated data from all sources. * This is private because dynamic mapping keys preclude auto-generated getters. */ mapping(address => mapping(string => Datum)) private data; /** * @notice Write a bunch of signed datum to the authenticated storage mapping * @param message The payload containing the timestamp, and (key, value) pairs * @param signature The cryptographic signature of the message payload, authorizing the source to write * @return The keys that were written */ function put(bytes calldata message, bytes calldata signature) external returns (string memory) { (address source, uint64 timestamp, string memory key, uint64 value) = decodeMessage(message, signature); return putInternal(source, timestamp, key, value); } function putInternal(address source, uint64 timestamp, string memory key, uint64 value) internal returns (string memory) { // Only update if newer than stored, according to source Datum storage prior = data[source][key]; if (timestamp > prior.timestamp && timestamp < block.timestamp + 60 minutes && source != address(0)) { data[source][key] = Datum(timestamp, value); emit Write(source, key, timestamp, value); } else { emit NotWritten(prior.timestamp, timestamp, block.timestamp); } return key; } function decodeMessage(bytes calldata message, bytes calldata signature) internal pure returns (address, uint64, string memory, uint64) { // Recover the source address address source = source(message, signature); // Decode the message and check the kind (string memory kind, uint64 timestamp, string memory key, uint64 value) = abi.decode(message, (string, uint64, string, uint64)); require(keccak256(abi.encodePacked(kind)) == keccak256(abi.encodePacked("prices")), "Kind of data must be 'prices'"); return (source, timestamp, key, value); } /** * @notice Read a single key from an authenticated source * @param source The verifiable author of the data * @param key The selector for the value to return * @return The claimed Unix timestamp for the data and the price value (defaults to (0, 0)) */ function get(address source, string calldata key) external view returns (uint64, uint64) { Datum storage datum = data[source][key]; return (datum.timestamp, datum.value); } /** * @notice Read only the value for a single key from an authenticated source * @param source The verifiable author of the data * @param key The selector for the value to return * @return The price value (defaults to 0) */ function getPrice(address source, string calldata key) external view returns (uint64) { return data[source][key].value; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.6.10; pragma experimental ABIEncoderV2; /** * @title The Open Oracle Data Base Contract * @author Compound Labs, Inc. */ contract OpenOracleData { /** * @notice The event emitted when a source writes to its storage */ //event Write(address indexed source, <Key> indexed key, string kind, uint64 timestamp, <Value> value); /** * @notice Write a bunch of signed datum to the authenticated storage mapping * @param message The payload containing the timestamp, and (key, value) pairs * @param signature The cryptographic signature of the message payload, authorizing the source to write * @return The keys that were written */ //function put(bytes calldata message, bytes calldata signature) external returns (<Key> memory); /** * @notice Read a single key with a pre-defined type signature from an authenticated source * @param source The verifiable author of the data * @param key The selector for the value to return * @return The claimed Unix timestamp for the data and the encoded value (defaults to (0, 0x)) */ //function get(address source, <Key> key) external view returns (uint, <Value>); /** * @notice Recovers the source address which signed a message * @dev Comparing to a claimed address would add nothing, * as the caller could simply perform the recover and claim that address. * @param message The data that was presumably signed * @param signature The fingerprint of the data + private key * @return The source address which signed the message, presumably */ function source(bytes memory message, bytes memory signature) public pure returns (address) { (bytes32 r, bytes32 s, uint8 v) = abi.decode(signature, (bytes32, bytes32, uint8)); bytes32 hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256(message))); return ecrecover(hash, v, r, s); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"priorTimestamp","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"messageTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"NotWritten","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"source","type":"address"},{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint64","name":"timestamp","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"value","type":"uint64"}],"name":"Write","type":"event"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"string","name":"key","type":"string"}],"name":"get","outputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"string","name":"key","type":"string"}],"name":"getPrice","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"put","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"source","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610bc1806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338636e9a14610051578063482a61931461018457806376977a3a146102c9578063fc2525ab14610364575b600080fd5b61010f6004803603604081101561006757600080fd5b810190602081018135600160201b81111561008157600080fd5b82018360208201111561009357600080fd5b803590602001918460018302840111600160201b831117156100b457600080fd5b919390929091602081019035600160201b8111156100d157600080fd5b8201836020820111156100e357600080fd5b803590602001918460018302840111600160201b8311171561010457600080fd5b509092509050610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610149578181015183820152602001610131565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ad6004803603604081101561019a57600080fd5b810190602081018135600160201b8111156101b457600080fd5b8201836020820111156101c657600080fd5b803590602001918460018302840111600160201b831117156101e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561023957600080fd5b82018360208201111561024b57600080fd5b803590602001918460018302840111600160201b8311171561026c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061043f945050505050565b604080516001600160a01b039092168252519081900360200190f35b610347600480360360408110156102df57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561030957600080fd5b82018360208201111561031b57600080fd5b803590602001918460018302840111600160201b8311171561033c57600080fd5b50909250905061052c565b6040805167ffffffffffffffff9092168252519081900360200190f35b6103e26004803603604081101561037a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111600160201b831117156103d757600080fd5b509092509050610586565b6040805167ffffffffffffffff938416815291909216602082015281519081900390910190f35b60606000806060600061041e898989896105f6565b9350935093509350610432848484846108c5565b9998505050505050505050565b60008060008084806020019051606081101561045a57600080fd5b5080516020808301516040938401518a518b84012085517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081860152603c8082019290925286518082039092018252605c81018088528251928601929092206000909252607c810180885282905260ff8316609c82015260bc810186905260dc8101849052955194985091965094509260019260fc8083019392601f198301929081900390910190855afa158015610516573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6001600160a01b03831660009081526020819052604080822090518490849080838380828437919091019485525050604051928390036020019092205467ffffffffffffffff600160401b90910416925050509392505050565b6000806000806000876001600160a01b03166001600160a01b03168152602001908152602001600020858560405180838380828437919091019485525050604051928390036020019092205467ffffffffffffffff8082169650600160401b909104169350505050935093915050565b600080606060008061067189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525061043f92505050565b905060606000606060008c8c608081101561068b57600080fd5b810190602081018135600160201b8111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111600160201b831117156106d857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929567ffffffffffffffff853516959094909350604081019250602001359050600160201b81111561073c57600080fd5b82018360208201111561074e57600080fd5b803590602001918460018302840111600160201b8311171561076f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516570726963657360d01b60208083019190915282516006818403018152602683019093528251928101929092208a519a9e50989c50939a50933567ffffffffffffffff16985095968b96506046909201945084935050908401908083835b602083106108245780518252601f199092019160209182019101610805565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120146108b1576040805162461bcd60e51b815260206004820152601d60248201527f4b696e64206f662064617461206d757374206265202770726963657327000000604482015290519081900360640190fd5b939c919b5099509197509095505050505050565b6001600160a01b038416600090815260208181526040808320905185516060949387929182918401908083835b602083106109115780518252601f1990920191602091820191016108f2565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220805490935067ffffffffffffffff90811690881611915050801561096d575042610e10018567ffffffffffffffff16105b801561098157506001600160a01b03861615155b15610b345760405180604001604052808667ffffffffffffffff1681526020018467ffffffffffffffff16815250600080886001600160a01b03166001600160a01b03168152602001908152602001600020856040518082805190602001908083835b60208310610a035780518252601f1990920191602091820191016109e4565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520865181549784015167ffffffffffffffff1990981667ffffffffffffffff918216176fffffffffffffffff00000000000000001916600160401b988216989098029790971790558a861685830152948816948401949094525050606080825286519082015285516001600160a01b038916927f4d3f5aa96531b83f5389343ecd20cd8ac1fba33b64634c1b547a4d85d31540d39288928a92899291829160808301919087019080838360005b83811015610af3578181015183820152602001610adb565b50505050905090810190601f168015610b205780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2610b81565b80546040805167ffffffffffffffff928316815291871660208301524282820152517f7d218dba44a461fb2d7b5fe792128439313d3c48c86d4c3e4981a8eaca831a769181900360600190a15b509194935050505056fea26469706673582212204e1e101ddfc50ca5e19a086c564ce64e9f879b1becc0507d9376103c2414464a64736f6c634300060a0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338636e9a14610051578063482a61931461018457806376977a3a146102c9578063fc2525ab14610364575b600080fd5b61010f6004803603604081101561006757600080fd5b810190602081018135600160201b81111561008157600080fd5b82018360208201111561009357600080fd5b803590602001918460018302840111600160201b831117156100b457600080fd5b919390929091602081019035600160201b8111156100d157600080fd5b8201836020820111156100e357600080fd5b803590602001918460018302840111600160201b8311171561010457600080fd5b509092509050610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610149578181015183820152602001610131565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ad6004803603604081101561019a57600080fd5b810190602081018135600160201b8111156101b457600080fd5b8201836020820111156101c657600080fd5b803590602001918460018302840111600160201b831117156101e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561023957600080fd5b82018360208201111561024b57600080fd5b803590602001918460018302840111600160201b8311171561026c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061043f945050505050565b604080516001600160a01b039092168252519081900360200190f35b610347600480360360408110156102df57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561030957600080fd5b82018360208201111561031b57600080fd5b803590602001918460018302840111600160201b8311171561033c57600080fd5b50909250905061052c565b6040805167ffffffffffffffff9092168252519081900360200190f35b6103e26004803603604081101561037a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111600160201b831117156103d757600080fd5b509092509050610586565b6040805167ffffffffffffffff938416815291909216602082015281519081900390910190f35b60606000806060600061041e898989896105f6565b9350935093509350610432848484846108c5565b9998505050505050505050565b60008060008084806020019051606081101561045a57600080fd5b5080516020808301516040938401518a518b84012085517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081860152603c8082019290925286518082039092018252605c81018088528251928601929092206000909252607c810180885282905260ff8316609c82015260bc810186905260dc8101849052955194985091965094509260019260fc8083019392601f198301929081900390910190855afa158015610516573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6001600160a01b03831660009081526020819052604080822090518490849080838380828437919091019485525050604051928390036020019092205467ffffffffffffffff600160401b90910416925050509392505050565b6000806000806000876001600160a01b03166001600160a01b03168152602001908152602001600020858560405180838380828437919091019485525050604051928390036020019092205467ffffffffffffffff8082169650600160401b909104169350505050935093915050565b600080606060008061067189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525061043f92505050565b905060606000606060008c8c608081101561068b57600080fd5b810190602081018135600160201b8111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111600160201b831117156106d857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929567ffffffffffffffff853516959094909350604081019250602001359050600160201b81111561073c57600080fd5b82018360208201111561074e57600080fd5b803590602001918460018302840111600160201b8311171561076f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516570726963657360d01b60208083019190915282516006818403018152602683019093528251928101929092208a519a9e50989c50939a50933567ffffffffffffffff16985095968b96506046909201945084935050908401908083835b602083106108245780518252601f199092019160209182019101610805565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120146108b1576040805162461bcd60e51b815260206004820152601d60248201527f4b696e64206f662064617461206d757374206265202770726963657327000000604482015290519081900360640190fd5b939c919b5099509197509095505050505050565b6001600160a01b038416600090815260208181526040808320905185516060949387929182918401908083835b602083106109115780518252601f1990920191602091820191016108f2565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220805490935067ffffffffffffffff90811690881611915050801561096d575042610e10018567ffffffffffffffff16105b801561098157506001600160a01b03861615155b15610b345760405180604001604052808667ffffffffffffffff1681526020018467ffffffffffffffff16815250600080886001600160a01b03166001600160a01b03168152602001908152602001600020856040518082805190602001908083835b60208310610a035780518252601f1990920191602091820191016109e4565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520865181549784015167ffffffffffffffff1990981667ffffffffffffffff918216176fffffffffffffffff00000000000000001916600160401b988216989098029790971790558a861685830152948816948401949094525050606080825286519082015285516001600160a01b038916927f4d3f5aa96531b83f5389343ecd20cd8ac1fba33b64634c1b547a4d85d31540d39288928a92899291829160808301919087019080838360005b83811015610af3578181015183820152602001610adb565b50505050905090810190601f168015610b205780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2610b81565b80546040805167ffffffffffffffff928316815291871660208301524282820152517f7d218dba44a461fb2d7b5fe792128439313d3c48c86d4c3e4981a8eaca831a769181900360600190a15b509194935050505056fea26469706673582212204e1e101ddfc50ca5e19a086c564ce64e9f879b1becc0507d9376103c2414464a64736f6c634300060a0033
Deployed Bytecode Sourcemap
277:3460:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1392:275;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1392:275:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1392:275:1;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1392:275:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1392:275:1;;;;;;;;;;-1:-1:-1;1392:275:1;;-1:-1:-1;1392:275:1;-1:-1:-1;1392:275:1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1664:340:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1664:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1664:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:340:0;;;;;;;;-1:-1:-1;1664:340:0;;-1:-1:-1;;;;;1664:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1664:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1664:340:0;;-1:-1:-1;1664:340:0;;-1:-1:-1;;;;;1664:340:0:i;:::-;;;;-1:-1:-1;;;;;1664:340:0;;;;;;;;;;;;;;3602:133:1;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3602:133:1;;;;;;;;;;;;;;;-1:-1:-1;;;3602:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3602:133:1;;;;;;;;;;-1:-1:-1;3602:133:1;;-1:-1:-1;3602:133:1;-1:-1:-1;3602:133:1;:::i;:::-;;;;;;;;;;;;;;;;;;;3150:192;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3150:192:1;;;;;;;;;;;;;;;-1:-1:-1;;;3150:192:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3150:192:1;;;;;;;;;;-1:-1:-1;3150:192:1;;-1:-1:-1;3150:192:1;-1:-1:-1;3150:192:1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1392:275;1473:13;1499:14;1515:16;1533:17;1552:12;1568:33;1582:7;;1591:9;;1568:13;:33::i;:::-;1498:103;;;;;;;;1618:42;1630:6;1638:9;1649:3;1654:5;1618:11;:42::i;:::-;1611:49;1392:275;-1:-1:-1;;;;;;;;;1392:275:1:o;1664:340:0:-;1747:7;1767:9;1778;1789:7;1811:9;1800:48;;;;;;;;;;;;;;;-1:-1:-1;1800:48:0;;;;;;;;;;;;1936:18;;;;;;1883:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:83;;;;;;;;;1858:12;1973:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1800:48;;-1:-1:-1;1800:48:0;;-1:-1:-1;1800:48:0;-1:-1:-1;1873:83:0;1973:24;;;;;;;1800:48;-1:-1:-1;;1973:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1973:24:0;;-1:-1:-1;;1973:24:0;;;1664:340;-1:-1:-1;;;;;;;;1664:340:0:o;3602:133:1:-;-1:-1:-1;;;;;3705:12:1;;3680:6;3705:12;;;;;;;;;;;:17;;3718:3;;;;3705:17;3718:3;;;;3705:17;;;;;;;;;-1:-1:-1;;3705:17:1;;;;;;;;;;;:23;;-1:-1:-1;;;3705:23:1;;;;;-1:-1:-1;;;3602:133:1;;;;;:::o;3150:192::-;3223:6;3231;3249:19;3271:4;:12;3276:6;-1:-1:-1;;;;;3271:12:1;-1:-1:-1;;;;;3271:12:1;;;;;;;;;;;;3284:3;;3271:17;;;;;;;;;;;;;;;;-1:-1:-1;;3271:17:1;;;;;;;;;;;3306:15;;;;;;-1:-1:-1;;;;3323:11:1;;;;;-1:-1:-1;;;;3150:192:1;;;;;;:::o;2265:595::-;2361:7;2370:6;2378:13;2393:6;2449:14;2466:26;2473:7;;2466:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2466:26:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2482:9:1;;-1:-1:-1;2482:9:1;;;;2466:26;;2482:9;;;;2466:26;;;;;;;;;-1:-1:-1;2466:6:1;;-1:-1:-1;;;2466:26:1:i;:::-;2449:43;;2553:18;2573:16;2591:17;2610:12;2637:7;;2626:53;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2626:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2626:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2626:53:1;;;;;;;;;;;-1:-1:-1;2626:53:1;;;;-1:-1:-1;2626:53:1;;;;-1:-1:-1;;;;2626:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2626:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2744:26:1;;;-1:-1:-1;;;2626:53:1;2744:26;;;;;;;;;;;;;;;;;;;;;;2734:37;;;;;;;;;2707:22;;;;-1:-1:-1;2552:127:1;;-1:-1:-1;2626:53:1;;-1:-1:-1;2626:53:1;;;;;-1:-1:-1;2734:37:1;;2707:22;;-1:-1:-1;2707:22:1;;;;;-1:-1:-1;2707:22:1;;-1:-1:-1;;2707:22:1;;;;;;;;;;;;;;;;;-1:-1:-1;;2707:22:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2697:33;;;;;;:74;2689:116;;;;;-1:-1:-1;;;2689:116:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2823:6;;2831:9;;-1:-1:-1;2831:9:1;-1:-1:-1;2823:6:1;;-1:-1:-1;2265:595:1;;-1:-1:-1;;;;;;2265:595:1:o;1673:586::-;-1:-1:-1;;;;;1891:12:1;;1869:19;1891:12;;;;;;;;;;;:17;;;;1779:13;;1869:19;1904:3;;1891:17;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1891:17:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1891:17:1;;;;;;;;;;;;;;;;-1:-1:-1;1891:17:1;;;;;;;;;;1934:15;;1891:17;;-1:-1:-1;1934:15:1;;;;1922:27;;;;;-1:-1:-1;;1922:71:1;;;;;1965:15;1983:10;1965:28;1953:9;:40;;;1922:71;:95;;;;-1:-1:-1;;;;;;1997:20:1;;;;1922:95;1918:315;;;2053:23;;;;;;;;2059:9;2053:23;;;;;;2070:5;2053:23;;;;;2033:4;:12;2038:6;-1:-1:-1;;;;;2033:12:1;-1:-1:-1;;;;;2033:12:1;;;;;;;;;;;;2046:3;2033:17;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2033:17:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2033:17:1;;;;;;;;;;;;;;;;-1:-1:-1;2033:17:1;;;;;;;;;;;:43;;;;;;;;-1:-1:-1;;2033:43:1;;;;;;;;-1:-1:-1;;2033:43:1;-1:-1:-1;;;2033:43:1;;;;;;;;;;;;;2095:36;;;;;;;;;;;;;;;;;-1:-1:-1;;2095:36:1;;;;;;;;;;;;-1:-1:-1;;;;;2095:36:1;;;;;;;;;;;2033:17;;;2095:36;;;;;;;;;;;-1:-1:-1;2095:36:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:315;;;2178:15;;2167:55;;;2178:15;;;;2167:55;;;;;;;;;2206:15;2167:55;;;;;;;;;;;;;;1918:315;-1:-1:-1;2249:3:1;;1673:586;-1:-1:-1;;;;1673:586:1:o
Swarm Source
ipfs://4e1e101ddfc50ca5e19a086c564ce64e9f879b1becc0507d9376103c2414464a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.