argus/src/lib
Local Dev 4fb37e0683 bns: a registration is void unless its certificate is the only token of its category
Ownership of a name is proven by holding a token of its category: an update
is accepted when some output carries it. Nothing required that the
certificate be the only such token. Whoever registered a name could mint a
second one in the same transaction, a minting token for instance, sell the
certificate on the market, and later publish an update the resolvers would
accept. The buyer would hold the certificate and lose the name.

A registration now counts only if its category is created by that very
transaction, exactly one output carries it, and that output is an NFT with
no capability and no fungible amount. Nothing meeting this can ever have a
sibling. The same holds for TLD certificates, whose category proves the
right to set a TLD's policy and to co-sign registrations under it.

One definition, in resolver-web.js; bns.js and the TLD snapshot builder call
it. Every valid registration on chipnet already satisfied the rule: the live
registry is the same 71 names and 21 TLDs before and after.

Found while writing the delivery escrow, which had to forbid exactly this.
2026-10-04 16:13:04 +02:00
..
connect bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
blocklist-tx.js blocklist: write side, operator tool, and the tests the roadmap asks for 2026-10-04 02:32:59 +02:00
bns-index-core.js Theseus: read BNS names from Ariadne's indexer; its own is the standby 2026-10-03 17:06:24 +02:00
bns-pipe.js BNS indexer core, source chain and pipe protocol as shared modules 2026-10-03 16:01:26 +02:00
bns-source-chain.js Theseus: read BNS names from Ariadne's indexer; its own is the standby 2026-10-03 17:06:24 +02:00
bns.js bns: a registration is void unless its certificate is the only token of its category 2026-10-04 16:13:04 +02:00
ca.js Ariadne c5efae43: tlds.bch-driven install + BNS_POLICY, doc-aligned 2026-08-01 02:06:48 +02:00
chain.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
commit-box-artifact.js registry covenant v1: the contract that holds a name and enforces its lifecycle (draft) 2026-10-04 15:42:36 +02:00
covenant.js covenants: the subscription and the delivery escrow, on one shared base (draft) 2026-10-04 16:08:10 +02:00
delivery-escrow-artifact.js covenants: the subscription and the delivery escrow, on one shared base (draft) 2026-10-04 16:08:10 +02:00
dns-patch.js Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
dns-server.js resolver: echo EDNS OPT record so strict clients stop failing 2026-08-02 01:19:09 +02:00
electrum.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
escrow-covenant.js covenants: the subscription and the delivery escrow, on one shared base (draft) 2026-10-04 16:08:10 +02:00
gen-wallets.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
hermes-derive.js Hermes: wire NIP-17 messaging into Theseus, provision chipnet hermes.bch 2026-08-18 20:14:43 +02:00
issue-cert.js Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
manifest.js refactor(gateway): one definition of what makes a signed manifest valid 2026-09-28 01:01:27 +02:00
market-tx.js feat(market): names can be priced in US dollars — a covenant holds the certificate, a gateway-signed oracle sets the BCH amount 2026-09-20 19:20:46 +02:00
market-usd.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
name-index.js Theseus navigator UI overhaul, BNS-only indexer, site restructure 2026-07-30 08:16:55 +02:00
name-registry-artifact.js registry covenant v1: the contract that holds a name and enforces its lifecycle (draft) 2026-10-04 15:42:36 +02:00
orders.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
password-vault.js feat(theseus/aegis): 0.6.1 — in-panel vault setup/unlock, BCH wallet imports, opt-in fiat prices, WizardConnect 2026-09-09 10:33:21 +02:00
plans.js Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
portfolio.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
record-picker.js feat(gateway): a name's owner decides what its subdomains serve 2026-09-28 01:04:36 +02:00
register-tx.js registrar: build and send a release, and keep registration closed until it confirms 2026-10-04 01:55:14 +02:00
registrar.js registrar: build and send a release, and keep registration closed until it confirms 2026-10-04 01:55:14 +02:00
registry-covenant.js covenants: the subscription and the delivery escrow, on one shared base (draft) 2026-10-04 16:08:10 +02:00
registry-lifecycle.js Theseus navigator UI overhaul, BNS-only indexer, site restructure 2026-07-30 08:16:55 +02:00
resolve-web.js Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
resolver-web.d.ts bns: a registration is void unless its certificate is the only token of its category 2026-10-04 16:13:04 +02:00
resolver-web.js bns: a registration is void unless its certificate is the only token of its category 2026-10-04 16:13:04 +02:00
sia-upload.js Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
sign-message.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
sign-tx.js Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
snapshot-name.js BNS: Sia+Nostr snapshot mirror, Theseus warm-start, VPS playbook, electrum.bch 2026-08-30 09:59:01 +02:00
subscription-artifact.js covenants: the subscription and the delivery escrow, on one shared base (draft) 2026-10-04 16:08:10 +02:00
subscription-covenant.js covenants: the subscription and the delivery escrow, on one shared base (draft) 2026-10-04 16:08:10 +02:00
tld-index.js bns: a registration is void unless its certificate is the only token of its category 2026-10-04 16:13:04 +02:00
tlds.js Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
usd-listing-artifact.js feat(market): names can be priced in US dollars — a covenant holds the certificate, a gateway-signed oracle sets the BCH amount 2026-09-20 19:20:46 +02:00
wallet-web.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00
wallet.js bns: one network table instead of chipnet constants copied into fifteen places 2026-09-27 21:18:37 +02:00