Files
pse.dev/content/projects/pir-scaling-semaphore.md
GarmashAlex 2832c414bc chore: fix typos (#519)
* Update pir-scaling-semaphore.md

* Update plasma-fold.md
2025-07-23 12:52:15 +02:00

3.8 KiB
Raw Permalink Blame History

id, name, image, section, projectStatus, category, tldr, tags, links, team
id name image section projectStatus category tldr tags links team
scaling-semaphore-pir Scaling Semaphore PIR Merkle-Path Retrieval pse inactive research 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.
keywords themes types
Semaphore
PIR
LeanIMT
zero-knowledge proofs
privacy
Merkle tree
privacy
scalability
identity
research
development
discord
https://discord.com/invite/sF5CT5rzrR
name email
Brechy brechy@pse.dev

Scaling Semaphore PIR Merkle-Path Retrieval

Scaling Semaphore Private Merkle-Path Retrieval with PIR

Project Overview

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 natively 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.

Why PIR matters

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.

Technical Approach

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

  1. Client computes the indices of its Merkle path.
  2. Client sends a PIR query for those indices to the server.
  3. Server responds with encrypted buckets; client decrypts to obtain hashes/leaves.
  4. Client generates the standard Semaphore ZK proof locally; nothing is leaked to the server.

Current Status

The project has been completed see here for more information.

Use-cases Enabled

  • World-scale anonymous voting without delegating proofs to a company server.
  • On-chain reputation where users prove historical actions privately.
  • Privacy-preserving NFT drops that gate by membership but hide identities.

Resources

Contact