S Price: $0.058165 (-2.27%)
Gas: 55 Gwei

Contract

0xe35A879E5EfB4F1Bb7F70dCF3250f2e19f096bd8

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

More Info

Private Name Tags

Transaction Hash
Block
From
To
Apply187540802025-04-07 15:31:51298 days ago1744039911IN
Curve: X-Dao Block Hash Oracle
0 S0.002872950
Apply168773822025-03-29 22:03:55307 days ago1743285835IN
Curve: X-Dao Block Hash Oracle
0 S0.0017413550
Apply168771932025-03-29 22:02:47307 days ago1743285767IN
Curve: X-Dao Block Hash Oracle
0 S0.002872950
Apply161030282025-03-26 14:09:23310 days ago1742998163IN
Curve: X-Dao Block Hash Oracle
0 S0.002872950
Apply155974382025-03-24 7:38:37313 days ago1742801917IN
Curve: X-Dao Block Hash Oracle
0 S0.0020182157.94979911
Apply155974312025-03-24 7:38:35313 days ago1742801915IN
Curve: X-Dao Block Hash Oracle
0 S0.0018718353.74668666
Apply155974242025-03-24 7:38:32313 days ago1742801912IN
Curve: X-Dao Block Hash Oracle
0 S0.002872950
Apply155966242025-03-24 7:33:45313 days ago1742801625IN
Curve: X-Dao Block Hash Oracle
0 S0.0017413550
Apply155963192025-03-24 7:31:56313 days ago1742801516IN
Curve: X-Dao Block Hash Oracle
0 S0.002872950
Apply138507842025-03-15 10:39:53321 days ago1742035193IN
Curve: X-Dao Block Hash Oracle
0 S0.002872950
Apply15463302024-12-25 9:52:04402 days ago1735120324IN
Curve: X-Dao Block Hash Oracle
0 S0.000074551

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Sonic Block Hash oracle

Compiler Version
vyper:0.4.0

Optimization Enabled:
Yes

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper Json-Input format)

File 1 of 3 : SonicBlockHashOracle.vy
# pragma version 0.4.0
"""
@title Sonic Block Hash oracle
@notice A contract that saves L1 state roots.
@license MIT
@author curve.fi
@custom:version 0.1.0
@custom:security [email protected]
"""

import IBlockHashOracle
import IBlockHashRetain

implements: IBlockHashOracle
implements: IBlockHashRetain

version: public(constant(String[8])) = "0.1.0"

interface IStateOracle:
    def lastBlockNum() -> uint256: view
    def lastState() -> bytes32: view
    def lastUpdateTime() -> uint256: view
    def chainId() -> uint256: view


STATE_ORACLE: public(immutable(IStateOracle))

MAX_LOOKUP: constant(uint256) = 7 * 86400  # A week

state_root: public(HashMap[uint256, bytes32])
commitments: public(HashMap[address, HashMap[uint256, bytes32]])

last_applied: uint256


@deploy
def __init__(_state_oracle: IStateOracle):
    STATE_ORACLE = _state_oracle
    assert staticcall STATE_ORACLE.chainId() == 1


@view
@external
def get_block_hash(_number: uint256) -> bytes32:
    """
    @notice Query the block hash of a block.
    @dev Reverts for unknown block numbers or if not supported.
    @param _number Number of the block to look for.
    """
    raise "NotImplemented"


@view
@external
def get_state_root(_number: uint256) -> bytes32:
    """
    @notice Query the state root hash of a block.
    @dev Reverts for unknown block numbers or if not supported.
    @param _number Number of the block to look for.
    """
    state_root: bytes32 = self.state_root[_number]
    if state_root == empty(bytes32) and _number == staticcall STATE_ORACLE.lastBlockNum():
        # try fetching current data
        state_root = staticcall STATE_ORACLE.lastState()
    assert state_root != empty(bytes32)

    return state_root


@view
@external
def find_known_block_number(_before: uint256=0) -> uint256:
    """
    @notice Find known block number, not optimized for on-chain use.
        No guarantee to be the last available block.
    @dev Reverts if not supported or couldn't find.
    @param _before Max block number to look for (can be used as init search point).
    """
    last_applied: uint256 = self.last_applied
    if _before == 0 or last_applied < _before:
        return last_applied

    for i: uint256 in range(MAX_LOOKUP):
        if self.state_root[_before - i] != empty(bytes32):
            return _before - i
    raise "NotFound"


