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).
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.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.Consensus Reference The BeaconBlockHeader provides the
slotcontext used to identify the correct sync committee for signature verification.Sync Committee Signature The BLS aggregate signature from the sync committee of the following block is verified against the
SignDatathat 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.h.
Referenced Types
GnosisExecutionPayload
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.h.
Referenced Types
EthBlockHeaderProof
for eth_getBlockHeader we proof selected fields of the execution payload using a multi-merkle proof. The actual field values are carried in the data union (ETH_BLOCK_HEADER_DATA), not in this proof container.
The Type is defined in src/chains/eth/ssz/verify_proof_types.h.
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.h.
Referenced Types
EthBlockHeaderData
Compact block header data containing selected fields from the ExecutionPayload. Used by eth_getBlockHeader, eth_gasPrice, eth_blobBaseFee, eth_maxPriorityFeePerGas, and as a lightweight verified header cache for eth_call privacy mode and log filters.
The Type is defined in src/chains/eth/ssz/verify_data_types.h.
Last updated