Ghostpay Open app

Docs

Ghostpay is a stealth payment app on Robinhood Chain. A receiver publishes one link; every payment to it lands on a new one-time address that only the receiver can identify and spend. It follows ERC-5564 (scheme 1: secp256k1 with view tags).

Keys

  • Your wallet signs a fixed message. The 65-byte signature is split and hashed (keccak-256) into a spending key s and a viewing key v.
  • The meta-address is the two compressed public keys S = s·G, V = v·G (66 bytes), shown as st:rh:0x….
  • Keys exist only in the open browser tab. Signing the same message again, on any device, gives the same keys.

Paying

  • The payer's browser picks a random r, computes R = r·G, the shared secret r·V and h = keccak(r·V).
  • The one-time address is the address of S + h·G. The view tag is the first byte of h.
  • StealthPay.payNative or payToken moves the money straight to that address and emits an Announcement with R, the view tag, token and amount.
  • Token payments carry 0.00002 ETH to the same address so it can pay gas when the receiver collects.

Receiving

  • The inbox reads every announcement and, for each, computes v·R. A wrong view tag is skipped after one multiplication.
  • For a match, the private key of the one-time address is (s + h) mod n. It is checked against the address before use.
  • Collect signs a transfer from each one-time address with its own key, to any address you enter. A fresh address keeps the link between payments and your main wallet hidden.

Names

setName(name, meta) stores a meta-address under a name (3-20 chars, a-z 0-9 _). First come; only the owner can update it. /pay/<name> links resolve it.

Contract

StealthPaydeploys at launch
ChainRobinhood Chain (4663)
Owner / adminnone
Feenone
Funds heldnone, every call forwards in full

Limits and risks

  • Unaudited. The contract is about 100 lines, no owner and no upgrade.
  • Amounts and timing are public. Paying an unusual amount at a known time can still be matched by an observer.
  • If you lose access to the wallet that signs the key message, you lose access to your payments.
  • The page asks the worker only for public announcements; your keys and matches never leave the browser.