Receipt Proof
A Receipt Proof represents the cryptographic verification of a transaction receipt and its inclusion within the canonical blockchain structure.
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.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.
Execution Payload Proof: An SSZ multi–Merkle proof is then created, connecting the
transactions,receipts,blockNumber, andblockHashfields within the ExecutionPayload to theblockBodyRoot. The total proof depth for this structure is 29.Consensus Reference: The BeaconBlockHeader is included in the proof to provide the
slotinformation. This slot determines which sync committee is responsible for signing the corresponding block root.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.h.
class EthReceiptProof(Container):
transaction : Bytes[1073741824] # the raw transaction payload
transactionIndex : Uint32 # the index of the transaction in the block
blockNumber : Uint64 # the number of the execution block containing the transaction
blockHash : Bytes32 # the blockHash of the execution block containing the transaction
receipt_proof : List [bytes_1024, 64] # the Merklr Patricia Proof of the transaction receipt ending in the receipt root
block_proof : List [bytes32, 64] # the multi proof of the transaction, receipt_root,blockNumber and blockHash
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
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.h.
class EthReceiptData(Container):
_optmask : Uint32 # bitmask defining the properties shown in json
blockHash : Bytes32 # the blockHash of the execution block containing the transaction
blockNumber : Uint64 # the number of the execution block containing the transaction
transactionHash : Bytes32 # the hash of the transaction
transactionIndex : Uint32 # the index of the transaction in the block
type : Uint8 # the type of the transaction
from : Address # the sender of the transaction
to : Bytes[20] # the target of the transaction
cumulativeGasUsed : Uint64 # the cumulative gas used
gasUsed : Uint64 # the gas address of the created contract
logs : List [EthReceiptDataLog, 256] # the logs of the transaction
logsBloom : ByteVector [256] # the bloom filter of the logs
status : Uint8 # the status of the transaction
effectiveGasPrice : Uint64 # the effective gas price of the transaction
depositNonce : Uint64 # the deposit nonce of the transaction
depositReceiptVersion : Uint32 # the deposit receipt version of the transactionReferenced Types
Last updated