Zero-knowledge mixer · BNB Chain
Send without a trail.
Deposit a fixed amount of IDDR, USDT or BNB and keep your note. Withdraw to any address later, and nobody can tell which deposit it came from.
Withdraw
Bring your funds back out.
Paste your note. The proof is generated in this browser, and your note never leaves it.
Proof generation downloads about 5 MB of proving files the first time.
How it works
Every deposit looks the same.
Each pool takes one asset in one fixed size. Deposits are stored as fingerprints in a shared Merkle tree. To withdraw, you prove that one of the fingerprints is yours without saying which one.
-
Deposit
Your browser picks two random numbers, the nullifier and the secret, and hashes them into a commitment. Only the commitment goes on-chain, together with exactly one note's worth of the asset. The two numbers become your note.
-
Wait
Other people deposit too. Every deposit in the pool when you withdraw is a candidate for where your withdrawal came from. That group is the anonymity set.
-
Withdraw
From the note, your browser rebuilds the tree and generates a zero-knowledge proof: "I know the secrets behind one of these commitments." It also reveals a nullifier hash that marks the note as spent, without pointing at your deposit. The pool checks the proof and pays the recipient.
Why it holds up
- Can't be matched. The deposit shows Poseidon(nullifier, secret); the withdrawal shows Poseidon(nullifier). Without the note, nobody can connect them.
- Pays once. Each note has one nullifier hash, and the pool rejects it after the first withdrawal.
- Can't be redirected. Recipient, relayer and fee are inputs to the proof, so copying a pending withdrawal gets an attacker nothing.
- The owner can't interfere. The owner can pause new deposits and cap the pool. Withdrawals can't be paused, and nobody can move your funds.
Keep the link broken
- Wait for more deposits before withdrawing.
- Withdraw to a fresh address, from a wallet that isn't the one you deposited from, or through a relayer.
- Don't withdraw minutes after depositing.
- Lose the note and the funds are gone. Leak it and anyone can take them.
Limits
- Pools don't share anonymity: a 0.1 BNB withdrawal can only come from a 0.1 BNB deposit.
- IDDR's issuer can blacklist addresses, pause the token or burn balances, including the pool's. USDT on BNB Chain and BNB have no such controls.
- The proof system needs a trusted setup. NyxPool's verifier must come from a multi-party ceremony before any pool goes live.