How it works

Private transfers

Inside the pool, you can transfer value to any other user via their spending pubkey. No on-chain data links sender to recipient. The spend circuit enforces conservation of value.

Note A (in)Note B (in)Spend circuitverify membershipconserve valuePrivacyPoolmark nullifiersinsert outputsNote C (recipient)Note D (change)

2-in / 2-out note model

Every spend takes exactly two input notes and produces exactly two output notes — one for the recipient and one as change back to the sender. If you only need one input, the circuit accepts a dummy zero note. If no change is needed, the change note carries zero value.

ℹ
The spend circuit never reveals which notes are consumed. It only proves membership in the Merkle tree and that input value equals output value.

What gets recorded on-chain

  • ·Two nullifiers (proving the input notes are consumed).
  • ·Two new commitments (the output notes).
  • ·The Merkle root used for the membership proof.
  • ·No token address, amount, sender address, or recipient address.