MSTR Cat

ブロックチェーン/レベル V · レイヤー/5.1 Lightning/レッスン 3

インボイス:BOLT11とBOLT12

使い捨ての文字列から再利用可能なオファーへ、そしてその間を橋渡ししたウェブサーバー

用意するものインボイスをデコードできるライトニングウォレットブラウザから利用できる公開BOLT11デコーダーツールBOLT11インボイスのサンプルとBOLT12オファーの文字列

問い

  1. 1時間で期限が切れる支払いリクエストは、なぜ事業者に絶え間ない再生成を強いるのか?
  2. 静的なQRコードは、どのようにして何年も有効なまま、取引ごとに一意で安全なインボイスを生み出せるのか?
  3. 送金前に、インボイスが改ざんされていないことをウォレットが検証できるのは、具体的にどのデータフィールドによるのか?

探究

  1. BOLT11インボイスは'lnbc'で始まるbech32文字列で、支払いに必要なすべてのパラメータを含んでいる。任意指定の金額(ビットコイン単位に乗数を表す文字を付けたもので、サトシ未満の端数まで表せる)、秘密のプリイメージから導かれる固有のペイメントハッシュ、デフォルトで1時間に設定される有効期限のタイムスタンプがエンコードされている。受取人ノードの公開鍵が送金先を識別し、直接のチャネルがない場合は任意のルートヒントが支払者を案内する。文字列全体は受取人によって署名され、完全性が保証される。
  2. この構造により、BOLT11インボイスは厳密に使い捨てとなる。送信者が対応するペイメントハッシュに支払うと、インボイスは決済済みとなり、再び使うことはできない。同じインボイスに二度支払うのは危険である。最初の支払いの後、プリイメージはそのルート上のすべてのノードに知られるため、二度目の支払いのルート上にもいるノードがあれば、それを奪うことができる。この制約から、小売では動的QRコードが必要となり、事業者は顧客ごとに新しい文字列を生成しなければならず、POS端末が複雑になる。
  3. コミュニティの開発者は、外部のウェブサーバーに依存するLNURLとLightning Addressでこの不便さに対処した。ユーザーはサーバーのエンドポイントを指す静的なURIをスキャンし、ウォレットは支払いを始める前にそのサーバーから新しいBOLT11インボイスを取得する。これにより公開アドレスと個別の取引データが切り離され、1つのリンクで無制限の支払いを受け付けつつ、裏側では一意で使い捨てのインボイスによるセキュリティが維持される。
  4. Rusty Russellが設計し、2024年に仕様に追加されたBOLT12の「オファー(offers)」は、このフローをプロトコル内部に取り込む。この再利用可能な支払いコードは'lno'で始まり、受取人ノードの静的な識別子として機能する。スキャンすると、支払者のウォレットはライトニングネットワーク上で直接オニオンメッセージを送り、オファー作成者から新しいインボイスを取得する。これにより外部ウェブサーバーへの依存がなくなり、リクエストの生成がコアプロトコルに統合される。
  5. BOLT12オファーは、返金や出金のように事業者がユーザーに支払うフローなど、BOLT11にはない機能をサポートする(定期支払いは草案が作成されたが、マージされた仕様からは削除された)。また、オファーは受取ノードの公開鍵を公開する代わりに、ブラインデッドパスを使ってチャネルグラフ内でそのノードを隠すことができる。この設計により、ルーティングヒントやフォールバックアドレスを直接さらす通常のインボイスに比べ、プライバシーの漏洩が抑えられる。
  6. スポンテニアスペイメントは、keysendやAMP(Atomic Multi-Path)プロトコルを使ってインボイスを完全に省略し、送信者が事前のリクエストなしに既知のノードキーへ資金を送る。実際に確かめるには、任意のライトニングインボイスを公開BOLT11デコーダーに貼り付けてください。人間が読めるプレフィックス、金額、ペイメントハッシュ、有効期限、受取人の署名を確認してください。そのうえで'lno'文字列と比較してください。こちらはペイメントハッシュを含まず、支払者がインボイスを要求するのに必要な情報、つまりノードIDまたはそのノードへのブラインデッドパスだけを含んでいる。

重要な事実

  • BOLT11インボイスは'lnbc'で始まる使い捨てのbech32文字列で、金額、ハッシュ、署名をエンコードしている。
  • LNURLとLightning Addressは、ウェブサーバーを使って静的なリンクから新しいBOLT11インボイスを取得する。
  • BOLT12オファーは'lno'で始まり、ライトニングネットワーク上のオニオンメッセージを通じて一意のインボイスを生成する。
  • BOLT12オファーは再利用可能で、返金のような事業者からユーザーへの支払いをサポートするが、BOLT11はこれをサポートしない。
  • BOLT11インボイスのデフォルトの有効期限は1時間(3600秒)である。
  • keysendを使うと、インボイスなしでノードの公開鍵にスポンテニアスペイメントを送れる。

演習 九・六・三・一

9集める従来の銀行送金コードから最新の暗号資産規格まで、デジタル金融で使われている支払いリクエストの形式または識別子を9つ挙げてください。それぞれが使い捨てか再利用可能かも記録してください。
6まとめる9つを、一意性の扱い方に基づいて6つのカテゴリーに分類してください:静的・再利用型、動的・使い捨て型、サーバー経由の都度取得型、プロトコルネイティブの都度取得型、鍵ベースのスポンテニアス型、その他。
3絞り込む6つのグループを、ユーザーの利便性(静的コード)と暗号学的セキュリティ(一意のハッシュ)の間にある3つの根本的なトレードオフにまとめてください。
1結晶化する再利用可能な支払いフローにおいて、BOLT12オファーが外部ウェブサーバーを不要にする理由を1文で書いてください。

事実確認

日付、数字、主張は、下記に記載された公表資料と照合して確認しました。

インタラクティブ版で開く →

EN PT ES ZH KO RU DE FR MS