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
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,apianddassie. - 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.
- 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.
- Unseal. Only once it holds a receipt from every registrar does your node reveal the name and the salt.
- 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.
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