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

# State Management

> Memorizers, injected state, and unconstrained data in HDP

HDP uses specialized state paths so sound execution is offline, deterministic, and fast.

## Memorizers

Memorizers are Cairo0 dictionaries populated during verification, then read during module execution.

Core memorizer domains:

* EVM: headers, accounts, storage, txs, receipts, logs
* Starknet: headers, storage
* Injected state: custom trie-backed state
* Unconstrained: large blobs validated by hash

## Injected state

Injected state is a custom persistent state model backed by a Patricia trie and served by `state_server`.

Typical use:

1. Start [State Server](/data-processor/state-server)
2. Provide `--injected_state <json>` in dry run and sound run
3. Fetch state proofs during [stage 2](/data-processor/pipeline)
4. Read/write with `hdp.injected_state` APIs in your module

State server base URL:

* `INJECTED_STATE_BASE_URL`

For full setup, endpoints, and examples, see [State Server](/data-processor/state-server).

## Unconstrained data

Unconstrained mode is used for large payloads like EVM bytecode.

Flow:

* Dry run collects the key and payload source
* Sound run loads payload from memorizer
* HDP validates payload hash (for bytecode, against account code hash)

Cairo helper:

* `evm_account_get_bytecode(key) -> ByteCode`

This gives efficient access to large data while preserving integrity guarantees.

For troubleshooting injected state flows, see [Debugging](/data-processor/debugging).
