How ShieldFlow Works
A deep dive into privacy-preserving transactions with regulatory compliance. Learn how zero-knowledge proofs enable private withdrawals while maintaining compliance with global regulations.
Public Deposit
Deposit ETH or tokens to the ShieldFlow pool. Your deposit is public on-chain, but you generate a secret commitment that only you know.
- Connect your wallet and select the asset to deposit
- A cryptographic commitment is generated from your secret nullifier
- The commitment is stored in a Merkle tree on-chain
- You receive a 12-word recovery phrase to access your deposit
ASP Verification
Your deposit is reviewed by Association Set Providers (ASPs) who verify compliance against sanctions lists and known bad actors.
- ASP services monitor deposit events in real-time
- Compliance checks run against Chainalysis, TRM Labs, and OFAC lists
- Approved deposits are added to the ASP Merkle tree
- The ASP root is posted on-chain for verification
Private Withdrawal
Generate a zero-knowledge proof that proves you own a deposit in the approved set, without revealing which specific deposit is yours.
- Enter your recovery phrase to regenerate your secrets
- Generate a ZK-SNARK proof locally on your device
- The proof verifies: state tree inclusion + ASP approval
- Submit withdrawal to any address you choose
Zero-Knowledge Proofs Explained
ZK proofs let you prove something is true without revealing the underlying data.
The Cave Analogy
Imagine a circular cave with a door in the middle that requires a secret code. You can prove you know the code by entering one side and exiting the other, without ever showing the code itself. That's ZK proofs - proving knowledge without revealing secrets.
How ShieldFlow Uses ZK Proofs
- Prove your deposit exists in the state tree
- Prove your deposit was approved by ASP
- Prove the withdrawal amount matches your deposit
- All without revealing which deposit is yours
Emergency Exit: Ragequit
ShieldFlow includes an emergency withdrawal mechanism called Ragequit. If you ever need to withdraw without ASP approval (e.g., if ASP services are unavailable), you can use Ragequit.