Verifiable Unified Binary Trie

A binary trie running alongside Ethereum's Merkle Patricia Trie, linked by zkVM recursive proof chains that guarantee state equivalence.

The Problem

Ethereum's Merkle Patricia Trie (MPT) was designed for a pre-ZK world. Its hexary branching (16 children per node) means every state proof carries 15 sibling hashes per level — about 4,800 bytes per leaf across ~10 levels. Its nested "trie-of-tries" architecture forces double proof paths for storage access. And its RLP encoding and Keccak hashing are notoriously expensive inside zk circuits.

For PIR servers, this is especially painful: attaching Merkle proofs to database entries creates a ~150x storage blowup under MPT. A binary trie cuts this to ~40x (1,280 bytes per leaf) — and reduces per-level PIR query overhead from ~48x to ~9x. Light clients benefit similarly from the smaller, zk-friendlier proofs.

EIP-7864 proposes moving Ethereum to a binary trie, but the transition is complex and years away. We need a solution that works today.

The Solution: Verifiable UBT

The Verifiable Unified Binary Trie (UBT) runs as a sidecar alongside Ethereum execution clients, maintaining a binary trie that mirrors the MPT's state. A recursive proof pipeline generates succinct proofs that the UBT and MPT contain identical state at every block.

This gives light clients and PIR servers a zk-friendly state representation without requiring any changes to the Ethereum protocol.

Key Components

UBT Sidecar

Runs alongside Geth (and soon Ethrex for client diversity), converting MPT state diffs into the binary trie in real time and exposing UBT-specific RPCs: debug_getUBTState, debug_executionWitnessUBT, debug_getUBTProof.

Keeper (Proof Pipeline)

A decoupled proving component that consumes witnesses from the conversion layer and generates recursive proofs of UBT ↔ MPT equivalence per block. Proofs compose recursively into a single succinct proof for the entire chain.

OpenVM Backend

Proof generation uses OpenVM (Weaver), a general-purpose zkVM with a GPU prover that can execute arbitrary Rust programs inside a proof circuit.

Why It Matters

  • Light clients get compact, zk-verifiable state proofs over a binary structure — faster to verify and smaller to transmit than MPT proofs.
  • PIR servers can serve provable state, letting clients verify that the data returned by a PIR query is authentic without trusting the server.
  • Future-proofing — when Ethereum eventually adopts a binary trie (per EIP-7864), the UBT sidecar becomes a direct migration path.

Resources

← Back to Workstreams