@internal
def _update_state_root() -> (uint256, bytes32):
    number: uint256 = staticcall STATE_ORACLE.lastBlockNum()
    hash: bytes32 = staticcall STATE_ORACLE.lastState()
    self.state_root[number] = hash

    self.last_applied = max(self.last_applied, number)
    return number, hash


@external
def commit() -> uint256:
    """
    @notice Commit (and apply) a state root.
    @dev Same as `apply()` but saves committer
    """
    number: uint256 = 0
    hash: bytes32 = empty(bytes32)
    number, hash = self._update_state_root()

    self.commitments[msg.sender][number] = hash
    log IBlockHashRetain.CommitBlockHash(msg.sender, number, hash)
    log IBlockHashRetain.ApplyBlockHash(number, hash)
    return number


@external
def apply() -> uint256:
    """
    @notice Apply a state root.
    """
    number: uint256 = 0
    hash: bytes32 = empty(bytes32)
    number, hash = self._update_state_root()

    log IBlockHashRetain.ApplyBlockHash(number, hash)
    return number

File 2 of 3 : Vyper_contract.vy
# pragma version ^0.4.0
"""
@title BlockHashOracle Interface Definition
@custom:contract-name IBlockHashOracle
@custom:version 0.1.0
@custom:security [email protected]
@license MIT
@author curve.fi
@notice Interface for Ethereum block hash and/or state root hash feed on other networks.
"""


@view
@external
def get_block_hash(_number: uint256) -> bytes32:
    """
    @notice Query the block hash of a block.
    @dev Reverts for unknown block numbers or if not supported.
    @param _number Number of the block to look for.
    """
    ...


@view
@external
def get_state_root(_number: uint256) -> bytes32:
    """
    @notice Query the state root hash of a block.
    @dev Reverts for unknown block numbers or if not supported.
    @param _number Number of the block to look for.
    """
    ...


@view
@external
def find_known_block_number(_before: uint256=0) -> uint256:
    """
    @notice Find known block number, not optimized for on-chain use.
        No guarantee to be the last available block.
    @dev Reverts if not supported or couldn't find.
    @param _before Max block number to look for (can be used as init search point).
    """
    ...

File 3 of 3 : Vyper_contract.vy
# pragma version ^0.4.0
"""
@title BlockHashRetain Interface Definition
@custom:contract-name IBlockHashRetain
@custom:version 0.1.0
@custom:security [email protected]
@license MIT
@author curve.fi
@notice Interface for retaining values in contract's storage for future use.
        Needed when native oracle provides only last value.
"""

# @dev Emitted when someone commits block hash.
# Note that not all oracles use commit-apply scheme and this might be ignored.
event CommitBlockHash:
    committer: indexed(address)
    number: indexed(uint256)
    hash: bytes32

# @dev Emitted when commits threshold reached and blockhash is applied.
# Note that not all oracles use commit-apply scheme and this might be ignored.
event ApplyBlockHash:
    number: indexed(uint256)
    hash: bytes32


@external
@view
def commitments(_commiter: address, _block_number: uint256) -> bytes32:
    """
    @notice Get commitments of block hashes/state roots
    @param _commiter address that called `commit()`
    @param _block_number Block number that was retained
    @return Block hash/state root depending on what is being saved
    """
    ...


@external
def commit() -> uint256:
    """
    @notice Commit (and apply) a block hash/state root.
    @dev Same as `apply()` but saves committer
    """
    ...


@external
def apply() -> uint256:
    """
    @notice Apply a block hash/state root.
    """
    ...

