30817:issue-2330-n-track-rfc

Issue #2330: N0..N3 Namecoin RFC track

Recreation note. This is a copy of issue nostr-protocol/nips#2330 (the broader N0..N3 RFC track), preserved as a custom NIP because my GitHub account (mstrofnone) is currently suspended.


Background

This issue is a recreation, on this mirror, of the broader N0..N3 RFC track originally filed upstream at nostr-protocol/nips#2330. The companion PR on this mirror — "NIP-05 verification via Namecoin (.bit)" — implements the narrowest N1 slice of that track. This issue exists so reviewers on this mirror can discuss the broader track in one place.

Summary

Adds a coherent track of optional NIPs that use the Namecoin blockchain as a censorship-resistant alternative anchor for parts of Nostr's identity / discovery / verification surface. All four pieces are independent — clients can ship N1 alone, or any subset — and all four use only the existing ifa-0001 Domain Name Object schema. No new top-level Namecoin record keys.

Slot Purpose Deployment status
N1 NIP-05 verification over .bit (the narrow PR in this mirror) 8 wire-compatible impls across 6 platforms, all merged upstream
N2 Relay discovery via .bit (relay list pinned in chain record) implemented in Amethyst PR #2595, dart-nostr #44
N3 TLSA-style pin for .bit relay WebSocket certs implemented in Amethyst PR #2595, dart-nostr #44
N4 Block-height-pinned identity / receipt (optional block field) spec only

Each piece independently composes with existing NIPs (NIP-05, NIP-65, NIP-11). The Namecoin record container ("N0") is folded directly into N1 in the companion PR; standalone container NIP isn't useful without a consuming NIP.

Implementation matrix (N1)

8 wire-compatible reference implementations across 6 platforms have shipped N1 against the live Namecoin chain, with byte-for-byte agreement on the same on-chain records:

Platform Implementation Status
Android / iOS / Desktop (Kotlin/KMP) vitorpamplona/amethyst (Quartz namecoin module + Amethyst LocalCache) merged
iOS (Swift) nostur-com/nostur-ios-public — NamecoinNip05Service.swift merged
TypeScript / Node nbd-wtf/nostr-tools — nip05namecoin module merged
Flutter / Dart ethicnology/dart-nostr — nip05_namecoin.dart merged
Web (browser-resident wss:// ElectrumX) CodyTseng/jumble merged
Web hzrd149/nostrudel open
Sidecar / relay mstrofnone/strfry-nip05-namecoin (Node strfry plugin), mstrofnone/nostrlib-nip05-namecoin (Go) shipped
CLI fiatjaf/nak (via the Go lib) — PR open open

Live demo

  • Verifier: _@testls.bit resolves via Namecoin d/testls → pubkey, with an ifa-0001 import chain (d/testls → dd/testls → d/cl-testls) exercising the multi-record path.
  • .bit-served relay: wss://relay.testls.bit/ (TLSA-pinned, Tor-reachable). Hosts a kind:30023 long-form announcement of the track.

Scope discipline

This issue is for track-level discussion. Spec PRs land one NIP at a time:

  • N1: the "NIP-05 verification via Namecoin (.bit)" PR on this mirror (recreated from nostr-protocol/nips#2349).
  • N2/N3/N4: follow-up PRs after N1 lands. Specs already drafted at https://github.com/mstrofnone/nips ; happy to open them separately.

CC: none — opening cold so the broadest set of reviewers can chime in.

Cited links

Discussion

Connect a key to comment.