You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The §4 identity lesson applied to money: short codes stay the wire/display
token, but each resolves through a registry (registry.json seed + operator
extensions, served at GET /api/currencies) to a canonical currency URI with
kind + settlement semantics. Kinds: fiat-iou, chain (settled by a publicly
verifiable on-chain tx — TBTC4/TBTC3 registered, testnets first), service
(serving IS the settlement — LLM inference tokens registered; an LLM agent
is a did:nostr key + signed transitions, no payment rails needed), mutual
(HRS). Registry is discovery, not permission: unknown codes transact
freely. Spec §5.2 rewritten; UI currency picker feeds from the registry;
roadmap gains v4 "the machine economy". 39 tests green.
"$comment": "SolidPay currency registry — every currency is a URI; short codes are display/wire aliases that resolve here. Served by every node at GET /api/currencies (operators may extend via <data>/currencies.json). Kinds: fiat-iou (settled out-of-band in the named fiat), chain (settled by an on-chain transaction on the named network), service (settled by delivery of the named service — e.g. LLM inference tokens), mutual (pure mutual credit, settlement by agreement).",
3
+
"currencies": {
4
+
"USD": {
5
+
"uri": "https://jss.live/solidpay/currency/usd",
6
+
"name": "US Dollar (IOU)",
7
+
"kind": "fiat-iou",
8
+
"decimals": 2
9
+
},
10
+
"EUR": {
11
+
"uri": "https://jss.live/solidpay/currency/eur",
12
+
"name": "Euro (IOU)",
13
+
"kind": "fiat-iou",
14
+
"decimals": 2
15
+
},
16
+
"GBP": {
17
+
"uri": "https://jss.live/solidpay/currency/gbp",
18
+
"name": "Pound Sterling (IOU)",
19
+
"kind": "fiat-iou",
20
+
"decimals": 2
21
+
},
22
+
"SATS": {
23
+
"uri": "https://jss.live/solidpay/currency/sats",
24
+
"name": "Bitcoin satoshis (IOU)",
25
+
"kind": "chain",
26
+
"network": "btc",
27
+
"decimals": 0,
28
+
"settlement": "on-chain bitcoin transaction; the creditor records it with settle"
"settlement": "a testnet3 transaction paying the creditor"
46
+
},
47
+
"HRS": {
48
+
"uri": "https://jss.live/solidpay/currency/hrs",
49
+
"name": "Hours (time credit)",
50
+
"kind": "mutual",
51
+
"decimals": 2,
52
+
"settlement": "an hour of work; the creditor records it with settle"
53
+
},
54
+
"LLM": {
55
+
"uri": "https://jss.live/solidpay/currency/llm",
56
+
"name": "LLM inference tokens (generic)",
57
+
"kind": "service",
58
+
"decimals": 0,
59
+
"settlement": "delivery of inference: the provider serving tokens IS the repayment — the creditor (consumer) records served usage with settle",
60
+
"$comment": "Provider/model-specific token currencies SHOULD mint their own code + URI (e.g. LLAMA70B -> <provider-agent-uri>/currency/llama-3-70b). An LLM agent is a did:nostr key + buildTxEvent; the 402 loop composes: request -> 402 -> signed payment over the trustline -> retry."
returnsend(res,200,{ currencies,note: 'codes are aliases; the uri is the currency\'s canonical identity. Unknown codes transact freely — the registry is discovery, not permission.'});
0 commit comments