Settings
{
  "outputSelection": {
    "contracts/blockhash/SonicBlockHashOracle.vy": [
      "evm.bytecode",
      "evm.deployedBytecode",
      "abi"
    ]
  },
  "search_paths": [
    "."
  ]
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"name":"committer","type":"address"},{"indexed":true,"name":"number","type":"uint256"},{"indexed":false,"name":"hash","type":"bytes32"}],"name":"CommitBlockHash","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"number","type":"uint256"},{"indexed":false,"name":"hash","type":"bytes32"}],"name":"ApplyBlockHash","type":"event"},{"inputs":[{"name":"_number","type":"uint256"}],"name":"get_block_hash","outputs":[{"name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"_number","type":"uint256"}],"name":"get_state_root","outputs":[{"name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"find_known_block_number","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"_before","type":"uint256"}],"name":"find_known_block_number","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"commit","outputs":[{"name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"apply","outputs":[{"name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STATE_ORACLE","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"uint256"}],"name":"state_root","outputs":[{"name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"name":"commitments","outputs":[{"name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"_state_oracle","type":"address"}],"outputs":[],"stateMutability":"nonpayable","type":"constructor"}]

61058751503461006d57602061060d5f395f518060a01c61006d5760405260405161058752600161058751639a8a0592606052602060606004607c845afa610049573d5f5f3e3d5ffd5b60203d1061006d5760609050511861006d57610587610071610000396105a7610000f35b5f80fd5f3560e01c60026009820660011b61057501601e395f51565b639724283f81186100a3576024361034176105715760208060a052600e6040527f4e6f74496d706c656d656e74656400000000000000000000000000000000000060605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b63db595b3b81186104c657346105715760403660c0376100c46101006104ca565b6101006040816101405e50604061014060c05e60c0517f52e6e649c6b58521edb4571424aef2925807e91f5b7b6896a41920b034a4077560e051610100526020610100a2602060c0f35b630dfe681081186104c657602436103417610571575f6004356020525f5260405f205460405260405161017a5760206105875f395f516336899042606052602060606004607c845afa610163573d5f5f3e3d5ffd5b60203d10610571576060905051600435181561017c565b5f5b156101ba5760206105875f395f51632df8028060a052602060a0600460bc845afa6101a9573d5f5f3e3d5ffd5b60203d106105715760a09050516040525b604051156105715760206040f35b63346be52381186101e15734610571575f6040526102b9565b633c7a3aff81186104c657346105715760403660c0376102026101006104ca565b6101006040816101405e50604061014060c05e60e0516001336020525f5260405f208060c0516020525f5260405f2090505560c051337f8039f84f0eb77eb0be5293b76b4581ab181b17950e0da213eaf8847d6cf8fc0260e051610100526020610100a360c0517f52e6e649c6b58521edb4571424aef2925807e91f5b7b6896a41920b034a4077560e051610100526020610100a2602060c0f35b637df0b84481186103b857602436103417610571576004356040525b6002546060526040516102cd5760016102d5565b604051606051105b156102e357602060606103b6565b5f62093a80905b806080525f60405160805180820382811161057157905090506020525f5260405f205415610334575050604051608051808203828111610571579050905060a052602060a06103b6565b6001018181186102ea57505060208060e05260086080527f4e6f74466f756e6400000000000000000000000000000000000000000000000060a05260808160e00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060c0528060040160dcfd5bf35b630aaf880b81186104c657602436103417610571575f6004356020525f5260405f205460405260206040f35b6354fd4d50811861045e57346105715760208060805260056040527f302e312e3000000000000000000000000000000000000000000000000000000060605260408160800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b6399ca856c81186104c657604436103417610571576004358060a01c6105715760405260016040516020525f5260405f20806024356020525f5260405f2090505460605260206060f35b636212bca281186104c6573461057157602061058760403960206040f35b5f5ffd5b60206105875f395f516336899042606052602060606004607c845afa6104f2573d5f5f3e3d5ffd5b60203d1061057157606090505160405260206105875f395f51632df80280608052602060806004609c845afa61052a573d5f5f3e3d5ffd5b60203d106105715760809050516060526060515f6040516020525f5260405f2055600254604051808281188284110218905090506002556040518152606051602082015250565b5f80fd010e04c603e404c604a8001801c804c6029d8419058781121820a1657679706572830004000015000000000000000000000000836664b0c0cb29b7877bccf94159cc996528f2c3

Deployed Bytecode

0x5f3560e01c60026009820660011b61057501601e395f51565b639724283f81186100a3576024361034176105715760208060a052600e6040527f4e6f74496d706c656d656e74656400000000000000000000000000000000000060605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b63db595b3b81186104c657346105715760403660c0376100c46101006104ca565b6101006040816101405e50604061014060c05e60c0517f52e6e649c6b58521edb4571424aef2925807e91f5b7b6896a41920b034a4077560e051610100526020610100a2602060c0f35b630dfe681081186104c657602436103417610571575f6004356020525f5260405f205460405260405161017a5760206105875f395f516336899042606052602060606004607c845afa610163573d5f5f3e3d5ffd5b60203d10610571576060905051600435181561017c565b5f5b156101ba5760206105875f395f51632df8028060a052602060a0600460bc845afa6101a9573d5f5f3e3d5ffd5b60203d106105715760a09050516040525b604051156105715760206040f35b63346be52381186101e15734610571575f6040526102b9565b633c7a3aff81186104c657346105715760403660c0376102026101006104ca565b6101006040816101405e50604061014060c05e60e0516001336020525f5260405f208060c0516020525f5260405f2090505560c051337f8039f84f0eb77eb0be5293b76b4581ab181b17950e0da213eaf8847d6cf8fc0260e051610100526020610100a360c0517f52e6e649c6b58521edb4571424aef2925807e91f5b7b6896a41920b034a4077560e051610100526020610100a2602060c0f35b637df0b84481186103b857602436103417610571576004356040525b6002546060526040516102cd5760016102d5565b604051606051105b156102e357602060606103b6565b5f62093a80905b806080525f60405160805180820382811161057157905090506020525f5260405f205415610334575050604051608051808203828111610571579050905060a052602060a06103b6565b6001018181186102ea57505060208060e05260086080527f4e6f74466f756e6400000000000000000000000000000000000000000000000060a05260808160e00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060c0528060040160dcfd5bf35b630aaf880b81186104c657602436103417610571575f6004356020525f5260405f205460405260206040f35b6354fd4d50811861045e57346105715760208060805260056040527f302e312e3000000000000000000000000000000000000000000000000000000060605260408160800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b6399ca856c81186104c657604436103417610571576004358060a01c6105715760405260016040516020525f5260405f20806024356020525f5260405f2090505460605260206060f35b636212bca281186104c6573461057157602061058760403960206040f35b5f5ffd5b60206105875f395f516336899042606052602060606004607c845afa6104f2573d5f5f3e3d5ffd5b60203d1061057157606090505160405260206105875f395f51632df80280608052602060806004609c845afa61052a573d5f5f3e3d5ffd5b60203d106105715760809050516060526060515f6040516020525f5260405f2055600254604051808281188284110218905090506002556040518152606051602082015250565b5f80fd010e04c603e404c604a8001801c804c6029d000000000000000000000000836664b0c0cb29b7877bccf94159cc996528f2c3

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000836664b0c0cb29b7877bccf94159cc996528f2c3

-----Decoded View---------------
Arg [0] : _state_oracle (address): 0x836664B0c0CB29B7877bCcF94159CC996528F2C3

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000836664b0c0cb29b7877bccf94159cc996528f2c3


Deployed Bytecode Sourcemap

0:3335:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1156:16:0;-1:-1:-1;1156:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1156:16:0;1156:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1150:22:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;3163:19:0;-1:-1:-1;3163:19:0;3163:19:0;-1:-1:-1;3163:19:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;3237:25:0;-1:-1:-1;-1:-1:-1;3237:25:0;-1:-1:-1;-1:-1:-1;3237:25:0:i;3237:25:0:-;3237:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3222:40:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3222:40:0;3304:6:0;-1:-1:-1;3268:49:0;3268:49:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3312:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3268:49:0;-1:-1:-1;-1:-1:-1;3268:49:0;3087:248:0;-1:-1:-1;3329:6:0;-1:-1:-1;3087:248:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;1448:15:0;1513:7:0;-1:-1:-1;1448:24:0;1448:24:0;-1:-1:-1;1448:24:0;1448:24:0;1448:24:0;1448:24:0;-1:-1:-1;1448:24:0;1448:24:0;1426:46:0;1426:46:0;-1:-1:-1;1426:46:0;1480:10:0;-1:-1:-1;1480:28:0;1480:82:0;-1:-1:-1;-1:-1:-1;1480:82:0:-;1524:38:0;1524:38:0;1524:38:0;-1:-1:-1;-1:-1:-1;1524:38:0;1524:38:0;1524:38:0;1524:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1524:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;1524:38:0;1524:38:0;1513:49:0;1513:7:0;-1:-1:-1;1513:49:0;1513:49:0;1513:49:0;1480:82:0;-1:-1:-1;-1:-1:-1;1480:82:0:-;1480:82:0:-;1480:82:0;1480:82:0:-;1477:179:0;1477:179:0;-1:-1:-1;-1:-1:-1;1477:179:0:-;1621:35:0;1621:35:0;1621:35:0;-1:-1:-1;-1:-1:-1;1621:35:0;1621:35:0;1621:35:0;1621:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1621:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;1621:35:0;1621:35:0;-1:-1:-1;1608:10:0;-1:-1:-1;-1:-1:-1;1477:179:0:-;1668:10:0;-1:-1:-1;1668:28:0;1668:28:0;1661:35:0;-1:-1:-1;-1:-1:-1;1661:35:0:-;1191:528:0;-1:-1:-1;1709:10:0;-1:-1:-1;1191:528:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;1783:1:0;1766:16:0;-1:-1:-1;1766:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2787:19:0;-1:-1:-1;2787:19:0;2787:19:0;-1:-1:-1;2787:19:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2861:25:0;-1:-1:-1;-1:-1:-1;2861:25:0;-1:-1:-1;-1:-1:-1;2861:25:0:i;2861:25:0:-;2861:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2846:40:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2846:40:0;2931:4:0;-1:-1:-1;-1:-1:-1;2892:16:0;-1:-1:-1;2909:10:0;2892:28:0;-1:-1:-1;2892:28:0;2892:28:0;2892:28:0;2892:28:0;-1:-1:-1;2892:28:0;2892:28:0;-1:-1:-1;2921:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2892:36:0;2892:36:0;-1:-1:-1;2989:6:0;-1:-1:-1;2940:62:0;2977:10:0;2940:62:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2997:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2940:62:0;-1:-1:-1;-1:-1:-1;2940:62:0;3043:6:0;-1:-1:-1;3007:49:0;3007:49:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3051:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3007:49:0;-1:-1:-1;-1:-1:-1;3007:49:0;2650:424:0;-1:-1:-1;3068:6:0;-1:-1:-1;2650:424:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;1766:16:0;1766:16:0;-1:-1:-1;1766:16:0;1738:607:0:-;2100:17:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2076:41:0;2125:7:0;-1:-1:-1;2125:12:0;2125:38:0;-1:-1:-1;-1:-1:-1;2125:38:0:-;2125:38:0;-1:-1:-1;2125:38:0;-1:-1:-1;-1:-1:-1;2125:38:0:-;2125:38:0:-;2156:7:0;-1:-1:-1;-1:-1:-1;2141:12:0;-1:-1:-1;-1:-1:-1;2141:22:0;2125:38:0:-;2122:70:0;2122:70:0;-1:-1:-1;-1:-1:-1;2122:70:0:-;-1:-1:-1;-1:-1:-1;2180:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2122:70:0:-;2198:126:0;2198:126:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2198:126:0;2198:126:0:-;2198:126:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2246:15:0;2262:7:0;-1:-1:-1;-1:-1:-1;2272:1:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2262:11:0;2262:11:0;2246:28:0;-1:-1:-1;2246:28:0;2246:28:0;2246:28:0;2246:28:0;-1:-1:-1;2246:28:0;2246:28:0;2246:46:0;2246:46:0;2198:126:0;-1:-1:-1;-1:-1:-1;2243:81:0:-;2306:18:0;2306:18:0;2313:7:0;-1:-1:-1;-1:-1:-1;2323:1:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2313:11:0;2313:11:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2306:18:0;-1:-1:-1;2306:18:0;-1:-1:-1;-1:-1:-1;2306:18:0:-;2198:126:0:-;2198:126:0;-1:-1:-1;2198:126:0;2198:126:0;2198:126:0;2198:126:0;2198:126:0;-1:-1:-1;-1:-1:-1;2198:126:0:-;2198:126:0;2198:126:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2335:10:0;-1:-1:-1;2335:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2335:10:0;2335:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2329:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1738:607:0:-;1738:607:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;632:45:0;-1:-1:-1;632:45:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;343:7:0;-1:-1:-1;343:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;343:7:0;343:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;304:46:0;-1:-1:-1;304:46:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;678:64:0;-1:-1:-1;678:64:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;532:45:0;-1:-1:-1;532:45:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2428:38:0;2428:38:0;2428:38:0;-1:-1:-1;-1:-1:-1;2428:38:0;2428:38:0;2428:38:0;2428:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2428:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2428:38:0;2428:38:0;2410:56:0;2410:56:0;-1:-1:-1;2410:56:0;2487:35:0;2487:35:0;2487:35:0;-1:-1:-1;-1:-1:-1;2487:35:0;2487:35:0;2487:35:0;2487:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2487:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2487:35:0;2487:35:0;2471:51:0;2471:51:0;-1:-1:-1;2471:51:0;2553:4:0;-1:-1:-1;-1:-1:-1;2527:15:0;2543:6:0;-1:-1:-1;-1:-1:-1;2527:23:0;-1:-1:-1;2527:23:0;2527:23:0;2527:23:0;2527:23:0;-1:-1:-1;2527:23:0;2527:23:0;-1:-1:-1;2587:17:0;-1:-1:-1;-1:-1:-1;2606:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2583:30:0;2583:30:0;2563:17:0;-1:-1:-1;-1:-1:-1;2625:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2633:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2618:19:0;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1

Block Transaction Gas Used Reward
view all blocks ##produced##

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

Validator Index Block Amount
View All Withdrawals

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