๐Ÿ“š

sirius.x docs

How the pieces fit together: the TLD registry, name registration, records that tell the resolver where a site lives, the resolver itself, and how anyone can verify anything against the chain.

The TLD registry

Every BCNR name lives under a top-level domain whose certificate is itself a first-class token on the Bitcoin Cash chain โ€” an NFT with the TLD label as its commitment, paying dust to a dedicated TLD-registry beacon. That certificate is the on-chain proof the TLD exists, and once enforcement ships, it is what makes any second-level name under it valid to conforming resolvers.

Fourteen public TLDs on chipnet today (2026-08-29): bch p2p bit nav test x asm neo gt sc sia dex cex nt. The current list and per-TLD categories are at silentmode.st/tlds/.

Why per-TLD certs, not a single list. Without a registry, anyone could quietly declare a TLD against the same beacon by minting a name under it. That leaves resolvers in silent disagreement. Per-TLD certificates make the TLD set itself something the chain records, so every resolver sees the same list โ€” and TLDs become ownable assets that can carry policy, fees, and governance of their own.

Register a name โ€” end to end

The buyer's certificate mints straight to a wallet they control, in one transaction that also publishes the initial records and pays the beacon. Nobody including the operator can take the name back โ€” the covenant work in progress adds an expiry / reclaim clock but does not change who controls the key.

  1. Search a label across every TLD. The registrar fans out to every TLD in the registry in parallel and shows available / taken per row. Available names appear first.
  2. Create or connect a wallet. Built-in browser wallet (PBKDF2 โ†’ AES-GCM in localStorage) or WizardConnect to Cashonize / Paytaca โ€” both mint to the buyer's own key.
  3. Confirm the price. Miner fee + beacon dust + certificate dust + service fee. Chipnet placeholder is 10,000 sat; real pricing is a mainnet decision.
  4. The certificate lands in your wallet. The name resolves the moment the transaction confirms. Records can be set or changed later โ€” only your key can sign a UPD.

Records & hosting

A registered name carries a small JSON records object. Every record is optional and multiple can coexist. Priority order the gateway uses: h (inline HTML) โ†’ s3 (Sia bucket key) โ†’ ip (host header served by an IP) โ†’ u (redirect).

RecordMeaningTypical use
hInline HTML in the OP_RETURN payload itselfTiny sites, a profile, a link hub
s3A Sia bucket key (with auto-index for directory-style)Multi-file sites, permanent hosting
ipAn IPv4 address + optional tls fingerprintYour own server, apps behind an IP
uRedirect URLShort-form redirects to any web host
tlsSHA-256 fingerprint of the leaf cert served at ipChain-pinned TLS trust, no OS root store needed
np, nrNostr pubkey + relay listHermes / NIP-17 messaging bound to the name
elSpace-separated electrum server listOn-chain-updatable resolver bootstrap

Subdomains inherit from their parent with a slight priority tweak: for a subdomain query, ip beats s3 (Host-header semantics). Full rule is in Argus/src/lib/record-picker.js.

Resolver / gateway

Three paths, same chain data. Anyone can pick.

  1. Local โ€” Ariadne Resolver. A system-wide resolver that intercepts BCNR TLDs and answers them from the chain. Any browser you already use starts opening .bch URLs directly. Installs a local root CA for TLS. Download โ†’
  2. In-browser โ€” Theseus Navigator. A Chromium build with the resolver baked in, plus an on-chain TLS trust anchor. No OS trust-store install; nothing modified globally. Download โ†’
  3. Public gateway โ€” navigate.st. For anyone without the resolver installed: https://navigate.st/bns/<name>/ proxies through a hosted resolver. Same content, fewer guarantees โ€” trust the gateway to fetch honestly, or run one of the first two.

Pricing (mainnet)

On mainnet the covenant enforces USD-denominated floors, tiered by TLD label length. This is what keeps someone from land-grabbing every ICANN TLD in one afternoon. TLD registration is one-time โ€” a TLD is closer to a domain purchase than a lease.

Label lengthFloor (USD)Notes
1 char100,000Effectively unique; ENS-like scarcity
2 char50,000The .ai / .io tier
3 char15,000Order of magnitude below ICANN's $185k application floor
4 char5,000Floor for short but reasonable TLDs
5โ€“8 char1,000Bulk-registerable but not spam
9+ char250Descriptive TLDs, low economic gravity

On name registration under a TLD, the TLD's owner collects a share (fee_bps, default 5%, cap 50%). Chain-enforced when the TLD's policy is covenant; honour-system otherwise. Name registration is yearly and priced separately.

Tracker & mirrors

A tracker publishes signed snapshots of the TLD registry to Sia and Nostr so downstream clients don't have to walk the chain themselves. The chain is authoritative; the tracker is speed. Every snapshot carries a root hash anyone can recompute locally โ€” a lying mirror is caught by any recipient who bothers to check.

A conforming client falls through: (1) fetch snapshot from a mirror, (2) verify root, (3) if suspicious, walk the beacon and rebuild. All three yield the same list for any given block height.

Verify anything

You do not have to trust that sirius.x, silentmode.st, or navigate.st are serving honest content. Every name's certificate is on chain; every record is a signed on-chain payload; every host is checkable independently.

Confirm a specific name on chain

node --input-type=module -e "
import { loadWallet } from './Argus/src/lib/wallet.js';
import { resolveName } from './Argus/src/lib/bns.js';
const w = await loadWallet('main');
console.log(await resolveName(w.provider, 'sirius.x'));
process.exit(0);"

Fetch the operator-signed TLD snapshot from Nostr

Kind / d-tag
30078 / bns-tld-list
Pubkey (x-only, hex)
f2c925194c531c7c398017e35b2396df64a61a613aa5fadebdf1f4990f2267f4
Relays
wss://nos.lol ยท wss://relay.damus.io

Reach any site via more than one route

Same content should be served from at least two independent paths:

  • Direct BCNR: https://<name>/ (requires local resolver + CA)
  • Public gateway: https://navigate.st/bns/<name>/
  • silentmode.st mirror: https://silentmode.st/bns/<name>/
  • Direct from Sia (content-addressed) via the name's s3 record

Operator runbook

These docs describe what. The how โ€” exact bash commands to register TLDs, mint names, update records, and deploy โ€” is INSTRUCTIONS.md in the project repo. Clone the repo to read it:

git clone https://silentmode.st/sirius-x/repo/silent-mode.git
cat silent-mode/INSTRUCTIONS.md

The runbook covers CLI name registration, TLD-registry seeding, record updates, Sia upload, tests, and the historically-costly gotchas.