> 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/ethereum-main-proof-request.md).

# Ethereum Main Proof Request

The proofs are always wrapped into a ssz-container with the name `C4Request`. This Container holds the a version (4 bytes) and unions for different proof types.

The 4 `Version` Bytes are encoded as `dom, major, minor, patch`.

* 0 : `domain` . describe which chain-type is used. 1 = ethereum
* 1 : `major` . the major version of the prover.
* 2 : `minor` . the minor version of the prover.
* 3 : `patch` . the patch version of the prover.

The `data` union can hold different types which represents the final data to be verified.

The `proof` union can hold different types which represents the proof of the data.

The `sync_data` union holds optional data used to update the sync\_committee. Most of the time, this is empty since syncing the pubkey only is used whenever it is needed. But the structure allows to include those sync\_proofs enabling a fully stateless proof.

## C4Request

the main container defining the incoming data processed by the verifier

The Type is defined in [src/chains/eth/ssz/verify\_types.c](https://github.com/corpus-core/colibri-stateless/blob/v2.0.2/src/chains/eth/ssz/verify_types.c#L128).

```python
class C4Request(Container):
    version   : ByteVector [4]          # the [domain, major, minor, patch] version of the request, domain=1 = eth
    data      : Union [                 # the data to proof
        None,                           # 
        Bytes32,                        # the blockhash  which is used for blockhash proof
        Bytes[1073741824],              # the bytes of the data
        Uint256,                        # the balance of an account
        EthTxData,                      # the transaction data
        EthReceiptData,                 # the transaction receipt
        List [EthReceiptDataLog, 1024], # result of eth_getLogs
        EthBlockData,                   # the block data
        EthProofData,                   # the result of an eth_getProof
        EthSimulationResult,            # the result of an colibri_simulateTransaction
        EthBlockHeaderData,             # compact block header data
        List [EthReceiptData, 2048]]    # all receipts of a block
    proof     : Union [                 # the proof of the data
        None,                           # 
        EthAccountProof,                # 1: a Proof of an Account like eth_getBalance or eth_getStorageAt
        EthTransactionProof,            # 2: a Proof of a Transaction like eth_getTransactionByHash
        EthReceiptProof,                # 3: a Proof of a TransactionReceipt
        List [EthLogsBlock, 256],       # 4: a Proof for multiple Receipts and txs
        EthCallProof,                   # 5: a Proof of a Call like eth_call
        EthSyncProof,                   # 6: Proof as input data for the sync committee transition used by zk
        EthBlockProof,                  # 7: Proof for BlockData
        EthBlockNumberProof,            # 8: Proof for BlockNumber
        C4WitnessSigned,                # 9: Proof for Witness
        EthBlockHeaderProof,            # 10: Proof for compact BlockHeader
        EthBlockReceiptsProof,          # 11: Proof for all block receipts
        EthHybridAccountProof,          # 12: Hybrid account proof with embedded header_data
        EthHybridTransactionProof,      # 13: Hybrid tx proof (SSZ branch + header_data)
        EthHybridReceiptProof,          # 14: Hybrid receipt proof (Patricia + header_data)
        List [EthHybridLogsBlock, 256], # 15: Hybrid logs proof with embedded header_data per block
        EthHybridCallProof,             # 16: Hybrid call proof with embedded header_data
        EthHybridBlockProof,            # 17: Hybrid block proof (EP only)
        EthHybridBlockHeaderProof,      # 18: Hybrid block header/number proof (header_data only)
        EthHybridBlockReceiptsProof,    # 19: Hybrid block receipts proof (header_data only)
        EthLogsCompletenessProof]       # 20: Completeness proof for eth_getLogs over a contiguous block range
    sync_data : Union [                 # the sync data containing proofs for the transition between the two periods
        None,                           # 
        C4EthLcSyncdata,                # Light Client Sync Data
        C4EthZkSyncdata,                # ZK Proof Sync Data (legacy SP1 v5, 260-byte groth16 proof)
        C4EthZkSyncdataV6]              # ZK Proof Sync Data (SP1 v6 "Hypercube", 356-byte groth16 proof)
```

**Referenced Types**

* [EthTxData](/specification-colibri-stateless/specifications/ethereum/transaction-proof.md#ethtxdata)
* [EthReceiptData](/specification-colibri-stateless/specifications/ethereum/receipt-proof.md#ethreceiptdata)
* [EthReceiptDataLog](/specification-colibri-stateless/specifications/ethereum/logs-proof.md#ethreceiptdatalog)
* [EthBlockData](/specification-colibri-stateless/specifications/ethereum/block-proof.md#ethblockdata)
* [EthProofData](/specification-colibri-stateless/specifications/ethereum/account-proof.md#ethproofdata)
* [EthSimulationResult](/specification-colibri-stateless/specifications/ethereum/colibri-rpc-methods/colibri_simulatetransaction.md#ethsimulationresult)
* [EthBlockHeaderData](/specification-colibri-stateless/specifications/ethereum/block-proof.md#ethblockheaderdata)
* [EthAccountProof](/specification-colibri-stateless/specifications/ethereum/account-proof.md#ethaccountproof)
* [EthTransactionProof](/specification-colibri-stateless/specifications/ethereum/transaction-proof.md#ethtransactionproof)
* [EthReceiptProof](/specification-colibri-stateless/specifications/ethereum/receipt-proof.md#ethreceiptproof)
* [EthLogsBlock](/specification-colibri-stateless/specifications/ethereum/logs-proof.md#ethlogsblock)
* [EthCallProof](/specification-colibri-stateless/specifications/ethereum/call-proof.md#ethcallproof)
* [EthSyncProof](/specification-colibri-stateless/specifications/ethereum/sync-proof.md#ethsyncproof)
* [EthBlockProof](/specification-colibri-stateless/specifications/ethereum/block-proof.md#ethblockproof)
* [EthBlockNumberProof](/specification-colibri-stateless/specifications/ethereum/block-proof.md#ethblocknumberproof)
* C4WitnessSigned
* [EthBlockHeaderProof](/specification-colibri-stateless/specifications/ethereum/block-proof.md#ethblockheaderproof)
* [EthBlockReceiptsProof](/specification-colibri-stateless/specifications/ethereum/block-receipts-proof.md#ethblockreceiptsproof)
* [EthHybridAccountProof](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridaccountproof)
* [EthHybridTransactionProof](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridtransactionproof)
* [EthHybridReceiptProof](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridreceiptproof)
* [EthHybridLogsBlock](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridlogsblock)
* [EthHybridCallProof](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridcallproof)
* [EthHybridBlockProof](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridblockproof)
* [EthHybridBlockHeaderProof](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridblockheaderproof)
* [EthHybridBlockReceiptsProof](/specification-colibri-stateless/specifications/ethereum/hybrid-proof-types.md#ethhybridblockreceiptsproof)
* [EthLogsCompletenessProof](/specification-colibri-stateless/specifications/ethereum/logs-proof.md#ethlogscompletenessproof)
* [C4EthLcSyncdata](https://github.com/corpus-core/colibri-stateless-doc/tree/main/specification/specifications/ethereum/synccommittee.md#c4ethlcsyncdata)
* [C4EthZkSyncdata](/specification-colibri-stateless/specifications/ethereum/synccommittee-proof.md#c4ethzksyncdata)
* [C4EthZkSyncdataV6](/specification-colibri-stateless/specifications/ethereum/synccommittee-proof.md#c4ethzksyncdatav6)
