LNURL は LUD 文書で定義する任意の Lightning アプリ手順群です。ウォレットとサービスの間で条件や要求を運び、Bitcoin の合意規則でも包括的な権限でもありません。
LNURL は支払いの payRequest、引き出しの withdrawRequest、認証の login と追加拡張を含みます。ウォレットごとに対応する LUD は違います。「LNURL 対応」は全操作が使えることや、承認の効果が同じことを意味しません。 [LNURL — LUD index] [Lightning Labs — LNURL glossary]
LUD-01 の基本 LNURL は HTTPS または onion URL を Bech32 に符号化します。暗号化でも BOLT 11 請求書でもありません。URL 内、または GET 後の JSON 応答の tag が種類を決めます。ウォレットはドメインと操作を識別する必要があり、QR の外見だけでは受取人を確認できません。 [LNURL — LUD-01 encoding]
payRequest は callback、minSendable、maxSendable、metadata を返します。上限下限と選択した amount は msat 単位で、1000 msat は1 satoshi です。条件の承認後、ウォレットは pr の請求書を要求し、支払う前に金額を確認します。固定リンク自体は支払いの証明ではありません。 [LNURL — LUD-06 payRequest]
Metadata は JSON 配列を含む文字列で、text/plain 項目が必須、他の種類は任意です。説明をドメイン、金額と合わせて読みます。基本 LNURL は HTTP コードだけでなく JSON 本文を解釈します。ERROR や pr 請求書の受領を支払い成功と混同してはいけません。 [LNURL — LUD-01 encoding] [LNURL — LUD-06 payRequest]
withdrawRequest は k1、callback、msat 単位の minWithdrawable/maxWithdrawable を返します。自分のウォレットが受取請求書を作成し、支払うサービスに pr として渡します。Status OK は要求の受領を示し、ウォレットはまだ実際の入金を待ちます。引き出しリンクには権限が含まれ得るため、公開の支払い連絡先と扱わないでください。 [LNURL — LUD-03 withdrawRequest]
tag login の LNURL-auth は k1 とドメイン固有の linkingKey を使います。同意後、ウォレットは secp256k1 上の ECDSA で署名し、seed はサービスへ送りません。Action は登録、ログイン、関連付けなどの認可を示します。チャレンジへの署名は bitcoin 決済でも自動的な本人証明でもありません。 [LNURL — LUD-04 authentication]
HTTPS は通信を保護しても、サービスは要求と時刻を把握できます。繰り返しの利用は関連付けられ得ます。Auth は完全なドメイン名から鍵を導出し、サブドメインの変更で linkingKey が変わり、別のアカウントになる場合があります。導出方式が異なるためウォレット間のログイン移行は保証されません。LNURL 自体は bitcoin の保管方式を決めません。 [LNURL — LUD-01 encoding] [LNURL — LUD-04 authentication]
任意の LUD-21 は verify URL を追加し、応答で settled true/false を区別し preimage を返す場合があります。Status OK だけで settled true にはなりません。個別請求書との対応とウォレット状態を確認します。応答を失っても闇雲に再度払わず、サービス可用性、受取流動性、同意範囲を別々に確認します。 [LNURL — LUD index] [LNURL — LUD-21 verification]
理解を深めるには、この項目とあわせて次もお読みください BOLT 11, BOLT 12, Lightning Network, Lightning Address, Bitcoin のプライバシー, Satoshi. 次の項目からも参照されています BOLT 12, Lightning Address, Confirmo.