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.
Create a link
Choose As a link
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.
Claim a link
Opening the link shows the amount it holds. The person you paid then picks one of two ways.
| Claim privately | Claim to an address | |
|---|---|---|
| What they need | A wallet, to sign the activation message (twice the first time) | Nothing: no wallet, no signature |
| Where the ZERO go | A private note only they can read | The address they type, as public ZERO |
| Earns from fees afterwards | Yes | No, until they shield it |
| What the chain shows | A private transaction | An unshield: the address and the amount |
| ETH needed | None | None |
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
| Who | Sees |
|---|---|
| You | A 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 claimer | The amount, before claiming. After a private claim, a Received entry. It does not say who sent it. |
| Everyone else | A 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.
Take a link back
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.
Keep links safe
- 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 symptom | What 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. |
Send privately
Pay another ZeroTrace user from your notes. Only the recipient learns the amount, and your address never appears in the transaction.
Private address
A link anyone can pay you with, which does not say who you are. Payers use ETH, public ZERO or their private balance; you collect the payments into your balance.