ETH Price: $3,255.42 (-2.31%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OpenOraclePriceData

Compiler Version
v0.6.10+commit.00c0fcaf

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: OpenOraclePriceData.sol
// 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;
    }
}

File 2 of 2: OpenOracleData.sol
// 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

Contract ABI

[{"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"}]

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.