execute_eth_call is one of HDP’s most powerful features: you can run an EVM contract call inside a ZK execution context and prove the result.
In practice, this gives you a clean way to reason about time:
- “What was this wallet’s USDC balance at block X?”
- “What was voting power exactly when voting started?”
- “Was an address eligible at snapshot block Y?”
Why this dramatically simplifies development
Withexecute_eth_call, you can often avoid manual slot math and low-level proof wiring:
- Reuse contract ABIs and familiar call patterns.
- Keep most application logic in Solidity/backends.
- Add a focused Cairo1 proof module only for the verifiable part.
- Get historical, provable answers without deep storage-proof expertise.
Function signature
TimeAndSpace pins the call to a specific chain and block:
Return value
TransactionResult includes:
success: boolreturn_data: Span<u8>gas_used: u64state: State
return_data in your Cairo module according to the ABI.
Real example: historical balanceOf
The official example calls USDC balanceOf(address) for Vitalik at a fixed Ethereum mainnet block and converts return bytes into u256:
- Example module: examples/eth_call/src/lib.cairo
- Example run script: examples/eth_call/run.sh
Typical use cases
- Historical balance snapshots for governance, rewards, and accounting
- Time-bounded eligibility checks (airdrop, campaign, compliance windows)
- Proof-backed state derivations without manual storage-slot plumbing
- Solidity-heavy products that need minimal Cairo1 surface area
Current behavior to be aware of
As currently implemented,execute_eth_call constructs an EIP-1559 call with fixed internals (for example nonce = 0, value = 0, configured gas fields, empty access list). For most read-style calls this is exactly what you want, but advanced flows should still review implementation details in source.
execute_eth_call is designed for eth_call-style execution (read-oriented behavior, no state mutation as part of settled chain state), and opcode support is intentionally scoped.
Run and prove
One practical flow is:- Build and run HDP pipeline (
dry-run->fetch-proofs->sound-run) - Export Cairo PIE
- Send proving/verification workload to Atlantic

