One shared pool on Ethereum. Notes instead of balances. Proofs instead of signatures.
WalkthroughUse ← → to step
↘Public wallet
Shared pool
▥Private note
Your assets, shielded.
Deposit ETH or a supported token from any wallet. Your browser creates an encrypted note for the amount, minus the 0.5% fee. The deposit itself is a normal public transaction.
Public footprintYour wallet, the token and the amount deposited
The pool holds the assets; encrypted notes record who owns what. A note is a Poseidon commitment to an owner key, a token and an amount, appended to a single Merkle tree. Privacy grows with everyone else’s deposits.
02
Move value. Keep the details.
A private send spends up to four of your notes and creates two new ones: one for the recipient’s zk1 address, one for your change. A relayer submits the proof, so no public wallet of yours appears in the transaction.
03
Public liquidity. Private ownership.
The pool trades through Uniswap’s Universal Router across v2, v3 and v4, with ETH on one side. Your minimum output is bound into the proof. The trade is public; which notes paid for it is not. The output lands as a new note.
04
Back to public. On your terms.
Withdraw to any Ethereum address. The address, token and amount are public. Waiting, and avoiding round or matching amounts, keeps the link to your deposit weak.
Fees
Clear fees. Before you move.
Protocol fees go to the treasury, on-chain, in the asset you move. Gas and relayer fees are separate.
Action
Protocol fee
Shield
0.5%
Private send
0%
Swap
0.5% of the ETH side
Withdraw
0.5%
Fee calculator
Protocol fee
0.5% of the amount shielded. Gas is separate.
A little less public.
Shield, send, swap. Keep the receipts to yourself.