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.