Schemes and hubs
A settlement scheme is how your node holds and moves one asset on one
ledger. This page lists every scheme a node can run, by the ID that
dassie status, dassie hub and
dassie setup --scheme use, beside the name the wallet
shows for it.
On this page
Reading an ID
A scheme's ID names its ledger, its network and its asset, in that
order: <ledger>-<network>-<asset>. The
network is left out on mainnet, so xrpl-testnet-xrp is
XRP on the XRP Ledger testnet, and xrpl-xrp is XRP on
mainnet. A settlement hub's scheme puts hub- before the
ID of the owner book it sits on: hub-xrpl-testnet-xrp
is a hub of testnet XRP.
Each scheme books on a ledger of its own in your node,
<scheme>+<asset>, such as
xrpl-testnet-xrp+xrp. Dollar tokens book as
USD, one to one. People pay you at a
wallet address that names the
asset alone, such as /pay/xrp; a hub's ledger shares the
address of its asset.
Each scheme belongs to one realm. A node runs only its own realm's schemes, fixed when it is set up, and the wallet offers only those. The live realm, which holds real money, is refused.
At a glance
| Scheme | In the wallet | Ledger | Network | Asset | Realm | Address |
|---|---|---|---|---|---|---|
xrpl-testnet-xrp |
XRP Ledger Testnet | XRP Ledger | testnet | XRP | test | /pay/xrp |
xrpl-testnet-dsusd |
DSUSD on the XRP Ledger Testnet | XRP Ledger | testnet | DSUSD, as USD | test | /pay/dsusd |
hub-xrpl-testnet-xrp |
XRP in a settlement hub on the XRP Ledger Testnet | a hub on the XRP Ledger | testnet | XRP | test | /pay/xrp |
hub-xrpl-testnet-dsusd |
DSUSD in a settlement hub on the XRP Ledger Testnet | a hub on the XRP Ledger | testnet | DSUSD, as USD | test | /pay/dsusd |
xrpl-xrp |
XRP Ledger | XRP Ledger | mainnet | XRP | live | /pay/xrp |
xrpl-rlusd |
RLUSD on the XRP Ledger | XRP Ledger | mainnet | RLUSD, as USD | live | /pay/rlusd |
hub-xrpl-xrp |
XRP in a settlement hub on the XRP Ledger | a hub on the XRP Ledger | mainnet | XRP | live | /pay/xrp |
hub-xrpl-rlusd |
RLUSD in a settlement hub on the XRP Ledger | a hub on the XRP Ledger | mainnet | RLUSD, as USD | live | /pay/rlusd |
stub |
Stub | none | none | USD | test | /pay/usd |
Owner books
The schemes on the XRP Ledger itself are owner books: they keep the books of what your node holds on its own XRP Ledger account, with your deposits and withdrawals, the ledger's fees and reserve. They peer with nobody. Peers settle with each other only over settlement hubs, and a hub is funded from the owner book of its asset.
Your node has one account on each network, whose keys come from your recovery phrase. The XRP and the dollar token of a network sit on the same account, and a token's fees are paid in that account's XRP. An owner book takes no config of its own: leave it empty.
xrpl-testnet-xrp-
XRP on the XRP Ledger testnet, on ledger
xrpl-testnet-xrp+xrp. It settles through the external assetxrpl-testnet-account/0. An account without funds asks the testnet faucet for test XRP. xrpl-testnet-dsusd-
DSUSD on the XRP Ledger testnet: Dassie's own test dollar token, issued by
rURgPoYNN7tGqBzGXFeCLmKYgpSjYgJP6M, booked asUSDon ledgerxrpl-testnet-dsusd+usd. It settles throughxrpl-testnet-account/0too, and pays its fees in that account's XRP. See Dollar tokens and the peg guard. xrpl-xrp-
XRP on the XRP Ledger mainnet, on ledger
xrpl-xrp+xrp, throughxrpl-account/0. Real money, in the live realm, which nodes refuse today. Mainnet has no faucet. xrpl-rlusd-
RLUSD on the XRP Ledger mainnet, issued by
rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De, booked asUSDon ledgerxrpl-rlusd+usd, throughxrpl-account/0. Real money, in the live realm, which nodes refuse today.
RLUSD on the testnet, xrpl-testnet-rlusd, is disabled:
DSUSD stands in for it. A node that ran it before keeps its books as
they were, but the scheme no longer starts and cannot be added.
The account's config
The external asset, your node's account on a network, has a config of
its own, apart from its schemes. Set it with
dassie setup --asset,
or with SetAssetConfig in the owner's API. An account
already running keeps its old config until the node restarts. The
config is JSON, each field optional; empty takes the network's
defaults:
server-
The XRP Ledger server, a
wss://URL. By default the project's proof server of that network. A server on another network than the account's stops the account. faucet-
The faucet an account without funds asks, an
https://URL, ornullto never ask. By default the testnet's. Mainnet takes onlynull. publishers-
The validator list publishers whose lists the node checks the ledger's proofs against. By default the network's own; a list you give replaces them.
$dassie setup --passphrase-file /root/phrase.txt \
--asset 'xrpl-testnet-account/0={"server":"wss://xrpl.example.net"}'
Hub schemes
A hub scheme is your node's account in one settlement hub, and the way it settles with its peers. A node is in at most one hub per asset, and the scheme's ID names that account too. Deposits into the hub leave the owner book of its asset, and withdrawals reach it, so a node in a hub runs that owner book as well. A DSUSD hub needs the XRP book beside it, which pays its escrow's fees.
A hub scheme's config is the rules of its hub,
{"rules":"<hex>"}, which the hub's founder gives
out. Where the release has a default hub
built in for the scheme, adding it without a config joins that hub,
and the node stores the hub's rules as the config, so the scheme
stays in that hub whatever a later release's default is. To
see and move the funds in a hub, use the wallet's
Hubs page or
dassie hub.
hub-xrpl-testnet-xrp-
XRP in a hub on the XRP Ledger testnet, on ledger
hub-xrpl-testnet-xrp+xrp, funded fromxrpl-testnet-xrp. This is the hubdassie setupjoins by default in the test realm. hub-xrpl-testnet-dsusd-
DSUSD in a hub on the XRP Ledger testnet, booked as
USDon ledgerhub-xrpl-testnet-dsusd+usd, funded fromxrpl-testnet-dsusd, withxrpl-testnet-xrppaying its escrow's fees. hub-xrpl-xrp-
XRP in a hub on the XRP Ledger mainnet, on ledger
hub-xrpl-xrp+xrp, funded fromxrpl-xrp. Real money, in the live realm, which nodes refuse today. hub-xrpl-rlusd-
RLUSD in a hub on the XRP Ledger mainnet, booked as
USDon ledgerhub-xrpl-rlusd+usd, funded fromxrpl-rlusd, withxrpl-xrppaying its escrow's fees. Real money, in the live realm, which nodes refuse today.
Why peers settle only over hubs
Default hubs
A release can build in a default hub for each hub scheme, with that
hub's rules. Where a scheme has one, the wallet offers it, and adding
it without a config joins that hub. Where it has none, the wallet
does not offer it, and you add it only with the rules of a hub as its
config. dassie setup joins the testnet's XRP hub unless
--hub
says otherwise.
| Scheme | Default hub |
|---|---|
hub-xrpl-testnet-xrp |
The testnet's XRP hub, founded by boot1 with four
of the bootstrap nodes, boot1 to
boot4, as its validators.
|
hub-xrpl-testnet-dsusd |
The testnet's DSUSD hub, founded the same way, with the same four validators. |
hub-xrpl-xrp |
None built in yet. |
hub-xrpl-rlusd |
None built in yet. |
dassie hub status shows a hub's ID on its
ID line. The testnet's two default hubs have these IDs, and
their escrows these addresses on the XRP Ledger testnet:
hub-xrpl-testnet-xrp
ID 5b4e3d7b99aa06f03642f872efd905f32a6183a09d2faf02327f49d6f3d2c308
Escrow rwLtDoCscTc6YWo82BefD27BPmQZVYprV
hub-xrpl-testnet-dsusd
ID 8a33d0f5759f5411e1118b98adb1ab9f2831323ca01ab1287c372ccb72a11f3d
Escrow rDkVZmGMF5PEWnADsnqfTNr8WQDdrXpzS5
Mainnet's default hubs are not there yet: they come once the project's validators on mainnet found them. Until then, a mainnet hub scheme runs only with the rules of a hub as its config. What's next
To found a hub of your own, see Found a hub.
Why a scheme stays in the hub it was added with
For testing
stub-
Test dollars with no ledger beneath them, on ledger
stub+usd, for development and tests. Anyone peered over it can mint money, so only a build with debug assertions runs it: the local dev network, the tests and the simulations. A release neither offers nor runs it.Its config picks its kind:
{"trust":"unlimited"}or empty, whose peers never settle, or{"commitments":N}, which behaves like a hub's member without a hub.