argus/README.md

60 lines
3 KiB
Markdown
Raw Permalink Normal View History

# 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](PROTOCOL.md) for the on-chain design and its honest limitations.
## Layout
- `src/lib/bns.js` — protocol core: payload codec, chain indexer/resolver, tx builders
- `src/wallet-app.js` — wallet + embedded resolver + browser UI (`npm run wallet` → http://localhost:4626)
- `src/register.js` / `src/update.js` / `src/resolve.js` — CLI equivalents
- `wallets.json` — chipnet seed phrases (TESTNET ONLY — never reuse for real funds)
- `src/lib/gen-wallets.js` — one-time wallet generation (already run)
## Setup
1. `npm install`
2. 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.
3. `npm run wallet` and open http://localhost:4626
## Standalone resolver daemon (make EVERY browser resolve .bch)
- `src/daemon/bnsd.js` — DNS server (answers `*.bch` from 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`,
then `node 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 `.bch` queries 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.
- `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 `hello` with inline HTML (a website stored entirely on-chain),
then type `hello.bch` in 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>"}'`
then `node src/resolve.js hello`