Paid names via GoblinPay
Summary. An operator can charge GRIN for names (or for write access). The price is a config value, payments are handled by a GoblinPay server the operator runs, and the relay’s public metadata stays payment-free throughout.
The model
GoblinPay is the Grin payment backend. The name authority (or the write-policy plugin, for paid writes) talks to it over REST:
- A user asks to register
alice. - With
FLOONET_PAY_MODE=name, the authority quotesFLOONET_NAME_PRICE_GRINand creates a GoblinPay invoice. - The user pays in GRIN: from Goblin Wallet over Nostr on the pay page, or, if the operator enabled GoblinPay’s optional grin1 rail (off by default), from any Grin wallet over Tor. A wallet that cannot deliver its slatepack automatically can paste it back into the pay page instead.
- GoblinPay confirms the payment on chain (payment proof included). “Confirmed” is GoblinPay’s house standard of
GP_CONFIRMATIONSon-chain confirmations, default 10. - The authority sees the confirmed payment and completes the registration. Results are cached with a TTL, so checks are cheap.
Until step 5, registration is refused. Change the price in config and the quote changes; no code involved.
Modes
FLOONET_PAY_MODE | Behavior |
|---|---|
off | Everything free (default) |
name | Claiming a name requires a confirmed payment of FLOONET_NAME_PRICE_GRIN |
write | Writing events requires a confirmed payment (the plugin enforces it per authed pubkey) |
What the client sees
The name-authority response for an unpaid registration carries enough information for a wallet to generate the payment page automatically: the future wallet claim flow is “type a name server and a name, press claim, get sent to a pay page”. The server side supports that flow today.
The neutrality rule still applies
Charging for names changes nothing about the relay’s public face: NIP-11 metadata stays neutral. Payments are a matter between the operator’s authority and the user’s wallet; the relay itself neither sees nor mentions them.
Beyond names
The paid gate is one mechanism applied to many resources. Names are the first; media storage is the documented second. See Media for GRIN.