> 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/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-Layer Proof** A **Patricia Merkle Proof** is constructed for each involved account and all accessed storage values in the execution layer. For every account, this includes the `balance`, `nonce`, `codeHash`, and `storageRoot`, as well as the specific storage slots read or modified during the call. Each of these elements is verified through its corresponding Merkle proof, resulting in a verified **stateRoot** for the execution block. (Equivalent to the combined data returned by `eth_getProof` for all accounts and storage keys involved.)
2. **State Proof** An **SSZ Merkle Proof** connects the `stateRoot` of the execution layer to the **ExecutionPayload**, and continues through the **BeaconBlockBody** to its root hash, which is referenced in the **BeaconBlockHeader**.
3. **Consensus Reference** The **BeaconBlockHeader** is included in the proof to provide the `slot` information. This determines which sync committee is responsible for signing the corresponding block root.
4. **Sync Committee Signature** The **BLS aggregate signature** from the sync committee of the **following block** is verified against the `SignData` that includes the block hash. The signing domain is derived from the fork version and the **Genesis Validator Root**, confirming that the block and its execution state belong to the canonical chain.

The **Call Proof** provides full verifiability of `eth_call` results by cryptographically proving all involved account and storage states without reliance on any RPC provider.

![](/files/8jWi1fsOsqwzqKtdl2e1)

This Proof is used for the following RPC-Methods:

* [eth\_call](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-call) message.start/len spans the JSON string token (incl. quotes); a substring search is sufficient to recognise the oblivious node's availability signal. ETH\_OBLIVIOUS
* [eth\_estimateGas](https://www.alchemy.com/docs/node/ethereum/ethereum-api-endpoints/eth-estimate-gas)
* [colibri\_simulateTransaction](/specification-colibri-stateless/specifications/ethereum/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)
* [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)

## 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/v1.1.30/src/chains/eth/ssz/verify_proof_types.h#L493).

```python
class EthCallAccount(Container):
    accountProof : List [bytes_1024, 256]       # 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 : List [EthStorageProof, 4096] # the storage proofs of the selected
```

**Referenced Types**

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

## 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/v1.1.30/src/chains/eth/ssz/verify_proof_types.h#L502).

```python
class EthCallProof(Container):
    accounts    : List [EthCallAccount, 256] # used accounts
    state_proof : EthStateProof              # the state proof of the account
```

**Referenced Types**

* [EthCallAccount](#ethcallaccount)
* [EthStateProof](/specification-colibri-stateless/specifications/ethereum/account-proof.md#ethstateproof)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://corpus-core.gitbook.io/specification-colibri-stateless/specifications/ethereum/call-proof.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
