Snapshot in-progress work: Ariadne mobile, Theseus password manager, Hephaestus
Several concurrent workstreams committed together as a checkpoint:
- Ariadne mobile resolver — BchFetcher/Bns/MainActivity resolution logic,
AndroidManifest + build.ps1
- Theseus password manager — settings.html/chrome.html/settings-preload.js UI +
main.js wiring + package.json resource; Argus password-vault.js, record-picker.js
(+ tests) and resolver-web.d.ts
- Hephaestus — new BCH-wallet OIDC auth-proxy + Forgejo docker-compose and
restic/S3 scripts (secrets referenced via env only; Hephaestus/.env is gitignored)
- Argus public-gateway.mjs updates
- Docs — root README, Email README/RUNBOOK, VPS access runbooks (Checkers/Deviant),
site/hermes, WebsiteDev registry + faster-blocks, Failures/ AAAA-mangle writeup,
Decentralized Storage map, coordination notes
- .gitignore — exclude /.keys/ and Hephaestus/.env
2026-08-14 23:17:18 +02:00
|
|
|
export function normalizeName(input: any): string;
|
|
|
|
|
export function buildIndex({ electrum, WebSocket: WS, client, directIP }?: {
|
|
|
|
|
electrum?: {
|
|
|
|
|
url: string;
|
|
|
|
|
ip: string;
|
|
|
|
|
}[] | undefined;
|
|
|
|
|
directIP?: boolean | undefined;
|
|
|
|
|
}): Promise<Map<any, any>>;
|
|
|
|
|
export function resolveName(input: any, opts?: {}): Promise<any>;
|
|
|
|
|
export function parseElectrumRecord(records: any): ({
|
|
|
|
|
url: string;
|
|
|
|
|
ip: string;
|
|
|
|
|
} | {
|
|
|
|
|
url: string;
|
|
|
|
|
ip?: undefined;
|
|
|
|
|
})[];
|
|
|
|
|
export function getElectrumServers(index: any): ({
|
|
|
|
|
url: string;
|
|
|
|
|
ip: string;
|
|
|
|
|
} | {
|
|
|
|
|
url: string;
|
|
|
|
|
ip?: undefined;
|
|
|
|
|
})[];
|
|
|
|
|
export function fetchElectrumServers(opts?: {}): Promise<({
|
|
|
|
|
url: string;
|
|
|
|
|
ip: string;
|
|
|
|
|
} | {
|
|
|
|
|
url: string;
|
|
|
|
|
ip?: undefined;
|
|
|
|
|
})[]>;
|
|
|
|
|
export function parseTldsRecord(records: any): string[];
|
|
|
|
|
export function getBcnrTlds(index: any): string[];
|
|
|
|
|
export function fetchBcnrTlds(opts?: {}): Promise<string[]>;
|
|
|
|
|
export function isBcnrNativeTld(tldOrList: any, tld: any): boolean;
|
|
|
|
|
export const BEACON: "bchtest:qp8njaa9a3ahg7259s5qajnce526n0rttsq8qwx4jl";
|
|
|
|
|
export const BEACON_SCRIPTHASH: "e1cdbba719436f49acb4bf245b44df875c6d6b405eda46a9d3e736d138102f3b";
|
BNS: per-TLD on-chain registry, multi-beacon indexer, enforcement gate
Per-TLD certificates on a distinct TLD beacon supersede the legacy list-in-one-NFT
model. TLD label is the NFT commitment; TREG/TUPD payloads on the TLD beacon
mirror REG/UPD on the name beacon. Chipnet TLD beacon:
bchtest:qzc4c76vtw9nd49g6x8nmvc0jz62uvk4dc7hmpmerh
scripthash c85db10e106606273422b2733b2a6fb8b35a4d0e7dbfb20cf59bdb0833c008b8
* config.js, resolver-web.{js,d.ts} — TLD_BEACON + TLD_BEACON_SCRIPTHASH
* bns.js — KNOWN_OPS { REG, UPD, TREG, TUPD }, registerTld/updateTld/normalizeTld
* bns.js + resolver-web.js — buildIndex({enforceTld:false}) drops name REGs
whose TLD lacks a live TLD cert at their block height (mempool-friendly).
Lockstep across both files.
* lib/tld-index.js — buildTldSnapshot({history,txs}) → deterministic root over
canonicalised tlds[]. Pure, importable, and stable across insertion order.
* indexer/bns-indexer.js — BeaconIndex is multi-beacon; ws handler dispatches
by scripthash; new HTTP endpoint GET /tld-list.json + /health behind
BNS_HTTP_PORT; state file v1 → v2 migrates in fromJSON.
* publish-tld-mirror.mjs — S3 (floating + immutable content-addressed) plus
NIP-33 kind 30078 d:bns-tld-list to Nostr relays, signed via nostr-tools
(libauth's Schnorr differs from BIP-340 and relays reject it).
* seed-tld-beacon.mjs — idempotent chipnet seed. Current set on the beacon:
bch p2p bit nav test x asm neo gt sc sia com dex cex nt (15). `.com` is
held by the operator: cert on-chain, excluded from public registrar UI.
Design + docs:
* Decentralized.DNS/DESIGN-tld-registry.md — schema, enforcement,
operator-countersig gate, USD-tiered pricing floors, fee splits,
tracker/mirror mechanics, migration/grandfathering.
* INSTRUCTIONS.md §3 rewritten for the 4-step flow (TREG → UI → deploy →
republish snapshot).
* site/tlds/ — public docs page listing current TLDs + verification paths.
* site/sirius/register.html — dropdown removed; parallel search across
every TLD in the TLDS array, sorted available → taken → not-on-registry.
Config:
* ariadne.config.json tlds → [bch, p2p, bit, nav, test, x] (CA constraints;
on-chain registry is now the authoritative source, config is fallback).
* setup/install.ps1 — reads TLD list via fetchTldList (per-TLD registry)
with fallback to fetchBcnrTlds (legacy tls.bch list-NFT) then config.
Tests:
* test/tld-index.test.mjs — 30 self-contained checks (multi-beacon dispatch,
state migration, ws routing, snapshot shape + root recomputability).
* test/tld-enforcement.test.mjs — synthetic + live chipnet integration
(with-gate correctly drops all pre-seed names).
2026-08-29 17:11:02 +02:00
|
|
|
export const TLD_BEACON: "bchtest:qzc4c76vtw9nd49g6x8nmvc0jz62uvk4dc7hmpmerh";
|
|
|
|
|
export const TLD_BEACON_SCRIPTHASH: "c85db10e106606273422b2733b2a6fb8b35a4d0e7dbfb20cf59bdb0833c008b8";
|
Snapshot in-progress work: Ariadne mobile, Theseus password manager, Hephaestus
Several concurrent workstreams committed together as a checkpoint:
- Ariadne mobile resolver — BchFetcher/Bns/MainActivity resolution logic,
AndroidManifest + build.ps1
- Theseus password manager — settings.html/chrome.html/settings-preload.js UI +
main.js wiring + package.json resource; Argus password-vault.js, record-picker.js
(+ tests) and resolver-web.d.ts
- Hephaestus — new BCH-wallet OIDC auth-proxy + Forgejo docker-compose and
restic/S3 scripts (secrets referenced via env only; Hephaestus/.env is gitignored)
- Argus public-gateway.mjs updates
- Docs — root README, Email README/RUNBOOK, VPS access runbooks (Checkers/Deviant),
site/hermes, WebsiteDev registry + faster-blocks, Failures/ AAAA-mangle writeup,
Decentralized Storage map, coordination notes
- .gitignore — exclude /.keys/ and Hephaestus/.env
2026-08-14 23:17:18 +02:00
|
|
|
export const PREFIX: "BNS1";
|
|
|
|
|
export const TLD: ".bch";
|
|
|
|
|
export const DEFAULT_TLD: "bch";
|
|
|
|
|
export const CHIPNET_ELECTRUM: {
|
|
|
|
|
url: string;
|
|
|
|
|
ip: string;
|
|
|
|
|
}[];
|
|
|
|
|
export const ELECTRUM_LIST_NAME: "electrum.silentmode.bch";
|
|
|
|
|
export const ROOT_TLD_NAME: "tlds.bch";
|
|
|
|
|
export const BOOTSTRAP_TLDS: string[];
|