LUD-01〜21 · Lightning Address · L402 · NIP-47

LNURL & Lightning Address
User-facing な Lightning プロトコル群

LNURL は Lightning の使い勝手を上げるための HTTP-based 補助プロトコル群(LUD-01〜21)。 Lightning Addressuser@domain.tld)はその上に乗った "電子メール風 send-to address"。 Web2 互換 UX を実現する一方、HTTP server 依存・privacy 漏洩等の trade-off を持つ。 また L402(旧 LSAT)や NIP-47 NWC など派生プロトコルも普及中。

21+ LUDs
LNURL document specs
user@host
Lightning Address format
HTTP-based
familiar to web devs
L402/NWC
extension protocols
§ 1 · The Problem LNURL Solves

BOLT 11 invoice の UX 制約

BOLT 11 invoice は 1 回きり・金額固定・QR で表示する必要がある。送金 / 受信のあらゆる場面で 動的 invoice 取得web2 風 endpointが欲しい場面が多い。

① 動的 invoice

"invoice を毎回 wallet で生成" は手間。HTTP endpoint で動的に発行できる仕組みが欲しい。

② Authentication

Lightning node 鍵で web service にログイン。oauth 不要、prviate。

③ Withdraw

Faucet / 給与受け取りで "受信者が送信トリガー" のフロー(pull 型)。

④ Channel request

新規 channel 開設を URL でリクエスト。LSPS1 の前身。

⑤ Username address

satoshi@bitcoin.org のような email 風 address。BOLT 11 文字列より遥かに簡単。

⑥ Web2 互換性

HTTP / JSON / bech32 で web 開発者にも親しみやすい設計。

§ 2 · How LNURL Works

HTTP + bech32-encoded URL

LNURL の本質は bech32 encoded HTTP URL。wallet が QR をスキャン → URL 復号 → HTTP GET → JSON 応答に従って動作。

# LNURL 文字列 (bech32 encoded) LNURL1DP68GURN8GHJ7UM9WFMXJCM99E3K7MF0V9CXJ0M385EKVCENXC6R2C35XVUKXEFCV5MKVV34X5EKZD3EV56NYD3HXQURZEPEXEJXX... # Decoded → HTTPS URL https://example.com/lnurlp/satoshi # Wallet がこの URL に GET GET /lnurlp/satoshi HTTP/1.1 # Server response (JSON) { "tag": "payRequest", "callback": "https://example.com/callback/abc", "minSendable": 1000, "maxSendable": 100000000, "metadata": "[[\"text/plain\", \"Pay satoshi\"]]", "commentAllowed": 200 } # Wallet が金額を選択して callback URL を呼ぶ GET https://example.com/callback/abc?amount=50000 # Server が動的に bolt11 invoice を返す { "pr": "lnbc500u1p3xnhl2...", "successAction": {"tag": "message", "message": "Thanks!"} } # Wallet がこの invoice を払う → done

本質

LNURL は 2 段階の HTTP request で動的 invoice 取得 (または withdraw / auth) を実現する。HTTP server を介在させるのが最大の特徴で、これが BOLT 12 との根本的差。

§ 3 · LUD Catalog

主要な LUD(LNURL Documents)

LUD 全体マップ(21 件)

LUD名前用途採用率
LUD-01Base specencoding 共通★★★ standard
LUD-02channelRequestchannel open req★★ widely used
LUD-03withdrawRequest受信 (faucet)★★★ widely used
LUD-04authnode 鍵認証★★ widely used
LUD-06payRequest送信 (主要)★★★ standard
LUD-07channelRequestchannel★ legacy
LUD-08fast withdrawQR optimization★ niche
LUD-09successAction支払い後 message★★ widely used
LUD-10successAction AESencrypted msg★ niche
LUD-11disposableAndStoredcache指示★ niche
LUD-12commentAllowed支払いにコメント★★ widely used
LUD-13linking key seedauth 鍵生成★★ standard
LUD-14balanceCheck残高確認★ niche
LUD-15balanceNotify残高通知★ niche
LUD-16Lightning Addressuser@host★★★ standard
LUD-17lnurl: URI schemebrowser 統合★★ standard
LUD-18payerData送信者識別情報★★ growing
LUD-19nameDesc商品名拡張★ niche
LUD-20longDesc長い説明★ niche
LUD-21verify支払い検証★★ growing
§ 4 · Lightning Address (LUD-16)

