Menu

Names and addresses

Your node has an address for the network and names for people. This page explains which is which, how a node without a domain of its own gets one, and how short names are shared out fairly.

On this page
  1. Your node's addresses
  2. A node with a hostname
  3. Your default name
  4. Short names
  5. Who keeps the list
  6. Why a name can't be sniped
  7. Free, for now

Your node's addresses

Address Looks like Used by
Node ID 39 characters of a–z and 2–7 Everything: it is who your node is
Interledger address test.das.<node ID> Nodes, to route packets
Wallet address https://<name>/pay/xrp Other wallets and apps, through Open Payments
Payment pointer $<name> People, as a short way to write the default wallet address

Your node has one wallet address per asset it holds, such as /pay/xrp and /pay/dsusd. The payment pointer names the default one: the asset you chose, or the first one your node runs. The <name> in both is one of your node's names on the web, below.

Your node ID comes from your recovery phrase, so the same phrase always gives the same ID, and the same addresses.

A node with a hostname

A node you set up with a domain name, such as node.example.com, answers under that name alone: $node.example.com, or https://node.example.com/pay/xrp. It needs nothing else, and it does not answer under names it may hold elsewhere. Changing its hostname changes how other wallets know it.

Your default name

A node without a hostname, such as the desktop app, is reached through a front door. At the default one, its name is its node ID under dassiepay.net:

$<node ID>.dassiepay.net
https://<node ID>.dassiepay.net/pay/xrp

It needs no registration: any node has it, from the moment it has its key. Dassie has that front door built in as the default relay, so a node without a hostname keeps a connection to it with nothing to set. The name reaches your node only while that connection is open, and the wallet warns you when it is not. Typed into a browser, the name shows a short page from the front door, saying whose node it is.

The dassiepay.net front door is a machine the project runs. While your node keeps it, it learns when your node is online, and reads the Open Payments requests it passes on. What a front door can see says more. With DASSIE_RELAY set empty, your node keeps no relay, and this name reaches no one.

This first name is your node's main name: the one your wallet shows, and the one your node uses when it pays other wallets. Short names your node holds come and go; the main name does not.

To be reached at another front door instead, set DASSIE_RELAY to that front door's entry (its node ID, URL and keys, which its operator finds in its log) and add your node's name there to DASSIE_PUBLIC_NAMES, a comma-separated list. A node keeps one relay, so while it keeps another, your dassiepay.net name does not reach your node, and the wallet warns you about it. The formats are on Environment variables. Your node answers only to the names it knows are its own, and refuses any other, so no one passing requests on can make it answer under a name you did not choose.

Your own domain pointed at a front door, and the testnet's names moving under test.dassiepay.net so that dassiepay.net is kept for real money, are not there yet. What's next

Short names

A node ID is hard to say out loud. So your node can hold a name, such as kai, and be reached at $kai.dassiepay.net too, while your node keeps its connection to that front door. You register it on the wallet's Names page, and your node does the rest: Choose a name.

  • A name is 3 to 32 characters: lowercase letters, digits and hyphens, not starting or ending with a hyphen, and without two hyphens in its third and fourth places. A name is always shorter than a node ID, so the two never mix.
  • A few names are reserved, such as admin, api and dassie.
  • A name is granted an hour after you register it, at the earliest, and is yours for a year. Your node renews it by itself in its last month. If it lapses, it stays yours alone for another month, then it is free.
  • A node holds at most a few names at a time.

Who keeps the list

Names are kept by registrars: the bootstrap nodes your node is configured with, which are the testnet's four, built into Dassie, unless DASSIE_BOOTSTRAP_NODES names others. Each keeps its own list of names and who holds them, and serves it to anyone who asks.

A name's holder is the node that enough of the registrars list for it: four of the testnet's five. Every node, and every front door, reads the lists itself and comes to the same answer. One registrar that lies, or shows different lists to different nodes, cannot give a name two holders. When too few lists are fresh, a node keeps the holders it had rather than lose names to a registrar that is down.

Why a name can't be sniped

If you simply asked for a name, someone watching could see it and ask first. So registering takes two steps.

  1. Commit. Your node sends every registrar a sealed commitment: the name, mixed with a random salt and your node ID, so nobody can read it. Each registrar notes it in its log, in order, and answers with a receipt.
  2. Unseal. Only once it holds a receipt from every registrar does your node reveal the name and the salt.
  3. Decide. The earliest commitment to a name in each registrar's log wins. Someone who learns the name from your unsealing is too late: their commitment comes after yours.

Two nodes that commit to the same name at nearly the same moment can split the registrars, so that no one has enough of them. A registrar then lets the name go after a while, and it can be registered again. A registrar that is down holds up new names until it is back.

Why it works this way

Free, for now

Names cost nothing today, and the registrars only limit how fast anyone can register. That is fine on the testnet, whose names may be reset at any time. With real money, free names would go for good to whoever came first, so a node in the live realm takes no part in names.

Registration fees, and with them names for real money, are not there yet. What's next

Why these domains and the full rules, in the spec

A kopje of granite blocks against the sun, in veld grass; one dassie climbs its slab, one keeps lookout on top inside the sun, and one sleeps on the next rock; on a wide screen, a pair sits on a kopje to the left