zerotracedocs

Key concepts

The handful of ideas behind zerotrace - public ZERO and notes, shares, harvesting, registration and the privacy set.

Public ZERO and private notes

ZERO is an ordinary ERC-20, launched on Pons. ZERO in your wallet is public ZERO: like any token balance, anyone can see it, and wallets, exchanges and aggregators handle it as usual. It earns nothing.

zerotrace adds a private side, the vault. Two actions move ZERO between the two:

ActionFromTo
ShieldPublic ZERO in your walletA new private note in the vault
UnshieldYour private notesPublic ZERO at any address

Privacy is a choice: ZERO bought on another app, an aggregator or the Pons site arrives as public ZERO, and stays public until you shield it. Buying in the zerotrace app is the exception: it buys and shields in one transaction, so the ZERO lands straight in a note.

→ Public ZERO and shielding

Notes

A note is a private piece of value. On-chain, a note is only a commitment: a hash that reveals neither the amount nor the owner. Next to it the chain stores the note's contents encrypted to the owner's viewing key, so the owner's app can find and read it.

Your private balance is the sum of your unspent notes. When you spend, the notes you use are marked as spent with a nullifier: a value that only the owner can compute, and that cannot be linked back to the note. New notes are created for the recipient and for your change.

→ Notes, commitments and nullifiers

Shares, not tokens

A note does not hold a number of tokens. It holds shares of the vault. The vault holds all the ZERO behind all the notes. The value of one share is:

share value = ZERO in the vault / total shares

When ZERO is donated to the vault, no shares are added, so each share, and each note, is worth more ZERO. Your private balance grows by itself, without any transaction and without anyone learning how much you hold.

→ The vault

Harvesting: where the yield comes from

Every ZERO trade on Pons, on the bonding curve and later on the Uniswap v4 pool, pays Pons' 1% trade fee, with no creator tax. Pons keeps 30% of that fee. The rest, 0.7% of the trade, goes in ETH to the zerotrace FeeHarvester, the contract Pons records as ZERO's creator fee recipient.

Anyone can call harvest(). It collects that ETH, first tops up the ETH the vault uses to pay for private transactions, then buys ZERO with the rest and donates it to the vault. The caller keeps 0.5% of the ETH as a tip, so nobody has to run it for the system to work.

Only notes earn from this. Public ZERO does not, so the place to hold ZERO is in private.

→ The vault and Fees

Keys

You never write down a new seed phrase. Your wallet signs one message, and the app derives from it:

  • a viewing key, which finds and decrypts your notes;
  • a nullifier key, which proves you own a note inside the proof.

Spending also needs a fresh signature from your wallet for each transaction. So a leaked activation signature reveals your notes but cannot move them.

You register your public keys on the vault once, so that other people can send you private notes.

→ Keys

The privacy set

Privacy comes from blending in. Every note ever created lives in one Merkle tree, and a proof shows that you spend some notes in that tree without saying which ones. The privacy set is the number of notes you hide among: the more people use zerotrace, the larger it is, and the better everyone is protected.

Early on the set is small, so timing and amounts matter more. Staying private has practical advice.

On this page