For the complete documentation index, see llms.txt. This page is also available as Markdown.

Execution Layer Header Proof

All proofs are based on the correct blockhash of the execution block. In order to prove this blockhash the ETH_EL_PROOF_UNION offers four variants:

  • clProof: a full consensus-layer proof of the EL header

  • sequencerProof: a sequencer-signed execution payload (OP-Stack and other L2s)

  • witnessProof: a list of witness signatures over the EL block hash ( not implemented yet )

  • cached: a cached verified EL header, which simply means no proof, since the client already holds this verified EL header

The clProof is the most complete proof and is used to prove the EL header. The sequencerProof is used to prove the execution payload of an OP-Stack or other L2. The witnessProof is used to prove the EL block hash with a list of witness signatures.

EthWitnessHeaderProof

Witness-signed EL header. keccak256(elHeader) is the blockHash that each witness signed. The header is otherwise unauthenticated until those signatures are checked against configured witness keys (not implemented yet).

The Type is defined in src/chains/eth/ssz/verify_proof_types.h.

class EthWitnessHeaderProof(Container):
    elHeader  : ProgBytes                      # RLP-serialized execution-layer header
    witnesses : List [EthBlockhashWitness, 16] # cap 16 is the product allow-list size, not an encoding limit

Referenced Types

EthBlockhashWitness

One witness attestation of keccak256(elHeader). address is the claimed signer; signature is secp256k1 (r, s, v). Verification (ecrecover + allow-list) is reserved for a later release.

The Type is defined in src/chains/eth/ssz/verify_proof_types.h.

EthSequencerProof

The Type is defined in src/chains/eth/ssz/verify_proof_types.h.

Last updated