Skip to main content
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
  2. Provide --injected_state <json> in dry run and sound run
  3. Fetch state proofs during stage 2
  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.

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.