How others reach you
Your laptop has no public address, and nobody can dial it. So your node does the dialing: it connects out to a few nodes on servers, and keeps a connection open to one machine through which other wallets reach your address. This page explains both, and what they cost you.
On this page
A node at the edge
The node in the desktop app is always a periphery node. Its wallet listens on your own computer only, and nothing outside can open a connection to it. Nodes on servers with a public address and a domain name are core nodes, and your node reaches the network through them.
That is a choice of the app, not of your settings. Even with a hostname set in the wallet, the app's node stays at the edge. Core and periphery explains the two kinds of node.
Uplinks
Your node looks up core nodes in the network's node list, which it gets from the testnet's bootstrap nodes, built into Dassie, and asks a few of them to peer. Those that agree are its uplinks. Your node gets an address beneath each of them, sends its payments through them, and receives through them. It never forwards anyone else's payments.
Peers settle only through settlement hubs, so your node asks only core nodes that are in a hub it is in. Until you join one, such as the testnet's XRP hub, it has no uplinks. Joining a hub shows how.
- It connects over QUIC, on UDP. Where your network blocks UDP, as some office and hotel networks do, it carries the same connection over a WebSocket on TCP instead, to the core node's HTTPS port. It tries UDP first each time, and the WebSocket a moment later, if UDP has not connected by then.
-
Behind a proxy, it sends those WebSocket
connections through the proxy that
https_proxynames, as other programs do. -
You can choose your uplinks by their node IDs, in
DASSIE_UPLINKS. Your node then asks only those, and waits for them rather than peer with others.
dassie status lists your uplinks and whether each is
connected. Network and peers
shows them in the wallet.
Your name and your relay
Other wallets pay you through Open Payments, which finds a wallet by
a web address. Your node's address is
https://<node ID>.dassiepay.net, with one address
beneath it for each asset. The wallet's Receive page shows them, and
the shorter payment pointers that mean the same.
Nobody can reach your laptop at an address directly. A front
door does it for you: a machine that serves a domain, such as
dassiepay.net, and that your node keeps a connection
open to, as its relay. The front door passes each request
for your address down that connection and your node's answer back.
It never dials your node. It reaches it only while that connection
is open, so only while the app runs.
-
The default is
dassiepay.net. Dassie has that front door built in, with its key, so your node dials it as soon as it is set up. You set nothing. -
You can choose another relay, or none, in
DASSIE_RELAY. Below shows how. - The connection is pinned to the relay's key, the built-in one or the one in the line you set. Nobody else can pose as your relay.
- Your node answers each request itself, and signs its answer with its own key. A Dassie client checks that signature against your node ID, so even the front door cannot change an answer unseen. Signed responses and names says more.
-
If you register a name, your
node is also reached at
<name>.<domain>at its front door, the same way.
dassie status names your relay and whether it is
connected, and so does the tray: Online means connected,
and Connecting… is what you see right after a start. The
wallet's Receive page says whether the dassiepay.net
address reaches you. Without a relay, the tray says Running,
without a relay, and you can still send.
Front doors reach only the nodes that keep them as their relay:
finding a node through any relay is not there yet. The wallet does
not ask you about your relay yet either; a guided setup that does is
still to be built. Later, testnet addresses move to
<node ID>.test.dassiepay.net, so that
dassiepay.net is left for the live realm.
What's next
What the front door learns
A relay is a machine someone else runs, and it sees some of what you
do. The default one, dassiepay.net, is a machine the
Dassie project runs. By keeping a front door as your relay, you let
its operator learn:
- that your node is online, since when, and from which IP address;
- every Open Payments request that comes for you, and your node's answer. It holds the secure connection to the payer, so it reads them in full, including the secret that sets up an incoming payment.
It does not see your recovery phrase, your wallet, your balances, or the payments you send. Peering, sending and your wallet work without it: while it is down, only payments to your address there fail. If that is more than you want to share, choose another front door, or none, below.
Why it works this way: a new node is meant to be reachable with no setup, and its owner can always say no.
Another relay, or none
Two environment variables choose your relay. The node reads them when the app starts, and a second start only shows the window of the app that runs already. So quit Dassie from the tray first, with Quit Dassie, and then start it with the variable set.
No relay
Set DASSIE_RELAY to nothing. Your node then keeps no
relay, not even the built-in one. Nobody can pay you at an address
under a front door, and the tray says Running, without a
relay. You can still send.
$DASSIE_RELAY= dassie-desktop
A front door
Anyone can run a front
door for a domain of their own. Its operator gives you one line
of JSON that names it. Put that line in
DASSIE_RELAY, and add your name under its domain,
<node ID>.<domain>, to
DASSIE_PUBLIC_NAMES:
$DASSIE_RELAY='{"id":"…","url":"https://relay.example.com","publicKey":"…","slhDsaPublicKey":"…"}' \
DASSIE_PUBLIC_NAMES=<node ID>.example.com dassie-desktop
Your node then keeps that front door as its relay, and is reached at
the new address. Its dassiepay.net address does not
reach it, and the wallet says so.
Keeping the setting
A variable you set in a terminal holds for that start only. The app
also starts at login, so put the variable where your desktop session
takes its environment from, and log in again. On most desktops that
run on systemd, that is a file in
~/.config/environment.d/, such as:
DASSIE_RELAY=
To go back to the built-in relay, remove the line and log in again. An empty value means no relay; only a variable that is not set at all means the default.
Environment variables describes every variable the node reads.
How a node keeps its relay, in the spec.