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 headersequencerProof: 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 limitReferenced 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