在上一篇《ライトニングネットワークはどのように機能するか(1)》中、私たちはライトニングネットワークの動作原理と双方向支払いチャネルの安全保障に関する技術を探りました。今日の記事では、ライトニングネットワークについて引き続き紹介し、双方向支払いチャネルをライトニングネットワークに拡張するための関連原理と技術を明らかにします。
双方向支払いチャネルをライトニングネットワークに拡張する:マルチホップルーティング技術#
私たちは同様にアリスとボブをチャネルを構築する基本背景として使用しますが、この世界にはアリスとボブ以外にもライトニングネットワークに接続したい人々がいます。すべての人をネットワークに接続し、ネットワーク内の任意の人に支払いを開始できる方法はあるのでしょうか?
この問題を解決するために、私たちは双方向支払いチャネルをライトニングネットワークに拡張する必要があります、そしてマルチホップルーティング技術を使用します。「ルーティング」の文字通りの意味は「経路を探す」ことであり、ライトニングネットワークでは、特定の対象に支払いを行うための、チャネルが前後に接続された経路を見つけることです。
アリスがデイビッドに 2000 サトシを支払う例を考えてみましょう。彼らの間には支払いチャネルが確立されていないと仮定しますが、アリスとボブの間、ボブとキャロルの間、キャロルとデイビッドの間にはすでに支払いチャネルが確立されています。この場合、アリスはまずボブにお金を送金し、次にボブがキャロルに送金し、最後にキャロルがデイビッドに送金することで、アリスからデイビッドへの支払いチャネルが実現されます。このとき、ボブとキャロルはネットワーク内のルーティングノードとして機能します。もしアリスとエヴァの間、エヴァとデイビッドの間にも支払いチャネルが確立されている場合、アリスはお金をエヴァに送金し、次にエヴァがデイビッドに送金することも選択できます。
経路の観点から見ると、アリスがエヴァを介してデイビッドに送金するのが最短の選択肢であることは明らかですが、実際の操作過程では、最短の経路が必ずしも最良の選択肢ではないことがあります。なぜなら、チャネルの容量、ルーティングノードの手数料、ルーティングノードがオンラインかどうかなど、他の要因も考慮する必要があるからです。
現在、主流のビットコインライトニングネットワークの実装(クライアント)である Lightning Labs が開発した LND や Blockstream が開発した CLN(Core Lightning)では、ルーティングアルゴリズムにダイクストラアルゴリズムの変種が使用されています。Nervos CKB が提供するライトニングネットワーク Fiber Network も同様にダイクストラアルゴリズムを使用して最適なルーティングパスを見つけます。
ルーティングの安全性を確保する:HTLC から PTLC へ#
上記のアリスがデイビッドに支払いを行う例では、どのようにして中間のルーティングノードが不正を行わず、悪意を持って資金を保持しないことを保証するのでしょうか?従来の金融システムは通常、大手の有名な金融仲介機関の信用保証に依存していますが、ライトニングネットワークは P2P ネットワークであり、取引者とは独立した第三者が信用保証を提供することはありません。私たちは取引の安全を確保するための異なるメカニズムが必要です。これが **HTLC(ハッシュタイムロック契約)** の役割です。
HTLC は二つの部分から構成されています:ハッシュ検証と期限検証。 アリスがデイビッドに 2000 サトシを支払う例を考え、ボブとキャロルをネットワーク内のルーティングノードとして選択して HTLC の動作原理を理解しましょう:
- まず、デイビッドは秘密値 Rを生成します。任意の単語や数字がこの秘密値として使用できます。そして、そのハッシュ値 Hを計算し、アリスに送信します。このハッシュ値 H は取引出力のロックスクリプトに配置され、H に対応する秘密値 R を知っている人だけがこの出力を使用できます。R はライトニングネットワーク内で「原像(preimage)」と呼ばれます。秘密値 R が適時に公開されない場合、この支払いは無効となり、送信者はすべての資金を回収します。
- 次に、アリスは受け取ったハッシュ値 H を使用して HTLC を作成し、タイムロックを未来の 5 ブロックに設定し、出力額は 2020 サトシで、そのうち 20 サトシはルーティングノードボブへの手数料です。簡単に言えば、アリスはボブに 2020 サトシを支払います。彼が 5 ブロック内に秘密値 R を提供できれば、そうでなければこれらのお金はアリスに戻ります。
- ボブは自分とキャロルのチャネル内で、アリスが提供したのと同じハッシュ値 H を使用して HTLC を作成し、タイムロックを未来の 4 ブロックに設定し、出力額は 2010 サトシで、そのうち 10 サトシはルーティングノードキャロルへの手数料です。簡単に言えば、ボブはキャロルに 2010 サトシを支払います。彼が 4 ブロック内に秘密値 R を提供できれば、そうでなければこれらのお金はボブに戻ります。
- キャロルは自分とデイビッドのチャネル内で、同じハッシュ値 H を使用して HTLC を作成し、タイムロックを未来の 3 ブロックに設定し、出力額は 2000 サトシです。簡単に言えば、キャロルはデイビッドに 2000 サトシを支払います。彼が 3 ブロック内に秘密値 R を提供できれば、そうでなければこれらのお金はキャロルに戻ります。
- デイビッドは秘密値 R を使用してキャロルが設定した HTLC を解除し、2000 サトシを受け取ります。
- デイビッドが資金を受け取った後、キャロルもこの秘密値 R を知り、彼は R を使用してボブが設定した HTLC を解除し、2010 サトシを受け取ります。
- キャロルが資金を受け取った後、ボブも秘密値 R を得て、彼は R を使用してアリスが設定した HTLC を解除し、2020 サトシを受け取ります。
このメカニズムにより、アリスはデイビッドに 2000 サトシを成功裏に支払うことができ、直接支払いチャネルを確立する必要はありません。この過程全体で、各当事者は相互に信頼する必要がなく、 ルーティングノードも正当な手数料を得ることができます。たとえ支払いがある段階で中断されても、タイムロックメカニズムが存在するため、各当事者は損失を被ることはなく、資金はロック時間が過ぎた後に自動的に戻ります。
しかし、HTLC には潜在的なプライバシーの問題も存在します: 経路全体で同じ秘密値(原像)が使用されます。もしある実体が支払い経路上の複数のノードを制御している場合、異なるノードの入力と出力を比較することで、完全な取引情報を推測し、支払者と受取者を推測することができ、これによりライトニングネットワークがオン ion ルーティングを通じて実現したプライバシー保護が弱まります。
この問題を解決するために、ビットコインコミュニティは **PTLC(ポイントタイムロック契約)** を提案しました。PTLC の方案では、経路内の各ホップが異なる秘密値を使用するため、オン ion ルーティングを通じて実現されたプライバシーが保護されます。Nervos CKB が提供するライトニングネットワークFiber Networkは、将来的に PTLC を導入し、ライトニングネットワークのプライバシー保護能力をさらに強化する計画です。
結論#
技術の進歩に伴い、ライトニングネットワークは継続的に最適化と改善が進んでいます。LN-Penalty から eltoo、さらに Daric、HTLC から PTLC まで、私たちはライトニングネットワークが安全性やプライバシー保護の面での向上を見てきました。将来的には、さらなる革新技術の適用とエコシステムの整備により、ライトニングネットワークは暗号通貨の普及を推進する重要な基盤インフラとなり、真の P2P 経済の実現に貢献することが期待されます。
参考資料:
- https://www.btcstudy.org/2021/09/15/lightning-network-in-depth-part-1-payment-channels/
- https://www.btcstudy.org/2021/09/15/lightning-network-in-depth-part-2-htlc-and-payment-routing/
- https://www.btcstudy.org/2022/01/27/breaking-down-the-bitcoin-lightning-network-eltoo/
- https://www.btcstudy.org/2024/02/07/lightning-network-technology-improvement-and-users-experience-part-2/
- https://www.btcstudy.org/2024/02/23/lightning-network-technology-improvement-and-users-experience-part-3/
- https://www.btcstudy.org/2022/08/19/what-are-ptlc/