Goerli Testnet

Contract

0xbDBb6BB1e9E1167F8d613F408E28d58a2e89Abc1
Source Code

Overview

ETH Balance

0 ETH

Multi Chain

Multichain Addresses

N/A
Transaction Hash
Method
Block
From
To
Value
0x6080604091768322023-06-14 10:23:24178 days 22 hrs ago1686738204IN
 Create: HeaderStorage
0 ETH0.0053347212.32815632

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
101150542023-11-27 8:15:1213 days 16 mins ago1701072912
0xbDBb6B...2e89Abc1
0 ETH
101148192023-11-27 7:15:4813 days 1 hr ago1701069348
0xbDBb6B...2e89Abc1
0 ETH
101147622023-11-27 7:00:1213 days 1 hr ago1701068412
0xbDBb6B...2e89Abc1
0 ETH
101146442023-11-27 6:30:2413 days 2 hrs ago1701066624
0xbDBb6B...2e89Abc1
0 ETH
101145882023-11-27 6:15:1213 days 2 hrs ago1701065712
0xbDBb6B...2e89Abc1
0 ETH
101141382023-11-27 4:15:2413 days 4 hrs ago1701058524
0xbDBb6B...2e89Abc1
0 ETH
101140242023-11-27 3:45:2413 days 4 hrs ago1701056724
0xbDBb6B...2e89Abc1
0 ETH
101139642023-11-27 3:30:1213 days 5 hrs ago1701055812
0xbDBb6B...2e89Abc1
0 ETH
101139072023-11-27 3:15:1213 days 5 hrs ago1701054912
0xbDBb6B...2e89Abc1
0 ETH
101137982023-11-27 2:45:2413 days 5 hrs ago1701053124
0xbDBb6B...2e89Abc1
0 ETH
101135702023-11-27 1:45:1213 days 6 hrs ago1701049512
0xbDBb6B...2e89Abc1
0 ETH
101134552023-11-27 1:15:1213 days 7 hrs ago1701047712
0xbDBb6B...2e89Abc1
0 ETH
101130442023-11-26 23:30:1213 days 9 hrs ago1701041412
0xbDBb6B...2e89Abc1
0 ETH
101129262023-11-26 23:00:1213 days 9 hrs ago1701039612
0xbDBb6B...2e89Abc1
0 ETH
101123202023-11-26 20:15:1213 days 12 hrs ago1701029712
0xbDBb6B...2e89Abc1
0 ETH
101120822023-11-26 19:15:1213 days 13 hrs ago1701026112
0xbDBb6B...2e89Abc1
0 ETH
101116202023-11-26 17:15:1213 days 15 hrs ago1701018912
0xbDBb6B...2e89Abc1
0 ETH
101115562023-11-26 17:00:1213 days 15 hrs ago1701018012
0xbDBb6B...2e89Abc1
0 ETH
101114972023-11-26 16:45:1213 days 15 hrs ago1701017112
0xbDBb6B...2e89Abc1
0 ETH
101111572023-11-26 15:15:1213 days 17 hrs ago1701011712
0xbDBb6B...2e89Abc1
0 ETH
101110992023-11-26 15:00:1213 days 17 hrs ago1701010812
0xbDBb6B...2e89Abc1
0 ETH
101109232023-11-26 14:15:1213 days 18 hrs ago1701008112
0xbDBb6B...2e89Abc1
0 ETH
101108102023-11-26 13:45:1213 days 18 hrs ago1701006312
0xbDBb6B...2e89Abc1
0 ETH
101106422023-11-26 13:00:1213 days 19 hrs ago1701003612
0xbDBb6B...2e89Abc1
0 ETH
101104092023-11-26 12:00:1213 days 20 hrs ago1701000012
0xbDBb6B...2e89Abc1
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HeaderStorage

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : HeaderStorage.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.17;

