zerotracedocs

Payment links

Pay anyone with a link, even someone who has never used ZeroTrace. Whoever opens it claims the ZERO, privately or to any address, without needing ETH.

A payment link holds ZERO that whoever opens the link can claim. The person you pay does not need to have turned on privacy, or to hold any ETH: they open the link, and the ZERO land in their own private balance, or at any address they choose.

A link works like cash in an envelope. Anyone who has it can claim it, once. Until then, you can take it back.

How it works

The link carries a fresh private key, made in your browser. The app derives privacy keys from it, exactly as it derives yours from your wallet's signature, and sends the amount privately to those keys. The key sits after the # in the link:

https://zerotrace.so/claim#k3J9xQ…

Browsers never send the part after the # to a server, so opening the link does not reveal the key to the site. Whoever claims uses that key to spend the note, from their own browser.

Open Send and choose As a link instead of To an address. Type the amount in ZERO and press Create link.

Confirm in your wallet

The first time in a session, your wallet signs a message that opens your payment links (see Keep links safe). It costs no gas. Then, as for any private send, your wallet signs a Spend request and your browser builds the proof. You pay one network fee, from your notes.

Share it

The app shows the link, a QR code and, on a phone, the share button. Send it to the person you are paying, in a private message, or show them the code in person.

A link must hold more than twice the network fee, because its claim pays one more fee from the link itself.

Opening the link shows the amount it holds. The person you paid then picks one of two ways.

Claim privatelyClaim to an address
What they needA wallet, to sign the activation message (twice the first time)Nothing: no wallet, no signature
Where the ZERO goA private note only they can readThe address they type, as public ZERO
Earns from fees afterwardsYesNo, until they shield it
What the chain showsA private transactionAn unshield: the address and the amount
ETH neededNoneNone

Both ways pay the network fee out of the link, so the claimer gets the amount less one fee. A private claim does not register the claimer's key. Their wallet works all the same: they can hold, sell, send and unshield the ZERO without any ETH, since private actions pay their fee from the notes. The wallet shows Register my privacy key until they register it, which takes a little ETH and lets others send to them privately.

What each side sees

WhoSees
YouA Payment link entry in your history, with the amount and the fee. Open link asks for the links signature once per session; then Copy link copies it again, on any device, and Status shows whether it was claimed.
The claimerThe amount, before claiming. After a private claim, a Received entry. It does not say who sent it.
Everyone elseA private transaction for the link, and one for the claim. Not the sender, the claimer or the amount, unless the claim went to an address.

After a private claim, you see that the link was claimed, and when, but not by whom: the claimer's note is encrypted to their own keys, which the link's key cannot read. A claim to an address is public: anyone, you included, can see the address and the amount.

Open Status under the link in your history. While the link is unclaimed, claim it privately yourself: the ZERO return to your notes, less one network fee.

  • Anyone with the link can claim it. Send it only to the person you are paying. The app you send it through keeps the message, so prefer an end-to-end encrypted one.
  • Your links open with a signature of their own. A link's key is derived from a second message your wallet signs, and from a random nonce written, encrypted, into the change note of the transaction that paid it. Your history can rebuild the link on any device, with the same wallet. The activation signature alone shows that a link exists and what it holds, but cannot open it. Sign the links message, like the activation one, only on the official app.
  • A claimed link is spent. Opening it again shows that it was claimed. It cannot be claimed twice.

What can go wrong

Message or symptomWhat it means
"A link must hold more than twice the network fee, which its claim pays."Raise the amount.
"This link holds nothing yet"The link's payment is not on-chain yet, or the link was never paid. Wait a moment and press Check again.
"This link was already claimed"Someone with the link claimed it, or you took it back.
"This is not a complete link"Part of the link was cut off. Open it exactly as it was sent.

On this page