sirius/index.html
Local Dev 36794c91d2 sirius.x: initial landing page (docs + registration hub)
Register the name (chipnet), upload the page to Sia, mirror on VPS. Content
consolidates existing docs (silentmode.st/tlds/, INSTRUCTIONS.md) into one
canonical entry point and names the deferred pieces — wallet portal, Sirius
Studio site editor, decentralized git remote — as roadmap items.

  * name: sirius.x, REG txid 15bec52981fa82f9fa1c966600204112b7478a821f8384e0c8fecaea375215e9
  * records set via UPD: {"s3":"bns/sirius.x/"}
  * mirrors live: https://silentmode.st/sirius-x/ (VPS, immediate) and Sia
    bucket bns/sirius.x/ (BCNR route via navigate.st/bns/sirius.x/ pending
    Sia propagation to the gateway's s3d)
2026-08-29 19:44:50 +02:00

261 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>sirius.x — the home for names on Bitcoin Cash</title>
<meta name="description" content="sirius.x is the operator-run entry point for BCNR: register a top-level domain, register a name under one, look up records, verify anything against the chain. Backed by Sia storage, mirrored on the operator's VPS, name published on the chain.">
<style>
:root{
--bg:#0b0e14; --panel:#141a24; --panel2:#18202c; --line:rgba(255,255,255,.09);
--ink:#e7eaf1; --mut:#8b98a9; --dim:#5e6678; --acid:#d6ff3d;
--chain:#d6ff3d; --sia:#b39ddb; --srv:#4fd1a5; --ok:#4fd1a5; --taken:#f6768a;
--warn:#ffc75f;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:radial-gradient(1100px 560px at 50% -12%,#16202e,var(--bg));
color:var(--ink);font:16px/1.65 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;min-height:100vh}
a{color:var(--acid)}
.wrap{max-width:980px;margin:0 auto;padding:0 1.2rem}
.topnav{position:sticky;top:0;z-index:20;display:flex;gap:2px;align-items:center;flex-wrap:wrap;
padding:10px 1.2rem;background:rgba(11,14,20,.82);backdrop-filter:blur(10px);
border-bottom:1px solid var(--line)}
.topnav .brand{font-weight:600;color:var(--ink);text-decoration:none;margin-right:14px;font-size:15px;letter-spacing:.2px}
.topnav .brand .g{color:var(--acid)}
.topnav a{color:var(--mut);text-decoration:none;padding:6px 12px;border-radius:8px;font-size:14px}
.topnav a:hover{color:var(--ink);background:var(--panel)}
.topnav a.here{color:var(--acid);background:rgba(214,255,61,.08)}
header.hero{text-align:center;padding:5rem 1.2rem 1rem}
.mark{font-size:56px;line-height:1}
h1{font-size:clamp(2rem,5.5vw,2.9rem);margin:.4rem 0 .3rem}
h1 .g{color:var(--acid)}
.tag{color:var(--mut);font-size:1.05rem;max-width:660px;margin:0 auto}
.cta{margin-top:1.8rem;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.btn{display:inline-block;text-decoration:none;padding:11px 20px;border-radius:10px;background:#4b7bec;color:#fff;font-size:14px;border:none;cursor:pointer;font-family:inherit;transition:filter .1s}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.btn.acid{background:var(--acid);color:#0b0e14;font-weight:600}
.btn:hover{filter:brightness(1.12)}
section{padding:2.6rem 0;border-top:1px solid var(--line);margin-top:2.5rem}
section:first-of-type{border-top:none;margin-top:1.5rem}
h2{font-size:1.5rem;margin:0 0 .4rem}
h3{font-size:1.1rem;margin:0 0 .35rem}
.lede{color:var(--mut);margin:0 0 1.6rem;max-width:720px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px}
.card h3{margin:0 0 .5rem;display:flex;align-items:center;gap:8px}
.card p{margin:0;color:var(--mut);font-size:14px}
.card .cta{margin-top:14px;justify-content:flex-start}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.d-chain{background:var(--chain)} .d-sia{background:var(--sia)} .d-srv{background:var(--srv)}
.note{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--acid);
border-radius:10px;padding:14px 18px;color:var(--mut);font-size:14px;margin-top:1.4rem}
.note.warn{border-left-color:var(--warn)}
.note b{color:var(--ink)}
code,.mono{background:#0e131b;border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:13px}
pre{background:#0e131b;border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow-x:auto;
font-family:ui-monospace,monospace;font-size:13px;color:var(--ink);margin:1rem 0}
ol.steps{counter-reset:s;list-style:none;padding:0;margin:1.2rem 0 0;display:grid;gap:10px}
ol.steps li{counter-increment:s;display:grid;grid-template-columns:30px 1fr;gap:14px;align-items:start;
background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:13px 16px}
ol.steps li::before{content:counter(s);grid-column:1;grid-row:1;
display:grid;place-items:center;width:24px;height:24px;border-radius:50%;
background:rgba(214,255,61,.14);color:var(--acid);font-size:12.5px;font-weight:700}
ol.steps li > *{grid-column:2;min-width:0}
ol.steps b{color:var(--ink)} ol.steps span{color:var(--mut);font-size:14px}
.pill{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--dim);margin-left:8px;vertical-align:middle;font-weight:500}
.pill.soon{background:rgba(214,255,61,.13);color:var(--acid)}
.verify dt{color:var(--mut);font-size:12.5px;text-transform:uppercase;letter-spacing:.3px;margin-top:12px}
.verify dt:first-of-type{margin-top:0}
.verify dd{margin:2px 0 0;font-family:ui-monospace,monospace;font-size:12.5px;word-break:break-all;color:var(--ink)}
footer{border-top:1px solid var(--line);padding:2.4rem 0 3.5rem;color:var(--dim);font-size:13px;text-align:center;margin-top:2.5rem}
</style>
</head>
<body>
<nav class="topnav">
<a class="brand" href="./"><span class="g">sirius.x</span></a>
<a href="#try">Try it</a>
<a href="#docs">Docs</a>
<a href="#roadmap">Roadmap</a>
<a href="#verify">Verify</a>
<a href="https://silentmode.st/" rel="noopener">Silent Mode ↗</a>
</nav>
<header class="hero">
<div class="mark"></div>
<h1>Names on the <span class="g">chain</span>.</h1>
<p class="tag">sirius.x is the entry point for BCNR — Bitcoin Cash Name Registry.
Register a top-level domain, register a name under one, look up records,
verify anything against the chain. Backed by Sia storage, mirrored on the
operator's VPS, name published on chain — this page survives if any single
mirror goes down.</p>
<div class="cta">
<a class="btn acid" href="#try">Get started</a>
<a class="btn ghost" href="#docs">Read the docs</a>
</div>
</header>
<div class="wrap">
<section id="try">
<h2>Try it</h2>
<p class="lede">Three things you can do right now. The registrar and TLD-registry UIs live at
silentmode.st today; sirius.x is the canonical home and will consolidate them here.</p>
<div class="grid">
<div class="card">
<h3><span class="dot d-chain"></span> Register a name</h3>
<p>Pick a label, search across every TLD in the registry at once, mint the name
certificate straight into your own wallet. A few cents in chain fees, no yearly renewal.</p>
<div class="cta"><a class="btn acid" href="https://silentmode.st/sirius/register.html">Search a name →</a></div>
</div>
<div class="card">
<h3><span class="dot d-chain"></span> Register a TLD</h3>
<p>Under the per-TLD registry, a TLD is itself a certificate on the chain. Public mints
are operator-gated today; propose one below.</p>
<div class="cta"><a class="btn ghost" href="#request-tld">Propose a TLD →</a></div>
</div>
<div class="card">
<h3><span class="dot d-sia"></span> Look up &amp; verify</h3>
<p>Resolve any BCNR name, compare records across mirrors, and check the TLD registry snapshot
against the chain. Everything is publicly verifiable.</p>
<div class="cta"><a class="btn ghost" href="#verify">How to verify →</a></div>
</div>
</div>
</section>
<section id="docs">
<h2>Documentation</h2>
<p class="lede">The BCNR protocol, the TLD registry, and the wallet/registrar layer — in that order.
Everything is user-runnable; nothing here requires trusting a server.</p>
<h3 style="margin-top:1.4rem">The TLD registry</h3>
<p class="lede">Under the current design, every second-level name lives beneath a TLD whose
certificate exists on chain. No TLD cert → no valid name. The full model, current TLD list, and
verification paths are documented at
<a href="https://silentmode.st/tlds/" rel="noopener">silentmode.st/tlds/</a>. Fifteen TLDs
currently minted on chipnet: <code>bch p2p bit nav test x asm neo gt sc sia com dex cex nt</code>
(<code>.com</code> is held by the operator, not offered for public registration).</p>
<h3 style="margin-top:1.4rem">Register a name — end to end</h3>
<p class="lede">The buyer's certificate mints straight to a wallet they control, in one transaction
that also publishes the initial records and pays the beacon. Nobody, including the operator,
can take the name back — the covenant work in progress adds an expiry / reclaim clock but does
not change who controls the key.</p>
<ol class="steps">
<li><b>Search a label across every TLD</b> <span>The registrar fans out to all TLDs in the
registry in parallel and shows available / taken / held per row.</span></li>
<li><b>Create or connect a wallet</b> <span>Built-in browser wallet (PBKDF2 → AES-GCM in
localStorage) or WizardConnect to Cashonize / Paytaca — both mint to the buyer's own key.</span></li>
<li><b>Confirm the price</b> <span>Miner fee + beacon dust + certificate dust + service fee.
Chipnet placeholder is 10,000 sat; real pricing is a mainnet decision.</span></li>
<li><b>The certificate lands in your wallet</b> <span>The name resolves the moment the
transaction confirms. Records can be set or changed later — only your key can sign a UPD.</span></li>
</ol>
<h3 style="margin-top:1.4rem">Records — where a name points</h3>
<p class="lede">A registered name carries a small JSON records object. Every record is optional;
multiple can coexist. The gateway picks in order: <code>h</code> (on-chain inline HTML) →
<code>s3</code> (Sia bucket key) → <code>ip</code> (host header served by an IP) →
<code>u</code> (redirect). Subdomains inherit from their parent with a slight priority tweak
(see <code>record-picker.js</code>).</p>
<h3 style="margin-top:1.4rem">Where the chain is authoritative and where the tracker is a cache</h3>
<p class="lede">A tracker publishes signed snapshots of the TLD registry to Sia and Nostr so
downstream clients don't have to walk the chain. The chain is the authority; the tracker is
speed. Every signed snapshot carries a cryptographic <code>root</code> anyone can recompute
locally from the chain — a lying mirror is caught by any recipient that bothers to check.</p>
<div class="note"><b>Runbook — for operators / new sessions:</b> the exact commands to register
TLDs, mint names, update records, and deploy are in <code>INSTRUCTIONS.md</code> at the repo
root. The public docs above explain <i>what</i>; the runbook is <i>how</i>.</div>
</section>
<section id="request-tld">
<h2>Propose a new TLD</h2>
<p class="lede">The per-TLD registry means minting a TLD is a real, paid action — not a namespace
land-grab. During the alpha, all TLD mints are operator-signed. To propose a TLD, get in touch
via the channels below. The design (mainnet) adds an on-chain covenant with countersignature +
tiered USD price floors: 1-char $100k, 2-char $50k, 3-char $15k, 4-char $5k, 58-char $1k,
9+-char $250; one-time payment (not annual). See the design doc for the full model.</p>
<div class="note warn"><b>ICANN-adjacent TLDs (<code>.com</code>, <code>.io</code>, …) are
specifically not open for public mint.</b> They are reserved by the operator to prevent
squatting, and — under the covenant — even a fully-priced request will not be countersigned.
A TLD registry is only useful if it does not immediately collapse into an ICANN-shadow.</div>
</section>
<section id="roadmap">
<h2>What's coming</h2>
<p class="lede">sirius.x consolidates docs and registration today; three larger pieces are on the roadmap.</p>
<div class="grid">
<div class="card">
<h3>Wallet &amp; name portal <span class="pill soon">next</span></h3>
<p>Sign in with your BCNR wallet, see every name you own, edit records inline, mint or renew
from one place. Same self-custody as today — the portal never handles your keys.</p>
</div>
<div class="card">
<h3>Sirius Studio <span class="pill soon">planned</span></h3>
<p>An in-browser site editor for names you already own — the WordPress / Tilda / Wix pattern,
but the whole site persists to Sia and the name's <code>s3</code> record updates on save.
Sites live where the name says they live.</p>
</div>
<div class="card">
<h3>Decentralized git remote <span class="pill soon">separate track</span></h3>
<p>Forgejo on the VPS with automated Sia backups, so the git remote for BCNR-related repos
survives a VPS outage. sirius.x is the canonical URL; the underlying stack is a
concurrent-session build.</p>
</div>
</div>
</section>
<section id="verify">
<h2>Verify this page against the chain</h2>
<p class="lede">You do not have to trust that <code>sirius.x</code> is served by anyone specific.
The name's certificate is on the Bitcoin Cash chain; the records point to Sia; every path is
independently checkable.</p>
<h3>1. Confirm the certificate exists on chain</h3>
<pre>node --input-type=module -e "
import { loadWallet } from './Argus/src/lib/wallet.js';
import { resolveName } from './Argus/src/lib/bns.js';
const w = await loadWallet('main');
console.log(await resolveName(w.provider, 'sirius.x'));
process.exit(0);"</pre>
<h3>2. Fetch the TLD-registry snapshot from Nostr</h3>
<p class="lede">The operator-signed snapshot of the TLD list is published as a Nostr replaceable
event. Any relay carries it; the event's content field carries the current snapshot root.</p>
<dl class="verify">
<dt>Kind / d-tag</dt>
<dd>30078 / bns-tld-list</dd>
<dt>Pubkey (x-only, hex)</dt>
<dd>f2c925194c531c7c398017e35b2396df64a61a613aa5fadebdf1f4990f2267f4</dd>
<dt>Relays</dt>
<dd>wss://nos.lol · wss://relay.damus.io</dd>
</dl>
<h3>3. Reach this site via more than one route</h3>
<p class="lede">The same content should be served from at least two independent paths. If one
mirror is unavailable, the others still work. If two mirrors disagree, the on-chain record is
the tiebreaker.</p>
<ul style="color:var(--mut);font-size:14px;margin:.6rem 0 0;padding-left:1.2rem">
<li>Via any BCNR resolver: <code>https://sirius.x/</code> (requires the local root CA)</li>
<li>Via the public gateway: <code>https://navigate.st/bns/sirius.x</code></li>
<li>Via silentmode.st mirror: <code>https://silentmode.st/bns/sirius.x</code></li>
<li>Direct from Sia (content-addressed): the <code>s3</code> record on <code>sirius.x</code>
names the exact bucket key</li>
</ul>
</section>
</div>
<footer>
sirius.x — the Silent Mode name registry entry point ·
<a href="https://silentmode.st/">silentmode.st</a> ·
<a href="https://silentmode.st/tlds/">TLD registry</a> ·
<a href="https://silentmode.st/sirius/register.html">register a name</a><br>
Alpha on a test network (chipnet). You hold your own keys; verify everything against the chain.
</footer>
</body>
</html>