🌐

The TLD registry

Every BNS name lives under a top-level domain. Under Silent Mode's per-TLD registry, each TLD is itself a certificate on the Bitcoin Cash chain — minted once, held in a wallet, and required to exist before any name under it can be registered. Browse the list, see how it works, verify it against the chain.

Search a name → See current TLDs

What a TLD is here

A TLD (like .bch, .x, .p2p) is not just a convention. Each is a CashTokens NFT with the TLD label as its commitment, paying dust to a dedicated TLD-registry beacon on chain. That certificate is the on-chain proof the TLD exists — and, once enforcement is on, it is what makes any second-level name under it valid.

  1. Register the TLD first. An operator mints the TLD certificate. Without it, names under that TLD are not indexed by conforming resolvers.
  2. Then register names under it. Each name is a separate cert, minted through the registrar (sirius/register.html), and paid by the buyer to their own wallet.
  3. Verify against the chain. Anyone can walk the TLD beacon (bchtest:qzc4c76vtw9nd49g6x8nmvc0jz62uvk4dc7hmpmerh on chipnet), rebuild the list, and compare its cryptographic root — the tracker is a cache, not authority.
Why this exists. 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 about what exists. Per-TLD certificates make the TLD set itself something the chain records, so every resolver sees the same list. Design: Decentralized.DNS/DESIGN-tld-registry.md in the project repo.

Current TLDs (chipnet)

Fourteen TLDs are offered for public name registration on the chipnet TLD beacon as of 2026-08-29. The live count on the chain is the authoritative source — this table may lag by minutes until the beacon confirms.

TLDCategory (short)Status
.bch 56253dcfbdfbeec8…public
.p2p d9b4e56d2293a4f9…public
.bit bc51b2407b13876e…public
.nav d2191a86685fa4c9…public
.test 5197632adf1f7fd3…public
.x 8dc32d8fd56f863b…public
.asm 58d3381435268faf…public
.neo a511e80816976e92…public
.gt 249a535df4633767…public
.sc f61fc465404a3eee…public
.sia 4b3fccd4076eb48c…public
.dex 9b230313b823202c…public
.cex 69fd93aedee3d353…public
.nt 5d18221bccaab2c0…public

Get a name under one of these

Go to Sirius / register a name. Type a label — the search fans out to every TLD in the registry in parallel and shows which are available, which are taken, and which are held off the public registry. Available ones mint straight into your own wallet in one transaction; no yearly renewal.

How new TLDs get added

On chipnet the operator's key can mint any TLD directly. On mainnet, a covenant will enforce a countersignature from that same key on every public TLD mint — and a USD-denominated price floor tiered by label length. This is what keeps someone from land-grabbing every ICANN TLD in one afternoon.

  1. Operator TREG. The operator's wallet mints the TLD certificate; the label goes into the NFT commitment, dust flows to the TLD beacon.
  2. UI opt-in. The TLD is added to the registrar's list. A TLD can be minted but intentionally omitted from the UI — the "held" pattern that keeps .com off the public registry.
  3. Snapshot republish. The tracker rebuilds and pushes a signed snapshot to Sia and Nostr so downstream clients update without walking the chain themselves.
Chipnet is not mainnet. The covenant that turns "operator's key" into something enforceable is a mainnet requirement. Until it lands, treat the chipnet TLD list as an operator-signed statement, not a decentralized fact.

Verify the list against the chain

The tracker is a cache. The chain is the authority. Two independent paths, both public:

Fetch the signed snapshot from Nostr

Kind 30078 replaceable event, d-tag bns-tld-list, signed by the tracker's Nostr key. Any relay carries it; the event's content field carries the current snapshot root and the Sia URL where the full JSON lives.

Pubkey (x-only, hex)
f2c925194c531c7c398017e35b2396df64a61a613aa5fadebdf1f4990f2267f4
Relays
wss://nos.lol · wss://relay.damus.io
Filter (nostr-tools / rust-nostr)
{ authors: [<pubkey>], kinds: [30078], "#d": ["bns-tld-list"] }

Rebuild locally from the TLD beacon

Any electrum server that indexes the chipnet chain will return the beacon's history. Recompute the snapshot's canonical form (sort by TLD, JSON.stringify), sha256 it, compare — if the hash matches the tracker's root, the snapshot is a faithful summary of what the chain says.

cd Argus && node --input-type=module -e "
import { loadWallet } from './src/lib/wallet.js';
import { buildTldSnapshot } from './src/lib/tld-index.js';
import { TLD_BEACON } from './src/config.js';
const w = await loadWallet('main');
const history = await w.provider.getHistory(TLD_BEACON);
const txs = new Map();
for (const {tx_hash} of history) try { txs.set(tx_hash, await w.provider.getRawTransactionObject(tx_hash)); } catch {}
console.log(buildTldSnapshot({ history, txs }));
process.exit(0);"