# Root TLD certificate (BCNR's IANA-root) **Status: ✅ deployed on chipnet (2026-07-30).** The authoritative list of BCNR-native TLDs — the "IANA root" for BCNR — lives in a single on-chain certificate. Clients read it to know which TLDs BCNR considers its own, which is what makes multi-TLD support and collision detection work without hardcoded lists. ## The name **`tlds.bch`** — registered on chipnet (see the wallet's index). One record: - **`tlds`** (string) — space-separated list of TLD suffixes, lowercase, `[a-z0-9-]{1,16}` each. Bootstrap set (2026-07-30): `"bch p2p deviant nav sia dgb nt sm lm"`. Chosen shape: - **Space-separated string, not JSON.** Fits the 200-byte OP_RETURN payload comfortably, mirrors the existing `el` electrum-server-list record (`electrum.silentmode.bch`), avoids escaping in on-chain payloads. - **One well-known name at the well-known TLD (`.bch`).** No chicken-and-egg — a client that only knows `.bch` can still resolve `tlds.bch` and learn the rest. This is the sole hardcoded name; the rest are on-chain. ## Client API (`resolver-web.js`) ```js import { ROOT_TLD_NAME, BOOTSTRAP_TLDS, fetchBcnrTlds, getBcnrTlds, parseTldsRecord, isBcnrNativeTld } from "./resolver-web.js"; // One-shot: connect, read the on-chain list, return it const tlds = await fetchBcnrTlds({ WebSocket, electrum: [...] }); // Or reuse an already-built index (no extra round-trip) const tlds = getBcnrTlds(index); // Classify a TLD isBcnrNativeTld(tlds, "p2p") // -> true isBcnrNativeTld(tlds, "de") // -> false ``` Fallbacks: unpublished / unreachable / empty → `BOOTSTRAP_TLDS = ["bch"]`. Callers should treat the list as **live but cacheable** (short TTL, e.g. one hour) — every consumer already has a name-index cache, so add the TLD read to the same warm path. ## How to update the list Adding a TLD is one on-chain UPDATE (proves ownership by moving the certificate): ```js import { loadWallet } from "./src/lib/wallet.js"; import { updateName } from "./src/lib/bns.js"; const w = await loadWallet(); await updateName(w, "tlds.bch", { tlds: "bch p2p deviant nav sia dgb nt sm lm bit test x silentmode", }); ``` Once the tx confirms and resolver indexes refresh (typically < 60 s), every client picks up the new TLD without a software update or reinstall. The certificate is held by the operator wallet on chipnet — for a real deployment this needs to be a multisig, a covenant, or a governance body (Athenae council, see `ROADMAP-IDEAS.md §4`) so the root isn't controlled by a single key. ## What this unlocks 1. **Multi-TLD resolution** (already live) — `bnsd` and Theseus accept any `