Private Information Retrieval lets Semaphore users fetch their Merkle path from a server without revealing which identity they own, enabling truly private proofs for groups with millions of members.
The project tackles the privacy bottleneck that appears when Semaphore groups grow to millions of members. In large groups, a user must obtain their Merkle-path (all sibling hashes from leaf to root) from a remote database before they can create a zero-knowledge membership proof. Asking for that path naïvely reveals which identity they own.
This project solves the problem by letting users query the server with Private Information Retrieval (PIR). PIR lets a client fetch database records without the server learning which records were requested, preserving full anonymity at Internet scale.
Traditional PIR protocols were too heavy for on-chain use. Recent schemes—e.g. Respire and Frodo-PIR—support 2²⁰ elements (≈ 1 million) with sub-second online latency and no trusted setup. By storing Merkle leaves/hashes in PIR-friendly chunks (32 B records) we can keep group trees on a server while users privately retrieve only the ~64 kB they need for a proof.
Component | Role |
---|---|
Lean Incremental Merkle Tree (LeanIMT) | Append-only tree used by Semaphore; gives deterministic indices so the client knows exactly which nodes to fetch. |
PIR Layer (Respire) | Batched, lattice-based PIR with no offline phase; ideal for many small records. |
lean-imt integration | Rust implementation and benchmarks with Respire |
Data flow
Integrating Nova into the EVM involves wrapping Liam Eagen's theoretical ECIP argument in Halo 2
A protocol for creating cryptographic proofs of authenticity for any data on the web.