> 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/block-proof.md).

# Block Proof

The **Block Proof** verifies that a specific execution-layer block is valid and correctly referenced by the consensus layer (Beacon Chain).

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`. Header-only RPC methods (`eth_getBlockHeader`, `eth_blockNumber`, `eth_blobBaseFee`, `eth_maxPriorityFeePerGas`) use the `NONE` body variant and reconstruct the result from the RLP header alone.
2. **Optional Body:** For `eth_getBlockByNumber` / `eth_getBlockByHash` the proof may include the raw transactions and withdrawals. The verifier rebuilds `transactionsRoot` and `withdrawalsRoot` and compares them to the corresponding fields of the EL header.

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

This Proof is used for the following RPC-Methods:

* [eth\_getBlockByHash](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-get-block-by-hash)
* [eth\_getBlockByNumber](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-get-block-by-number)
* [eth\_blockNumber](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-block-number)
* [eth\_getBlockHeader](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-get-block-header)
* [eth\_blobBaseFee](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-blob-base-fee)
* [eth\_maxPriorityFeePerGas](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-max-priority-fee-per-gas)
* [eth\_getBlockByHash](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-get-block-by-hash)
* [eth\_getBlockByNumber](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-get-block-by-number)
* [eth\_getBlockHeader](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-get-block-header)
* [eth\_blockNumber](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-block-number)
* [eth\_blobBaseFee](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-blob-base-fee)

## EthBlockProof

The Block Proof: a verified EL header (via ETH\_EL\_PROOF\_UNION) plus an optional body.

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

```python
class EthBlockProof(Container):
    body    : Union [ 
        None,                  # no body, just header
        EthBlockBodyContent]   # the Block Body Content
    elProof : Union [          # the proof for the execution block
        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**

* [EthBlockBodyContent](#ethblockbodycontent)
* [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)

## EthBlockBodyContent

The content of an execution block body (only present for full-block RPC methods).

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

```python
class EthBlockBodyContent(Container):
    transactions : ProgList [transactionsBytes] # the raw transactions of the block
    withdrawals  : ProgList [DenepWithdrawal]   # the list of withdrawals
```

## EthBlockHeaderData

Compact block header data reconstructed from the verified RLP execution header. Used by eth\_getBlockHeader, eth\_gasPrice, eth\_blobBaseFee, eth\_maxPriorityFeePerGas, and as a lightweight verified header cache for eth\_call privacy mode and log filters.

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

```python
class EthBlockHeaderData(Container):
    parentHash          : Bytes32          # the hash of the parent block
    stateRoot           : Bytes32          # the merkle root of the state at the end of the block
    receiptsRoot        : Bytes32          # the merkle root of the transaction receipts
    logsBloom           : ByteVector [256] # the bloom filter of the logs
    blockNumber         : Uint64           # the block number
    gasLimit            : Uint64           # the gas limit of the block
    gasUsed             : Uint64           # the gas used of the block
    timestamp           : Uint64           # the timestamp of the block
    baseFeePerGas       : Uint256          # the base fee per gas of the block
    blockHash           : Bytes32          # the hash of the block
    blobGasUsed         : Uint64           # the gas used for the blob transactions
    excessBlobGas       : Uint64           # the excess blob gas of the block
    feeRecipient        : Address          # the address of the fee recipient (coinbase)
    transactionsRoot    : Bytes32          # transactionsRoot
    requestsHash        : Bytes32          # the requestHash ( eip-7685 )
    blockAccessListHash : Bytes32          # the blockAccessListHash ( EIP-7928 )
```

## EthBlockData

Display the block data reconstructed from the verified RLP execution header (and, for full-block methods, the proven transactions / withdrawals).

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

```python
class EthBlockData(Container):
    _optmask              : Uint32                     # bitmask defining the properties shown in json
    number                : Uint64                     # the blocknumber
    hash                  : Bytes32                    # the blockhash
    transactions          : Union [                    # the transactions
        ProgList [bytes32],                            # the transactions hashes
        ProgList [EthTxData]]                          # the transactions data
    logsBloom             : ByteVector [256]           # the logsBloom
    receiptsRoot          : Bytes32                    # the receiptsRoot
    extraData             : Bytes[32]                  # the extraData
    withdrawalsRoot       : Bytes32                    # the withdrawalsRoot
    baseFeePerGas         : Uint256                    # the baseFeePerGas
    nonce                 : ByteVector [8]             # the nonce
    miner                 : Address                    # the miner
    withdrawals           : ProgList [DenepWithdrawal] # the withdrawals
    excessBlobGas         : Uint64                     # the excessBlobGas
    difficulty            : Uint64                     # the difficulty
    gasLimit              : Uint64                     # the gasLimit
    gasUsed               : Uint64                     # the gasUsed
    timestamp             : Uint64                     # the timestamp
    mixHash               : Bytes32                    # the mixHash
    parentHash            : Bytes32                    # the parentHash
    uncles                : ProgList [bytes32]         # the uncles (ommer block hashes)
    parentBeaconBlockRoot : Bytes32                    # the parentBeaconBlockRoot
    sha3Uncles            : Bytes32                    # the sha3Uncles of the uncles
    transactionsRoot      : Bytes32                    # the transactionsRoot
    stateRoot             : Bytes32                    # the stateRoot
    blobGasUsed           : Uint64                     # the gas used for the blob transactions
    requestsHash          : Bytes32                    # the requestHash ( eip-7685 )
    blockAccessListHash   : Bytes32                    # the blockAccessListHash ( EIP-7928 )
```

**Referenced Types**

* [EthTxData](https://github.com/corpus-core/colibri-stateless-doc/tree/main/specification/specifications/ethereum/transaction-proof.md#ethtxdata)
