A maximally concise, information-dense reference for reimplementation in Zig.
Helios is a trust-minimized, stateless Ethereum light client. It verifies consensus-layer (CL) headers and execution-layer (EL) state using cryptographic proofs without storing the chain. The design consists of two tightly integrated subsystems:
- Consensus Layer: Verifies canonical chain head via sync-committee signatures (L1) or sequencer signatures (L2).
- Execution Layer: Verifies state (accounts, storage, receipts, logs) using Merkle-Patricia proofs tied to the trusted header’s state root.
The result is a local JSON-RPC server that returns only verifiably correct blockchain data.
Purpose: Trust-minimized header verification without block execution.
- Implements the beacon-chain Light Client protocol (post-Merge).
- Uses sync committees (512 rotating validators) to verify header signatures.
- Tracks chain head using aggregate BLS signatures over beacon headers.
- Stores minimal data: current/next sync committee + latest finalized checkpoint.
Purpose: State verification without storing full state.
-
Takes trusted execution payload header (from CL).
-
Uses the header’s state root to verify:
- account state
- code hash
- storage slots
- transaction inclusion
- receipt inclusion
-
Verification via Merkle-Patricia trie proofs obtained through
eth_getProof.
Outcome: All local RPC responses are verified against canonical Ethereum state.
Helios starts from a trusted beacon block hash (recent finalized block). Used to prevent long-range attacks inherent to PoS.
- Default checkpoint is embedded; user may override.
- Helios stores the newest finalized block on disk and promotes it to the next WSC.
- Fetch beacon block by hash from consensus RPC.
- Hash it locally; ensure it matches the WSC.
- Extract current + next sync committees.
Sync committees rotate every 256 epochs (~27 hours).
Helios leaps through history:
- Use next committee to verify a header in the following period.
- Extract new current/next committee.
- Repeat until within the current sync period.
- Switch to real-time mode: verify every incoming header via committee signatures.
Result: Multi-week catch-up in seconds with only a few aggregate signature checks.
- Consensus layer also reports finalized headers.
- Helios anchors finality by storing finalized blocks → reorg resistance.
- Never follows forks that predate the latest stored finalized checkpoint.
Given a trusted header with a state root:
-
Query EL RPC using
eth_getProof. -
RPC returns:
- account fields
- storage slot values
- Merkle-Patricia proof nodes
-
Helios independently rehashes the trie path → must match the known state root.
- Verify code hash in account proof.
- Optionally retrieve bytecode and hash it.
-
Header contains
transactionsRootandreceiptsRoot. -
Helios can verify:
- Transactions list matches header root.
- Receipt included via proof (if RPC supports).
- Helios loads required state via proofs.
- Runs local EVM (revm in Rust; Zig impl should embed minimal EVM).
- Compares output with RPC or just returns its own simulation.
- RPC cannot lie about call results because Helios re-executes them.
Helios converts an untrusted RPC into a verifiable data source:
- RPC can withhold, but cannot forge data.
- Only DoS or censorship is possible.
Ethereum L2s lack sync committees. Helios replaces CL logic with sequencer signature verification.
- Each L2 block is signed by the sequencer ("pre-confirmation").
- Helios verifies ECDSA signature → authenticity of header.
- Trust assumption: sequencer honest (L2 protocol provides fraud proofs on L1, not Helios).
Identical to L1:
- Each L2 block has a state root.
- Helios verifies account/storage via Merkle proofs from L2 RPC.
Consensus backends are pluggable:
- Ethereum L1 → BLS sync committees
- Optimism/Base → sequencer signatures
- Future: multi-sequencer committees, BFT gadgets, zk-verified headers
Helios’s architecture abstracts header verification, so adding Linea, Arbitrum, or any EVM rollup is straightforward.
Helios exposes a fully compatible Ethereum JSON-RPC interface:
eth_getBalanceeth_getTransactionCounteth_getCodeeth_getStorageAteth_call/eth_estimateGas(via local EVM)eth_getBlockByNumber/Hash(header verified)eth_getTransactionByHash(root check)eth_getTransactionReceipt(root check)
eth_sendRawTransaction(RPC broadcasts)
- RPC must support
eth_getProof. - Consensus provider must serve correct light client updates.
Helios = local node behavior with verification guarantees.
-
Sync-committee majority determines canonical head.
-
On reorg:
- new majority-signed header replaces last.
- old head discarded.
-
Finality anchors prevent deep reorgs.
- Sequencer may reorg pre-L1-publish blocks.
- Helios follows whatever the valid sequencer signs.
- Strong guarantees only after L1 inclusion (optional to check).
- Checkpoint too old → possible long-range attack.
- Helios mitigates by auto-updating to each finalized checkpoint.
- Near-zero disk (only small checkpoint file)
- Near-instant sync
- Suitable for mobile, browser, embedded
- Tiny attack surface
- Fully verifiable state access
- RPC must support proofs
- No historical state unless RPC provides it
- RPC withholding = request failure
- Cannot validate state transitions (no full block execution)
- Trusts Ethereum validator majority or L2 sequencer honesty
- Dual modules: CL verification + EL verification.
- Stateless: No DB; verify all data on demand.
- Modular consensus backends: BLS, ECDSA, future zk proofs.
- Proof-centric execution: Always verify via Merkle proofs.
- Minimal TCB: Keep code small, deterministic, auditable.
-
Implement SSZ parsing & BLS12-381 aggregate signature verification.
-
Implement sync committee rotation logic.
-
Structure consensus backend as interface:
verify_header(header, proof)next_committee(header_state)- per-chain genesis/checkpoint parameters
- Implement Merkle-Patricia trie node parsing + Keccak hashing.
- Implement minimal EVM for
eth_callsimulation. - Integrate proof fetching via
eth_getProof.
-
Build a lightweight JSON-RPC HTTP server (Zig stdlib).
-
Implement provider abstraction:
HttpProvider- future:
PortalProvider
- Store latest finalized header hash on disk.
- Use small in-memory caches (recent header, committee, proofs).
- Implement fork-choice: always follow highest-weight verified header.
- Optimize hashing & BLS operations (SIMD, unrolled loops).
- Compile for WASM/mobile; keep binary minimal.
- Use Zig error handling for explicit verification failures.
Helios demonstrates the ideal light client architecture: stateless, cryptographically verified, modular, fast, and small.
A Zig reimplementation should mimic its structure:
- Verify consensus → verify state → expose RPC.
- Store almost nothing.
- Trust nothing that can be verified.
- Generalize header verification to any EVM chain.
This architecture yields a trust-minimized, embeddable Ethereum RPC suitable for browsers, mobile apps, rollup nodes, and cross-chain protocols.