Skip to content
Anon Wallet

Zero-Knowledge Proofs

Zero-knowledge proofs (ZKPs) are the cryptographic engine behind Anon's privacy. They let you prove you know something — or that something is true — without revealing the thing itself.

The Intuition

Imagine you want to prove you're over 18 to enter a venue, but you don't want to show your ID (which reveals your exact birthdate and name). A zero-knowledge proof is like a magic stamp that says "verified over 18" without disclosing any other information.

In Anon's case, the "thing you're proving" is: "I own notes in the Railgun pool worth at least X tokens, and I'm creating a valid transfer to this recipient." For a private transfer, the proof verifies spending rules without disclosing the private notes. Shielding and unshielding still expose public addresses and amounts.

zk-SNARKs

Anon uses zk-SNARKs — Zero-Knowledge Succinct Non-interactive Arguments of Knowledge. The key properties:

  • Zero-knowledge: the verifier learns nothing beyond the truth of the statement
  • Succinct: the proof is small (a few hundred bytes) and fast to verify
  • Non-interactive: proof and verification happen asynchronously — no back-and-forth required

Railgun's circuits are built using the Groth16 proving system over the BN254 elliptic curve.

Proof Generation Is Local

A critical privacy property: proof generation happens entirely on your device. Private proof inputs are processed locally. The resulting transaction and required service data are sent through the selected delivery method. Local proving does not make every request or public transaction field private.

This means:

  • The proving service does not need your private spending inputs
  • Network availability and network-level privacy remain separate concerns
  • You still need to trust the wallet software and your device; proof generation happens locally against Railgun circuits

Performance

Generating a zk-SNARK proof is computationally intensive. On a modern machine, Anon typically generates a proof in 5–20 seconds depending on transaction complexity. This is a one-time cost per transaction; verification on-chain is fast and cheap.

Further Reading