Block Receipts Proof

A Block Receipts Proof verifies all transaction receipts of a given block. Instead of proving a single receipt via Patricia Merkle Proof, the proof includes all raw serialized receipts and the full transactions list from the execution payload.

  1. Receipt Trie Verification: The verifier builds the complete Patricia Merkle Trie from all serialized receipts and computes the receiptsRoot, comparing it against the value in the ExecutionPayload.

  2. Transactions Verification: The raw transactions list is included so the verifier can compute each transactionHash and verify transactionIndex for every receipt.

  3. Execution Payload Proof: An SSZ multi-Merkle proof connects blockNumber, blockHash, receiptsRoot, and the transactions hash tree root to the blockBodyRoot.

  4. Consensus Reference: The BeaconBlockHeader provides the slot for sync committee identification.

  5. Sync Committee Signature: The BLS aggregate signature from the sync committee confirms canonical chain membership.

EthBlockReceiptsProof

The main proof data for all receipts of a block.

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

class EthBlockReceiptsProof(Container):
    transactions  : List [transactionsBytes, 1048576] # all transactions from the execution payload
    receipts      : List [bytesList, 65536]           # all RLP-serialized receipts of the block
    blockNumber   : Uint64                            # the number of the execution block
    blockHash     : Bytes32                           # the blockHash of the execution block
    baseFeePerGas : Uint256                           # for effectiveGasPrice when building receipt data in verifier
    block_proof   : List [bytes32, 64]                # the multi proof of transactions, receiptsRoot, blockNumber, blockHash and baseFeePerGas
    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

Last updated