From 9bb6237d8cc77ec1e01b4d9e5edb71f4e30f49a8 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 25 Jul 2026 00:51:38 +0000 Subject: [PATCH] docs(bolt12): note the nwc#2 ecosystem status (LND service exists, BOLT12 gap) benthecarman/nostr-wallet-connect-lnd implements NWC-321 pay/receive (confirming Phase 0), but is LND-backed so it rejects BOLT12 lno and returns no payer_proof. The blocker for real BOLT12-zap testing is a CLN/LDK-backed NWC-321 service. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01SpgpWLKzgD7vS9Fs4CXTR3 --- amethyst/plans/2026-07-24-nwc-bolt12-pay.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/amethyst/plans/2026-07-24-nwc-bolt12-pay.md b/amethyst/plans/2026-07-24-nwc-bolt12-pay.md index 8ce2db65f7..bb953291f4 100644 --- a/amethyst/plans/2026-07-24-nwc-bolt12-pay.md +++ b/amethyst/plans/2026-07-24-nwc-bolt12-pay.md @@ -3,6 +3,20 @@ Status: **scoping** — no code yet. Depends on NIP-2421 (this branch) and the unmerged `nostr-wallet-connect/nwc#2` (adds `pay`/`receive` to NIP-47). +## Ecosystem status (2026-07-25) — the wallet gap for real testing + +A real NWC-321 (`pay`/`receive`) service exists — +[benthecarman/nostr-wallet-connect-lnd](https://github.com/benthecarman/nostr-wallet-connect-lnd) +— which confirms the protocol we built (Phase 0) is real and adopted. **But it is +LND-backed:** its `pay` "selects and pays a BOLT11 `lightning` instruction from a +BIP-321 URI" and "BOLT12 `lno` instructions are not supported by this LND backend." +So it returns no BOLT12 invoice and no `payer_proof`, and can't drive the NIP-2421 +zap loop. The blocker is the **node backend**, not the protocol: a CLN- or +LDK-backed NWC-321 service (CLN has full BOLT12 and leads the payer-proof draft +bolts#1346) would support `lno` + return `payer_proof`. Until one exists, the +self-consistent interop harness (`cli/tests/bolt12/`, TODO) is the only way to +exercise the full send → verify → count loop. + ## What nwc#2 adds Two generalized methods replace the bolt11-only `pay_invoice`: