Block Proof

The Block Proof verifies that a specific block in the execution layer is valid and correctly referenced by the consensus layer (Beacon Chain).

  1. Execution Block Proof A Merkle proof is generated for the block’s core fields (blockNumber, blockHash, transactionsRoot, stateRoot, receiptsRoot) within the ExecutionPayload. This ensures that all block data is included and consistent with the execution layer’s state.

  2. Payload–Header Link An SSZ Merkle Proof connects the ExecutionPayload to the blockBodyRoot, and continues through the BeaconBlockHeader, proving that the execution block is part of the verified beacon block.

  3. Consensus Reference The BeaconBlockHeader provides the slot context used to identify the correct sync committee for signature verification.

  4. Sync Committee Signature The BLS aggregate signature from the sync committee of the following block is verified against the SignData that includes the beacon block root. The signing domain is derived from the fork version and the Genesis Validator Root, confirming that the block and its associated execution payload belong to the canonical chain.

The Block Proof thus establishes full trustless verification of an execution-layer block by cryptographically linking it to the verified consensus layer.

This Proof is used for the following RPC-Methods:

EthBlockProof

The stateRoot proof is used as part of different other types since it contains all relevant proofs to validate the stateRoot of the execution layer

The Type is defined in src/chains/eth/ssz/verify_proof_types.harrow-up-right.

class EthBlockProof(Container):
    executionPayload : Union [             # the merkle prooof from the executionPayload.state down to the blockBodyRoot hash
        DenepExecutionPayload,             # DenepExecutionPayload
        GnosisExecutionPayload]            # GnosisExecutionPayload
    proof            : List [bytes32, 256] # the merkle prooof from the executionPayload.state down to the blockBodyRoot hash
    header           : BeaconBlockHeader   # the header of the beacon block
    header_proof     : Union [             # the proof for the correctness of the header
        EthSignatureBlockProof,            # proof fby provding signature of the sync_committee
        EthHistoricBlockProof,             # proof for a historic block using the state_root of a current block.
        EthHeadersBlockProof]              # proof block giving headers up to a verifyable header.

Referenced Types

EthBlockNumberProof

for eth_blockNumber we need to proof the blocknumber and the timestamp of the latest block.

The Type is defined in src/chains/eth/ssz/verify_proof_types.harrow-up-right.

Referenced Types

EthBlockData

Display the block data, which is based on the execution payload

The Type is defined in src/chains/eth/ssz/verify_data_types.harrow-up-right.

Referenced Types

Last updated