Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Floonet

Floonet is a network of Nostr relays for the Grin community. Anyone can run one, and anyone can run a name authority on one so people can claim (and optionally pay for) a name.

A Floonet relay is an ordinary Nostr relay with strong opinions. It stores only the handful of event kinds the Grin ecosystem actually uses, it says nothing about payments in its public metadata, it welcomes connections arriving through the Nym mixnet, and it ships hardened by default. Wallets like Goblin use Floonet relays to deliver gift-wrapped Grin payments and to resolve names like alice.

The two packages

Floonet ships as two relay packages. Both carry the same conventions; pick the one that fits how you like to operate.

PackageBaseShape
floonet-strfrystrfry (C++)Stock strfry at a pinned ref plus a spec: a modular write-policy plugin, a bundled name authority, and a TLS proxy, deployed as one Docker Compose unit.
floonet-rsnostr-rs-relay (Rust)A single binary with an installer and a hardened systemd unit. Policy lives in a composable admission module; the name authority and the GoblinPay payment processor are built in.

Both add the same four features, each configurable, optional, and modular:

  1. An event-kind whitelist (the keystone: default deny, see below).
  2. Authentication: NIP-42 plus pubkey whitelists.
  3. Paid access and paid names via GoblinPay (Grin).
  4. A name authority: the NIP-05 service that maps names to keys.

The whitelist keystone

The single most important design decision in Floonet is default deny. A Floonet relay accepts only the event kinds it has been explicitly told to allow, and drops everything else. The initial allowed set is exactly what a Grin payment wallet needs:

KindWhat it is
0Profile metadata
3Contact list
5Deletion request (NIP-09)
13Seal (NIP-59)
1059Gift wrap (NIP-59): the sealed envelope payments travel in
10002Relay list (NIP-65)
10050DM relay list (NIP-17)
27235HTTP auth (NIP-98): used by the name authority

Everything else, notes, reactions, long-form content, is rejected. This keeps a Floonet relay lean, cheap to run, and uninteresting to abuse. The list is one editable config value in both packages, so it can grow later without code changes. See The whitelist: default deny.

How to read these docs

  1. Concepts: the ideas every operator should know, whichever package they run.
  2. floonet-strfry and floonet-rs: deploy, configure, and extend each package.
  3. Operate: hardening, rate limits, and charging GRIN for relay resources.
  4. Reference: config keys, endpoints, and the allowed-kinds table.

Where these docs cite code, they use file:line references into the package source or the pinned upstream so you can read along.