> For the complete documentation index, see [llms.txt](https://corpus-core.gitbook.io/specification-colibri-stateless/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://corpus-core.gitbook.io/specification-colibri-stateless/specifications/ethereum/proofs/transaction-proof.md).

# Transaction Proof

A Transaction Proof verifies that a specific transaction is included in a verified execution block.

1. **Execution Block:** The execution block is verified via `ETH_EL_PROOF_UNION` (`c4_verify_block`). This yields a verified RLP EL header and its keccak `blockHash`.
2. **Transaction Inclusion:** A Patricia Merkle proof against the header's `transactionsRoot` delivers the raw transaction as the leaf.
3. **Request Binding:** The raw transaction (and the header's `blockNumber` / `blockHash`) is matched against the RPC arguments (`eth_getTransactionByHash`, `eth_getTransactionByBlockHashAndIndex`, or `eth_getTransactionByBlockNumberAndIndex`).

![](https://1306347641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhWyjkndFSkqQ8UEoWFD1%2Fuploads%2Fgit-blob-41ee928ecefc27c1025d5f6a3590647a53151dfb%2Fmermaid_137d8296.png?alt=media)

This Proof is used for the following RPC-Methods:

* [eth\_getTransactionByHash](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-get-transaction-by-hash)
* [eth\_getTransactionByBlockHashAndIndex](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-get-transaction-by-block-hash-and-index)
* [eth\_getTransactionByBlockNumberAndIndex](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-get-transaction-by-block-number-and-index)
* [eth\_getTransactionByHash](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-get-transaction-by-hash)
* [eth\_getTransactionByBlockHashAndIndex](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-get-transaction-by-block-hash-and-index)
* [eth\_getTransactionByBlockNumberAndIndex](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-get-transaction-by-block-number-and-index)

## EthTransactionProof

The main proof data for a single transaction.

The Type is defined in [src/chains/eth/ssz/verify\_proof\_types.h](https://github.com/corpus-core/colibri-stateless/blob/v3.0.2/src/chains/eth/ssz/verify_proof_types.h#L399).

```python
class EthTransactionProof(Container):
    transactionIndex : Uint32               # the index of the transaction in the block
    transactionProof : ProgList [bytesList] # the Patricia Merkle Proof of the transaction, the leaf contains the raw transaction.
    elProof          : Union [              # the proof for the execution block containing the transaction
        Bytes32,                            # 0: cached: verifier already holds this verified EL header
        EthClHeaderProof,                   # 1: full consensus-layer proof of the EL header
        EthSequencerProof,                  # 2: sequencer-signed execution payload (OP-Stack)
        EthWitnessHeaderProof]              # 3: reserved; c4_verify_block rejects until ecrecover+allow-list exist
```

**Referenced Types**

* [EthClHeaderProof](/specification-colibri-stateless/specifications/ethereum/proofs/consensus-layer-header-proof.md#ethclheaderproof)
* [EthSequencerProof](/specification-colibri-stateless/specifications/ethereum/proofs/execution-layer-header-proof.md#ethsequencerproof)
* [EthWitnessHeaderProof](/specification-colibri-stateless/specifications/ethereum/proofs/execution-layer-header-proof.md#ethwitnessheaderproof)

## EthTxData

Container type for authorization list entries (EIP-7702) The transaction data as result of an eth\_getTransactionByHash rpc-call. Supports all transaction types including Optimism Deposited Transactions (0x7E).

The Type is defined in [src/chains/eth/ssz/verify\_data\_types.h](https://github.com/corpus-core/colibri-stateless/blob/v3.0.2/src/chains/eth/ssz/verify_data_types.h#L104).

```python
class EthTxData(Container):
    _optmask              : Uint32                              # the bitmask defining the fields to be included
    blockHash             : Bytes32                             # the blockHash of the execution block containing the transaction
    blockNumber           : Uint64                              # the number of the execution block containing the transaction
    hash                  : Bytes32                             # the hash of the transaction
    transactionIndex      : Uint32                              # the index of the transaction in the block
    type                  : Uint8                               # the type of the transaction
    nonce                 : Uint64                              # the nonce of the transaction
    input                 : Bytes[1073741824]                   # the raw transaction payload
    r                     : Uint256                             # the r value of the transaction signature (QUANTITY per RPC spec)
    s                     : Uint256                             # the s value of the transaction signature (QUANTITY per RPC spec)
    chainId               : Uint64                              # the chain ID of the transaction
    v                     : Uint64                              # the v value of the transaction signature
    gas                   : Uint64                              # the gas limit
    from                  : Address                             # the sender of the transaction
    to                    : NullableBytes[20]                   # the target of the transaction
    value                 : Uint256                             # the value of the transaction
    gasPrice              : Uint64                              # the gas price of the transaction
    maxFeePerGas          : Uint64                              # the maxFeePerGas of the transaction
    maxPriorityFeePerGas  : Uint64                              # the maxPriorityFeePerGas of the transaction
    accessList            : ProgList [EthAccessListData]        # the access list of the transaction
    authorizationList     : ProgList [EthAuthorizationListData] # the authorization list of the transaction (EIP-7702)
    blobVersionedHashes   : ProgList [bytes32]                  # the blobVersionedHashes of the transaction
    yParity               : Uint8                               # the yParity of the transaction
    sourceHash            : Bytes32                             # unique identifier for deposit origin (OP Stack only)
    mint                  : Uint256                             # ETH value to mint on L2 (OP Stack only) - rendered as uint
    isSystemTx            : Boolean                             # system transaction flag as bytes (OP Stack only) - rendered as uint
    depositReceiptVersion : Uint8                               # deposit receipt version (OP Stack only) - rendered as uint
    maxFeePerBlobGas      : Uint256                             # the maximum fee per blob gas the sender is willing to pay (EIP-4844, type-3 only)
    blockTimestamp        : Uint64                              # the timestamp of the block containing the transaction (post-Cancun)
```

**Referenced Types**

* [EthAccessListData](https://github.com/corpus-core/c4-doc/tree/main/specification/specifications/ethereum/transaction-proof.md#ethaccesslistdata)
* [EthAuthorizationListData](https://github.com/corpus-core/c4-doc/tree/main/specification/specifications/ethereum/transaction-proof.md#ethauthorizationlistdata)

## EthAuthorizationListData

Container type for access list entries Entry in the authorization list of a transaction or call.

The Type is defined in [src/chains/eth/ssz/verify\_data\_types.h](https://github.com/corpus-core/colibri-stateless/blob/v3.0.2/src/chains/eth/ssz/verify_data_types.h#L91).

```python
class EthAuthorizationListData(Container):
    address : Address # the codebase to be used for the authorization
    chainId : Uint64  # the chainId of the authorization (EIP-7702)
    nonce   : Uint64  # nonce of the transaction
    r       : Uint256 # the r value of the transaction signature (QUANTITY per RPC spec)
    s       : Uint256 # the s value of the transaction signature (QUANTITY per RPC spec)
    yParity : Uint8   # the yParity of the transaction
```

## EthAccessListData

Entry in the access list of a transaction or call.

The Type is defined in [src/chains/eth/ssz/verify\_data\_types.h](https://github.com/corpus-core/colibri-stateless/blob/v3.0.2/src/chains/eth/ssz/verify_data_types.h#L83).

```python
class EthAccessListData(Container):
    address     : Address            # the address in the access list
    storageKeys : ProgList [bytes32] # the storage keys accessed at this address
```
