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.
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
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.
class EthBlockNumberProof(Container):
blockNumber : Uint64 # the block number of the latest block
timestamp : Uint64 # the timestamp of the latest block
proof : List [bytes32, 256] # the multi merkle prooof from the executionPayload.blockNumber and executionPayload.timestamp 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
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.
class EthBlockData(Container):
_optmask : Uint32 # bitmask defining the properties shown in json
number : Uint64 # the blocknumber
hash : Bytes32 # the blockhash
transactions : Union [ # the transactions
List [bytes32, 4096], # the transactions hashes
List [EthTxData, 4096]] # the transactions data
logsBloom : ByteVector [256] # the logsBloom
receiptsRoot : Bytes32 # the receiptsRoot
extraData : Bytes[32] # the extraData
withdrawalsRoot : Bytes32 # the withdrawalsRoot
baseFeePerGas : Uint256 # the baseFeePerGas
nonce : ByteVector [8] # the nonce
miner : Address # the miner
withdrawals : List [DenepWithdrawal, 4096] # the withdrawals
excessBlobGas : Uint64 # the excessBlobGas
difficulty : Uint64 # the difficulty
gasLimit : Uint64 # the gasLimit
gasUsed : Uint64 # the gasUsed
timestamp : Uint64 # the timestamp
mixHash : Bytes32 # the mixHash
parentHash : Bytes32 # the parentHash
uncles : List [bytes32, 4096] # the uncles (ommer block hashes)
parentBeaconBlockRoot : Bytes32 # the parentBeaconBlockRoot
sha3Uncles : Bytes32 # the sha3Uncles of the uncles
transactionsRoot : Bytes32 # the transactionsRoot
stateRoot : Bytes32 # the stateRoot
blobGasUsed : Uint64 # the gas used for the blob transactions
requestsHash : Bytes32 # the requestHash ( eip-7685 )Referenced Types
Last updated