Logs Proof

A Logs Proof verifies that specific log entries, returned by eth_getLogs, are correctly included within transaction receipts of a verified execution block.

  1. Transaction Root Calculation: For each transaction producing a log entry, the transaction payload is used to compute its SSZ hash tree root.

  2. Execution Payload Proof: An SSZ Merkle proof is constructed, linking the transactions field within the ExecutionPayload to the blockBodyRoot. The total proof depth for this structure is 29.

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

  4. Sync Committee Signature: The BLS aggregate signature of the following block’s sync committee is verified against the SignData that includes the block hash. The signing domain is derived from the fork version and the Genesis Validator Root. Successful verification confirms that the block—and therefore all contained receipts and logs—is part of the canonical chain.

Each log proof must reference its corresponding receipt proof, ensuring that every verified log entry is linked to a valid transaction and included in a verified execution block.

This Proof is used for the following RPC-Methods:

EthLogsTx

Represents one single transaction receipt with the required transaction and receipt-proof. The proof contains the raw receipt as part of its last leaf.

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

class EthLogsTx(Container):
    transaction      : Bytes[1073741824]      # the raw transaction payload
    transactionIndex : Uint32                 # the index of the transaction in the block
    proof            : List [bytes_1024, 256] # the Merkle Patricia Proof of the transaction receipt ending in the receipt root

EthLogsBlock

A single Block with its proof containing all the receipts or txs required to proof for the logs.

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

Referenced Types

EthReceiptDataLog

A log entry in the receipt.

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

Last updated