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

# Call Proof

`eth_call` returns the result of a smart contract call. To verify that this result is correct, every referenced account, contract code, and storage value must be validated against the canonical chain state.

1. **Execution Block:** The execution block is verified via `ETH_EL_PROOF_UNION` (`c4_verify_block`). This yields a verified RLP EL header. EVM block context (`blockNumber`, `timestamp`, `coinbase`, `prevRandao`, `baseFeePerGas`, `blockHash`, `gasLimit`, `excessBlobGas`) is read from that header.
2. **Account and Storage Proofs:** A Patricia Merkle proof is constructed for each involved account and all accessed storage values. Each account proof reconstructs the header's `stateRoot`. Contract code is included when needed and checked against `codeHash`.
3. **Stateless Execution:** The EVM is executed against the proven accounts and storage. The returned output must match the proven call result.

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

This Proof is used for the following RPC-Methods:

* [eth\_call](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-call)
* [eth\_estimateGas](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-estimate-gas)
* [colibri\_simulateTransaction](https://github.com/corpus-core/colibri-stateless-doc/tree/main/specification/specifications/ethereum/proofs/colibri-rpc-methods/colibri_simulatetransaction.md)
* [eth\_createAccessList](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-create-access-list)
* [eth\_call](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-call)
* [colibri\_simulateTransaction](https://github.com/corpus-core/colibri-stateless-doc/tree/main/specification/specifications/ethereum/proofs/colibri-rpc-methods/colibri_simulatetransaction.md)
* [eth\_createAccessList](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-create-access-list)
* [eth\_estimateGas](https://www.alchemy.com/docs/node/op-mainnet/op-mainnet-api-endpoints/eth-estimate-gas)

## EthCallProof

The main proof data for a call.

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#L570).

```python
class EthCallProof(Container):
    accounts : ProgList [EthCallAccount] # used accounts
    elProof  : Union [                   # EL header proof of the accounts
        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**

* [EthCallAccount](#ethcallaccount)
* [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)

## EthCallAccount

A proof for a single account.

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#L561).

```python
class EthCallAccount(Container):
    accountProof : ProgList [bytes_1024]      # Patricia merkle proof
    address      : Address                    # the address of the account
    code         : Union [                    # the code of the contract
        Boolean,                              # no code delivered
        Bytes[4194304]]                       # the code of the contract
    storageProof : ProgList [EthStorageProof] # the storage proofs of the selected
```

**Referenced Types**

* [EthStorageProof](/specification-colibri-stateless/specifications/ethereum/proofs/account-proof.md#ethstorageproof)
