How It Works
ZeroK uses zero-knowledge cryptography to break the on-chain link between deposits and withdrawals. Here’s how.
The Three-Step Flow
1. Deposit
You deposit any amount of SOL into ZeroK. Behind the scenes, your deposit is added to a shared pool alongside deposits from other users. A cryptographic note is generated — this is your withdrawal key, and it’s automatically encrypted and stored on-chain so your wallet can always recover it.
2. Wait
As more users deposit into the same pool, the anonymity set grows. The anonymity set is the group of deposits that your withdrawal could plausibly belong to. A larger anonymity set means stronger privacy.
3. Withdraw
When you’re ready, you withdraw to any Solana address of your choosing — ideally a fresh wallet. Your browser generates a zero-knowledge proof that says: “I deposited into this pool” — without revealing which deposit is yours. The protocol’s smart contract verifies your proof and releases your funds. The protocol covers the gas, so the recipient wallet can be completely empty.
What Is a Zero-Knowledge Proof?
A zero-knowledge proof lets you prove something is true without revealing the underlying information. In ZeroK’s case:
- What you prove: “I made a valid deposit into this pool”
- What stays hidden: Which specific deposit is yours
Think of it like proving you have a ticket to a concert without showing the ticket itself. The venue knows you’re a valid ticket holder, but can’t identify your specific ticket number.
ZeroK uses Groth16 proofs — a well-established, efficient proof system. Proofs are generated entirely in your browser in just a few seconds.
The Role of Your Note
When you deposit, ZeroK generates a note — a small piece of cryptographic data that acts as your withdrawal key. The note is automatically encrypted using a key derived from your wallet signature and stored on-chain as part of the deposit transaction.
This means your privacy balances are tied to your wallet, not to any file on your computer. Reconnect with the same wallet and ZeroK scans the chain for your encrypted notes, decrypts them locally, and displays your private balance.
Your wallet is your recovery key. As long as you have your wallet seed phrase, your privacy balances are recoverable — across browsers, devices, and time.
During withdrawal, your browser uses the note to construct a proof. The note itself is never transmitted — it stays on your device and is only used locally to generate the proof.
Anonymity Sets
Privacy in ZeroK is collective. Every deposit into a pool grows the anonymity set — the group of deposits that any withdrawal could belong to. As long as the protocol has regular activity, an observer sees funds leaving the pool but has no way to determine which deposit is being claimed.
The more people using ZeroK, the stronger everyone’s privacy becomes. Your deposit strengthens other users’ privacy, and their deposits strengthen yours.
Technology Under the Hood
ZeroK combines several cryptographic building blocks:
- Groth16 proofs — fast, compact zero-knowledge proofs
- Poseidon hashes — a hash function designed for efficient use inside ZK circuits
- Merkle trees — a data structure that efficiently tracks all deposits
All proof generation happens in your browser. Your secrets never leave your device.