Proof of Innocence (Association Set Proofs)
Let users prove their funds are not associated with illicit activity without revealing the deposit, transaction history, or counterparties. Two protocol variants exist: prove at withdrawal against a curated set root, or prove at deposit with proof propagation through subsequent transfers. Both rely on Merkle tree membership or exclusion proofs with zero-knowledge proofs and differ in timing, proof direction, and set management.
Let users prove their funds are not associated with illicit activity without revealing the deposit, transaction history, or counterparties. Two protocol variants exist: prove at withdrawal against a curated set root, or prove at deposit with proof propagation through subsequent transfers. Both rely on Merkle tree membership or exclusion proofs with zero-knowledge proofs and differ in timing, proof direction, and set management.
- Shielded pool contract that stores deposit commitments and nullifier sets.
- Zero-knowledge proof verifier that checks Merkle-branch statements against set roots.
- Set providers that publish curated set roots. Two models:
- Association-set providers publish flexible, jurisdiction-specific sets. Sets can be inclusion-based ("low-risk deposits permitted"), exclusion-based ("all except sanctioned"), or hybrid.
- Blocklist providers publish exclusion-based lists of flagged addresses and transactions (for example, sanctions-oracle feeds).
- Data-availability path for the full set data (IPFS or off-chain storage with on-chain integrity anchors).
- Proof-inheritance tracker (deposit-side variant) that carries forward the proof status of a commitment through intermediate transfers.
Guarantees:
- Compliance signal without surveillance: the verifier learns
cleanornot proven cleanfor a specified set, never the transaction graph. - Deposit unlinkability: the proof does not reveal which deposit belongs to the user.
- Voluntary disclosure: the user chooses which set to prove against, avoiding a single mandatory global allowlist.
- Separating equilibrium: honest users benefit from proving; users excluded from credible sets cannot produce valid proofs against them.
Threat model:
- Set-provider integrity. A malicious or compromised provider can include or exclude specific deposits, effectively censoring users or diluting the compliance signal.
- Soundness of the zero-knowledge proof system and its trusted setup if applicable.
- Stale sets. Between set updates, newly flagged deposits still produce valid proofs.
- Small anonymity sets. Even a valid proof conveys little privacy when the set is tiny.
- Metadata such as relayer IPs, timing, and gas payer is out of scope for this pattern.
- Multiple providers introduce governance and coordination overhead for relying parties that accept proofs.
- Non-provers may be treated as non-compliant, penalising users with limited compute or connectivity.
- Regulatory acceptance of exclusion proofs as equivalent to traditional screening varies by jurisdiction and is still evolving.
- Set-update cadence trades off freshness against availability: standby windows delay usable funds, while long refresh intervals widen the window in which newly flagged deposits remain provable as clean.
A user withdraws from a shielded pool to an institutional exchange. The exchange requires proof of non-association with sanctioned addresses. The user generates a zero-knowledge exclusion proof against the relevant set and submits it with the withdrawal. The exchange verifies the proof, accepts the deposit, and never learns which deposit the user made or when.