Receipt Proof

A Receipt Proof represents the cryptographic verification of a transaction receipt and its inclusion within the canonical blockchain structure.

  1. Receipt Merkle Proof: All transaction receipts of an execution block are serialized into a Patricia Merkle Trie. A Merkle proof is generated for the requested receipt, demonstrating its inclusion in the block’s receiptsRoot.

  2. Transaction–Receipt Association: The payload of the transaction is used to compute its SSZ hash tree root derived from the corresponding BeaconBlock. This step ensures that the receipt is cryptographically linked to the correct transaction hash.

  3. Execution Payload Proof: An SSZ multi–Merkle proof is then created, connecting the transactions, receipts, blockNumber, and blockHash fields within the ExecutionPayload to the blockBodyRoot. The total proof depth for this structure is 29.

  4. Consensus Reference: The BeaconBlockHeader is included in the proof to provide the slot information. This slot determines which sync committee is responsible for signing the corresponding block root.

  5. Sync Committee Signature: Finally, the BLS aggregate signature from the sync committee of the following block is verified. The signature covers the block root as part of the SignData, with the signing domain derived from the fork version and the Genesis Validator Root. Successful signature verification confirms that the block—and thus the contained receipt—is part of the canonical chain.

This Proof is used for the following RPC-Methods:

EthReceiptProof

The main proof data for a receipt.

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

Referenced Types

EthReceiptData

Container type for log entries in transaction receipts The transaction receipt data as returned by eth_getTransactionReceipt.

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

Referenced Types

Last updated