Email 風の send-to address

satoshi@bitcoin.org のような email 形式の address で Lightning 支払いを受けられる。内部的には LUD-16 → LUD-06 (payRequest) の HTTP redirect

# satoshi@bitcoin.org に送金する手順 1. user@domain.tld を受信 user = "satoshi" domain = "bitcoin.org" 2. https://<domain>/.well-known/lnurlp/<user> に GET → https://bitcoin.org/.well-known/lnurlp/satoshi 3. Server response: 通常の LUD-06 payRequest JSON → 後は通常の LNURL-pay フロー # これだけ # 完全に LUD-06 の syntactic sugar

✅ Lightning Address の利点

  • 覚えやすい (email と同じ format)
  • 名刺 / website / 動画概要欄に貼りやすい
  • 静的 (BOLT 11 のように毎回再生成不要)
  • 独自ドメイン使える
  • WoS / Strike / Cash App 等の主要 wallet が default サポート

⚠ 制約

  • HTTP server 必須 (= サーバー maintain が必要)
  • Server 観察: 全支払いを server が見る (privacy 弱)
  • DNS 依存: domain 失効 / hijack risk
  • 事業者運営なら custodial 化しやすい
§ 5 · vs BOLT 12

LNURL/Lightning Address と BOLT 12 Offers の比較

性質LNURL / Lightning AddressBOLT 12 Offers
TransportHTTP (web)Onion Messages (Lightning native)
Server 必要性必須不要
Sender privacyserver に IP 露出blinded path
Receiver privacydomain 露出blinded path
Wallet 採用率圧倒的に高い2024+ 増加中
UXemail 風 address 使えるQR 中心
Refundなしprotocol level 支援
Subscription独自実装recurrence 標準

共存と将来

現状は LNURL/Lightning Address が deployable / 普及済みBOLT 12 が privacy / 機能で優位。多くの wallet は両対応。
長期的には BOLT 12 が priority になる予測だが、Lightning Address の email 風 UX は替えがたく、両者は 当面共存する。

§ 6 · 派生プロトコル — L402 & NIP-47 NWC

LNURL 周辺の "Lightning + Web" な拡張

L402

L402 (旧 LSAT) — Lightning Authentication

HTTP 402 (Payment Required) を再活用し、API call ごとに少額決済を要求する protocol。Lightning Labs / Aperture が中心。 AI agent の machine-to-machine 決済、API 課金で注目。

NIP-47

NIP-47 Nostr Wallet Connect (NWC)

Nostr プロトコル経由で wallet の remote control。dapp / agent から「この wallet で支払って」をリクエスト。 Mutiny / Alby 等が積極実装。BOLT 12 と相補

Webhook

LSPS5 Webhook

LSP から user wallet への push 通知 channel。async payments / async order notification 等に使用。 web の familiar な webhook パターンを LSP context に持ち込む。

Aperture

Aperture (Lightning Labs)

L402 を実装する HTTP reverse proxy。既存 web API を Lightning 課金 wall でラップする。 Web2 商業 API の有料化を 1 行で実現。

§ 7 · Resources

関連

  • 📜 LUD-01〜21 — github.com/lnurl/luds
  • 📜 L402 — Lightning Labs aperture project
  • 📜 NIP-47 NWC — github.com/nostr-protocol/nips/blob/master/47.md
  • 🔧 Phoenix / Breez / WoS / Strike — Lightning Address 標準対応