install.ps1 root-cause fix - Every `& $node ... 2>&1` had been tripping PS 5.1's "$ErrorActionPreference=Stop + native-command stderr = terminating error" quirk. Trap-and-log added in 0.1.1 EXPOSED the bug (0.1.0 died at the exact same line -- silently). 0.1.2 routes both node calls through a new Invoke-NodeCapture helper that uses Start-Process -RedirectStandardOutput/Error to file, so PS 5.1 never touches the streams. Multi-source TLD cascade with on-disk cache - -Indexer now accepts a comma-separated list; default "https://navigate.st,https://silentmode.st". - Cascade (first hit wins): indexer[s] HTTPS -> local cache (C:\ProgramData\Ariadne\tlds-cache.json) -> electrum WSS (fetchTldList / legacy fetchBcnrTlds) -> bundled ariadne.config.json snapshot -> bootstrap [bch]. - Authoritative fetches (indexer or electrum) refresh the cache. Second install on a machine that has ever succeeded before is instant + always works offline. - Per-source deadlines kept tight (5s for indexer HTTPS) so a slow source can't stall the install. Upgrade over live install - .iss CurStepChanged(ssInstall) stops "BNS Resolver Daemon" + "BNS Sia Bridge" via schtasks + 1.5s pause before file replacement. Fixes "DeleteFile failed; code 5. Access is denied" on runtime\node.exe when upgrading a machine where the daemon is currently running. CA import - Switched Import-Certificate -CertStoreLocation Cert:\... to direct X509Store('Root', 'LocalMachine').Add(). Cert: PSDrive is not always loaded in -NoProfile elevated shells, which had broken the standalone unblock scripts. Verified end-to-end on this box: silent install -> exit 0, clean install.log, BNS Resolver Daemon running, 127.0.0.1:53 open, 9 NRPT rules (all TLDs including .bch), coinspectrum.bch resolves system-wide, tlds-cache.json populated. Deployed - dl.silentmode.st/AriadneResolver-Setup-0.1.2.exe - s3://bns/silentmode/dl/AriadneResolver-Setup-0.1.2.exe - silentmode.st + navigate.st/bns/silentmode.bch manifests advertise 0.1.2 - sha256 5a2c9e4f3c5e1a162008641019f5ffc35968751c0440f94d3c5fe67aafb8cc5e Local Dev <noreply@localhost> |
||
|---|---|---|
| setup | ||
| src | ||
| test | ||
| .gitignore | ||
| ariadne.config.json | ||
| BROWSER-PROMPT.md | ||
| build-web.mjs | ||
| DESIGN-collision-modes.md | ||
| DESIGN-hosting-pact.md | ||
| DESIGN-root-tld-cert.md | ||
| ENGINE.md | ||
| namespaces.pdf | ||
| OPERATIONS-electrum.md | ||
| package-lock.json | ||
| package.json | ||
| PROTOCOL.md | ||
| README.md | ||
| ROADMAP.md | ||
| sia-test.html | ||
BNS — Namecoin-style decentralized names on Bitcoin Cash (chipnet)
A working prototype of "Option 3": names are CashTokens name certificates on the BCH chain (no fork, no sidechain), records ride in OP_RETURN, discovery via a beacon address, and the resolver is embedded in a wallet app with a built-in browser pane — the Brave/MetaMask-browser architecture in miniature.
See PROTOCOL.md for the on-chain design and its honest limitations.
Layout
src/lib/bns.js— protocol core: payload codec, chain indexer/resolver, tx builderssrc/wallet-app.js— wallet + embedded resolver + browser UI (npm run wallet→ http://localhost:4626)src/register.js/src/update.js/src/resolve.js— CLI equivalentswallets.json— chipnet seed phrases (TESTNET ONLY — never reuse for real funds)src/lib/gen-wallets.js— one-time wallet generation (already run)
Setup
npm install- Fund the wallet with free chipnet tBCH: go to https://tbch.googol.cash/,
paste the wallet address (shown in the app sidebar or by
node src/lib/gen-wallets.js), pick chipnet, solve the captcha. ~0.001 tBCH funds hundreds of registrations. npm run walletand open http://localhost:4626
Standalone resolver daemon (make EVERY browser resolve .bch)
src/daemon/bnsd.js— DNS server (answers*.bchfrom the chain, forwards everything else upstream) + HTTP gateway that serves on-chain sites by Host header. Test unprivileged:node src/daemon/bnsd.js --dns-port 5354 --http-port 8081, thennode src/daemon/dig.js hello.bch.setup/install.ps1— run from an elevated PowerShell. Installs the daemon as a boot-time scheduled task (SYSTEM, auto-restart) and wires the OS to it:- default (
-Mode nrpt): adds an NRPT rule so only.bchqueries reach the daemon; all other DNS is untouched. -Mode full: points every adapter's DNS at 127.0.0.1 (daemon forwards non-.bch upstream, ncdns-style); original servers are saved and restored on uninstall.
- default (
setup/uninstall.ps1— reverses everything (rule/adapters/task).
HTTPS for .bch: the "BNS Local Root CA" (created on demand in ca/, keep
root-ca.key private) signs per-name certs. The daemon's :443 gateway mints
them on the fly for locally-served names; node src/lib/issue-cert.js <name>
issues one for a real server (see the coinspectrum.bch nginx vhost). The
installer trusts the root machine-wide and enables Firefox's
enterprise-roots policy; cert fingerprints are published in "tls" chain
records for pinning.
Caveats: browsers with "secure DNS" (DoH) enabled bypass the OS resolver — disable it or add an exception; ports 53/80/443 must be free.
Try it
- Register
hellowith inline HTML (a website stored entirely on-chain), then typehello.bchin the address bar — the app resolves it from the blockchain (not DNS) and renders it. - Or CLI:
node src/register.js hello '{"h":"<h1>Served from the BCH chain</h1>"}'thennode src/resolve.js hello