> ## Documentation Index
> Fetch the complete documentation index at: https://docs.herodotus.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Verification Model

> How HDP verifies historical chain data before executing your module

Verification runs in Cairo0 during [`sound-run`](/data-processor/pipeline).\
It ensures every value used by your module is backed by valid cryptographic proofs.

## Verification order

1. **Headers** are verified against [MMR commitments](/data-processor/verification#mmr-proofs-header-anchor).
2. **Accounts** are verified against header `state_root`.
3. **Storage** is verified against account `storage_root`.
4. **Transactions and receipts** are verified against block roots.

This dependency chain is what makes historical reads trustworthy.

## MMR proofs (header anchor)

MMRs provide append-only commitments to block headers.

* HDP supports Poseidon and Keccak MMR hashing modes.
* Hasher mode can be configured per chain with `--mmr-hasher-config`.
* Once a header is verified via MMR, it becomes the trusted root for downstream checks.
* Header commitments are fetched through the [Herodotus Indexer](/data-structure-indexer-api/introduction).

## MPT/Patricia proofs (state proofing)

For EVM state, HDP verifies:

* account proofs against block `state_root`,
* storage proofs against account `storage_root`.

This supports both inclusion and non-inclusion style checks.

## Why this matters

Your module can reason about historical chain facts while HDP guarantees those facts are cryptographically linked to trusted roots before computation proceeds.
