Ghost cards
A ghost card lets people pay you without you giving out an address. You share one link. Every payment to it lands on a new address made for that payment alone, which only you can find and spend, and it shows up in Ghostdex as a ghost of its own. It uses ERC-5564 stealth addresses and the Announcer contract that already runs on Robinhood Chain. Nothing is deployed and nothing is written on chain until someone pays.
Getting your card
- 1Open Receive
In the app, open Receive. Your ghosts must be open in this tab. Your card is already there: it comes from your ghost root, so it is the same on every device that opens your ghosts.
- 2Name it, if you like
A name is optional. It travels after the # in the card's link, so Ghostdex never sees it.
- 3Share it
Copy the link, share it, or show its QR code. Put it in a bio, a DM or an invoice.
What the card is
The card is two public keys, a spend key and a view key, both derived from your ghost root on a branch of their own: keccak256(root ‖ "ghostdex receive spend") and keccak256(root ‖ "ghostdex receive view"). The link looks like ghostdex.app/pay/<88 characters>. Those characters are the two keys. They reveal nothing about your wallet, your ghosts or your links, and the preview shows only the card code: eight characters a payer can check with you.
Paying a card
The payer opens the link, connects any wallet, and picks a stock, USDG or ETH and an amount. Their tab picks a one-time key at random and works out, from it and the card, a new address that nobody has used. Then it sends three transactions, or two for ETH:
| Step | What it does |
|---|---|
| Announce | Calls announce on the ERC-5564 Announcer (0x5564…5564) with the new address, the one-time public key and a one-byte view tag. This is how you find the payment. It names the new address, never the card. |
| Gas | Sends the new address a little ETH for its gas: twice what a link carries, so about 0.00006 ETH at today's gas price and never less than 0.00004 ETH. That is enough to trade the payment, move it out, or send it on as a link, without topping it up from an address that would point back to you. |
| Payment | Sends the stock or USDG to the new address. For ETH, the payment and the gas go in one transfer. |
Paid from a ghost, each step is signed in the tab. Paid from a wallet, the wallet asks for each one. The announcement goes first, so a payment that stops halfway is still found with whatever arrived.
Finding your payments
While your ghosts are open, Ghostdex reads every announcement on the Announcer since Ghost Receive went live, all of them, and checks each one in the tab with your view key. The view tag rules out 255 in 256 announcements with one multiplication; the rest are checked against the address itself. The relay and the node only see a request for the whole list, the same for everyone. The view key never leaves the tab.
A payment that is yours becomes a ghost, Received 01, then 02, and so on. Its key is your spend key plus a number only you and the payer's tab could work out, so it is derived again on any device that opens your ghosts. Trade from it, send it on as a link, or move it out, like any ghost. Receive looks again every 15 seconds while it is open, and the app every minute.
Other wallets
The card uses ERC-5564 scheme 1, secp256k1 with view tags. Copy the stealth meta-address on Receive gives the standard st:eth:0x… form, for other wallets that pay stealth addresses on Robinhood Chain. Payments they announce on the same Announcer are found the same way.
What a ghost card does not hide
- The payer and the amount are public, like any transfer. The payer knows the address they paid and can watch it.
- The new address is visibly a stealth payment. The announcement shows that someone paid a fresh address. It does not show whose card it was.
- Each payment stays apart only while you keep it apart. Moving two payments into the same ghost, or into your main wallet, ties them together, and to that address, on the explorer.
- A card paid from a main wallet shows that wallet paying the new address.
- Anyone can make a card with any name on it. The card code is what a payer can check with you.
Ghostdex holds no part of a ghost card. It is two keys derived in your tab, and the payments are ordinary addresses on Robinhood Chain whose keys only your ghost root can derive. Back up your ghost root (Ghosts, Backup key) if your wallet might sign differently on another device: without it, payments to your card cannot be spent.