contract HeaderStorage {
    mapping(uint256 => bytes32) public headers;

    event HeaderStored(uint256 indexed blockNumber, bytes32 indexed blockHeader);

    error HeaderOutOfRange(address emitter, uint256 blockNumber);

    /// @dev Stores and returns the header for the given block.
    /// @param blockNumber Block number.
    /// @return blockHeader Block header stored.
    /// @notice Reverts if the given block header was not previously stored and is now out of range.
    function storeBlockHeader(uint256 blockNumber) public returns (bytes32 blockHeader) {
        blockHeader = headers[blockNumber];
        if (blockHeader == 0) {
            blockHeader = blockhash(blockNumber);
            if (blockHeader == 0) revert HeaderOutOfRange(address(this), blockNumber);
            headers[blockNumber] = blockHeader;
            emit HeaderStored(blockNumber, blockHeader);
        }
    }

    /// @dev Stores and returns the header for an array of given blocks.
    /// @param blockNumbers Array of block numbers.
    /// @return Array of block headers.
    /// @notice Reverts if the given block header was not previously stored and is now out of range.
    function storeBlockHeaders(uint256[] memory blockNumbers) public returns (bytes32[] memory) {
        bytes32[] memory blockHeaders = new bytes32[](blockNumbers.length);
        for (uint256 i = 0; i < blockNumbers.length; i++) {
            blockHeaders[i] = storeBlockHeader(blockNumbers[i]);
        }
        return blockHeaders;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"HeaderOutOfRange","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"blockHeader","type":"bytes32"}],"name":"HeaderStored","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"headers","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"storeBlockHeader","outputs":[{"internalType":"bytes32","name":"blockHeader","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"blockNumbers","type":"uint256[]"}],"name":"storeBlockHeaders","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506106e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806356f90d79146100465780636c1e8a9514610076578063ceee6e55146100a6575b600080fd5b610060600480360381019061005b91906102ac565b6100d6565b60405161006d91906102f2565b60405180910390f35b610090600480360381019061008b91906102ac565b6100ee565b60405161009d91906102f2565b60405180910390f35b6100c060048036038101906100bb9190610466565b6101a7565b6040516100cd919061056d565b60405180910390f35b60006020528060005260406000206000915090505481565b60008060008381526020019081526020016000205490506000801b81036101a257814090506000801b810361015c5730826040517fb4992a6b0000000000000000000000000000000000000000000000000000000081526004016101539291906105df565b60405180910390fd5b806000808481526020019081526020016000208190555080827ff7df17dce0093aedfcbae24b4f04e823f9e863c97986ab1ba6c5267ace49ddea60405160405180910390a35b919050565b60606000825167ffffffffffffffff8111156101c6576101c5610323565b5b6040519080825280602002602001820160405280156101f45781602001602082028036833780820191505090505b50905060005b83518110156102585761022684828151811061021957610218610608565b5b60200260200101516100ee565b82828151811061023957610238610608565b5b602002602001018181525050808061025090610666565b9150506101fa565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61028981610276565b811461029457600080fd5b50565b6000813590506102a681610280565b92915050565b6000602082840312156102c2576102c161026c565b5b60006102d084828501610297565b91505092915050565b6000819050919050565b6102ec816102d9565b82525050565b600060208201905061030760008301846102e3565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61035b82610312565b810181811067ffffffffffffffff8211171561037a57610379610323565b5b80604052505050565b600061038d610262565b90506103998282610352565b919050565b600067ffffffffffffffff8211156103b9576103b8610323565b5b602082029050602081019050919050565b600080fd5b60006103e26103dd8461039e565b610383565b90508083825260208201905060208402830185811115610405576104046103ca565b5b835b8181101561042e578061041a8882610297565b845260208401935050602081019050610407565b5050509392505050565b600082601f83011261044d5761044c61030d565b5b813561045d8482602086016103cf565b91505092915050565b60006020828403121561047c5761047b61026c565b5b600082013567ffffffffffffffff81111561049a57610499610271565b5b6104a684828501610438565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6104e4816102d9565b82525050565b60006104f683836104db565b60208301905092915050565b6000602082019050919050565b600061051a826104af565b61052481856104ba565b935061052f836104cb565b8060005b8381101561056057815161054788826104ea565b975061055283610502565b925050600181019050610533565b5085935050505092915050565b60006020820190508181036000830152610587818461050f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105ba8261058f565b9050919050565b6105ca816105af565b82525050565b6105d981610276565b82525050565b60006040820190506105f460008301856105c1565b61060160208301846105d0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061067182610276565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106a3576106a2610637565b5b60018201905091905056fea2646970667358221220808d450665d4e4b2a0db8608f8c1de00a472e3f607b92801f555a99d8696977664736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c806356f90d79146100465780636c1e8a9514610076578063ceee6e55146100a6575b600080fd5b610060600480360381019061005b91906102ac565b6100d6565b60405161006d91906102f2565b60405180910390f35b610090600480360381019061008b91906102ac565b6100ee565b60405161009d91906102f2565b60405180910390f35b6100c060048036038101906100bb9190610466565b6101a7565b6040516100cd919061056d565b60405180910390f35b60006020528060005260406000206000915090505481565b60008060008381526020019081526020016000205490506000801b81036101a257814090506000801b810361015c5730826040517fb4992a6b0000000000000000000000000000000000000000000000000000000081526004016101539291906105df565b60405180910390fd5b806000808481526020019081526020016000208190555080827ff7df17dce0093aedfcbae24b4f04e823f9e863c97986ab1ba6c5267ace49ddea60405160405180910390a35b919050565b60606000825167ffffffffffffffff8111156101c6576101c5610323565b5b6040519080825280602002602001820160405280156101f45781602001602082028036833780820191505090505b50905060005b83518110156102585761022684828151811061021957610218610608565b5b60200260200101516100ee565b82828151811061023957610238610608565b5b602002602001018181525050808061025090610666565b9150506101fa565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61028981610276565b811461029457600080fd5b50565b6000813590506102a681610280565b92915050565b6000602082840312156102c2576102c161026c565b5b60006102d084828501610297565b91505092915050565b6000819050919050565b6102ec816102d9565b82525050565b600060208201905061030760008301846102e3565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61035b82610312565b810181811067ffffffffffffffff8211171561037a57610379610323565b5b80604052505050565b600061038d610262565b90506103998282610352565b919050565b600067ffffffffffffffff8211156103b9576103b8610323565b5b602082029050602081019050919050565b600080fd5b60006103e26103dd8461039e565b610383565b90508083825260208201905060208402830185811115610405576104046103ca565b5b835b8181101561042e578061041a8882610297565b845260208401935050602081019050610407565b5050509392505050565b600082601f83011261044d5761044c61030d565b5b813561045d8482602086016103cf565b91505092915050565b60006020828403121561047c5761047b61026c565b5b600082013567ffffffffffffffff81111561049a57610499610271565b5b6104a684828501610438565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6104e4816102d9565b82525050565b60006104f683836104db565b60208301905092915050565b6000602082019050919050565b600061051a826104af565b61052481856104ba565b935061052f836104cb565b8060005b8381101561056057815161054788826104ea565b975061055283610502565b925050600181019050610533565b5085935050505092915050565b60006020820190508181036000830152610587818461050f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105ba8261058f565b9050919050565b6105ca816105af565b82525050565b6105d981610276565b82525050565b60006040820190506105f460008301856105c1565b61060160208301846105d0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061067182610276565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106a3576106a2610637565b5b60018201905091905056fea2646970667358221220808d450665d4e4b2a0db8608f8c1de00a472e3f607b92801f555a99d8696977664736f6c63430008110033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.