ライトニングネットワーク:ルーティングを探検

posted in: Bitcoin | 0 |
Reading Time: 1 minute

まえがき

本投稿も前回に引き続き、Lightning LabsのメンバーBryan Vu氏によるライトニングブログ(投稿日:2018-05-30)を翻訳しました。前回より少し難しい内容ですが数回読み返していただくとより理解が深まると思います。



前回私たちのヒーローキャロルとお別れした時、彼女はライトニングネットワークに見事参加し、ライトニングペイを使うようになりました。ライトニングのユーザー体験の一部に慣れてくるにつれ、ライトニングの技術面について興味を持つようになりました。BitFlixの月額料金を支払うためのルーティング手数料を稼ぐためにライトニングルーティングノードを彼女自身で立ち上げようかさえ考えるようになりました。このブログでは、キャロルのようにライトニングノードの立ち上げに興味がある、または、ライトニングネットワーク用のアプリケーションの構築や、単にライトニングに興味がある熱烈なファンのために贈るものです。この投稿では、ライトニングとペイメントチャネルの基本的な知識をすでにお持ちの方をターゲットにしています。

トピックス

  • チャネルバランス
  • ゲートウェイルーティングノード
  • 広告と非広告チャネル
  • バッファーキャピタル
  • ソースルーティングとオニオンルーティング
  • ブリッジチャネル
  • アトミックマルチパスペイメント(AMP)

このブログが読者の方により深いライトニングプロトコルの理解と、そのネットワークがどのように成長、発展するかの私たちの考えを伝えることができれば幸いです。検閲耐性・非中央集権、セキュリティ、プライバシー、ユーザビリティ、スケーラビリティ、スピード、コストを含むライトニングに対する私たちの目的にも触れます。ルーティングについては、可用性(ユーザーの資金は常時利用可能であるべき)と接続性(ネットワーク参加者はどの参加者へも送金できるべき)の2つの向上が主な目標です。


チャネルバランス

ライトニングの主要コンセプトの一つにチャネルバランスという考え方があります。ペイメントチャネルは総容量(オンチェーンでのチャネル開設時のトランザクションによって確立される)があり、そのチャネル内でお互いが送金できる容量が決まっています。エンドユーザーにとっては、ライトニングにおけるチャネルバランスは銀行口座や財布の中の現金を使うような概念に似ています。ユーザーはライトニングウォレットにビットコインを補充し、数日、数週間にわたってその残高を使い、また補充します。銀行口座が空になり何度も入金するように、ライトニングチャネルでも同様なことができます。ライトニングユーザーが数ヶ月、数年間はライトイングチャネルを開き続けることを予想しており、そうなることでチャネルを閉鎖、開設するときに必要なオンチェーンでのトランザクション手数料を最低限にすることができます。

チャネルバランスは販売者や取引所・交換所、その他のビジネスでも適用します。殆どのビジネスは、エンドユーザー(消費者)に比べ、格段にたくさんの総容量チャネルを持ちますが、これはチャネルを通して入金と出金の両方のフローが必要だからです。送金したり受け取ったりするための利用制限を増加したいユーザーやビジネスは追加でチャネル開設したり、既存のチャネルの総容量を増やしたりできます(チャネルの容量調整を「スプライシング」と呼び、今後のブログでご紹介します)。重要なことは、すべてのライトニング参加者は入金と出金のチャネルを管理します。この処理は既存金融システムがどのように機能しているかに照らし合わせることができるでしょう。

ネットワーク参加者のインバウンドとアウトバウンド資金の流れ:将来、ネットワークが進展、成長し安定した状態になると、参加者は時間に伴ってバランスの取れた入金と出金用のチャネルを持ちます(流れが一方向または他方向で不均衡になる期間もあります)。


ルーティングノード

私たちは、インターネット接続や電源が断続的なモバイル機器やコンピュータを使って送金や受取をするライトニングユーザーが大半だろうと予想しています。このため、大多数のチャネルはエンドユーザーのノードとルーティングノード間で開設されるでしょう。ルーティングノードとは常時オンライン状態で、ライトニング決済をルーティングして手数料を稼ぐことを目的としたライトニングノードのことです。他のライトニングノードと同じように、ルーティングノードはビットコインのネットワークとのやりとりが可能でないといけません。ルーティングノードはフルノードである必要はなく、ニュートリノのような軽量クライアント用プロトコルを使って操作することもできます。しかし、より大規模なルーティングノードはビットコインノードによる検証が行われるようなセキュリティ強化されたものが好ましいでしょう。

「ゲートウェイ」ルーティングノードはエンドユーザーに直接サービスを提供します。このノードは比較的少数のユーザー(およそ100人以下)と接続し、適当なハードウェア、帯域幅、総容量で構成されます。時間が経つにつれ、ゲートウェイノードはより多くのチャネル接続ができるでしょう(以下のブリッジチャネルを参照)。私たちは現在、ルーティングノード操作者のために、そのツールとガイドを作成中で、数ヵ月後には初期バージョンをリリースできるでしょう。私たちの目的は、ライトニングに参加するための敷居を下げ、広く分散されたルーティングノードエコシステムの発展を促進し手伝うことです。


広告と非広告チャネル

顕在化されていないライトニングの一面に、多数のノードとチャネルはルーティングができず、ネットワークグラフに可視化されていないことがあります。エンドユーザーのノード(スマフォやノートパソコンなど)は初期状態ではチャネルを「広告」しません。これらの非広告チャネルはライトニングペイのリクエストに付加される「ルートヒント」または追加ルーティング情報を使うことでルーティング可能になるのです。ルートヒントは受取り側の非広告チャネルについての情報を持ち、支払い者にライトニングネットワーク内の公開、非公開ホップの組み合わせで経路(ルート)を組み立てることを可能にします。非広告チャネルがエンドユーザーのデフォルトになることで、ライトニングルーティングがより効率的になり、ルーティングテーブルが劇的に小さくなります。そしてより信頼性のあるルーティングノードが普及していくことが期待されています。

将来的には、ルートヒントはより多くの有効なルートパス情報を供給することで、たとえ送信者、受信者がネットワークグラフ上に見えない状態であっても送信者が受信者へのルートを見つけることが可能になるでしょう。

広告、非広告ペイメントチャネル:中継可能なだけのペイメントチャネルはルーティングに使われるべきではなく、広範なネットワークに広告されないでしょう(この図は簡略化してあります)。典型的なゲートウェイノードはより多くのインバウンド、アウトバウンドチャネルを持ち、エンドユーザーは一つ以上のゲートウェイと接続されます。


バッファーキャピタル

ネットワークへの連続アクセスを供給することに加えて、ルーティングノードは入金と出金を集計することで、全体の入出金の流れのバランスを保ちます。実質的には、ある一定期間に、あるルーティングノードユーザーは資金を使い、他のユーザーは資金を補充します。しかし、資金が同じ方向へ移動し始めるときがあります(例えば、送金が受取より多い場合)。これらの状況下でルーティングノードは、資金の流れが逆流しチャネルが元のバランス状態に戻るまで待つための十分な「バッファーキャピタル」を維持しないといけません。バランスが取れていない期間を対処するための十分な総容量を持っていないルーティングノードはチャネル疲弊(ノードがチャネル開設を維持するための資金がない状態)に陥り、そしてルーティングに失敗します。このようなエラーは起こるべきではありません。なぜならこのようなルーティングエラーを起こすノードは他のノードから迂回され、最終的には切断されるからです。このように、ノード操作者は、受け入れるインバウンドチャネルの本数と容量のための十分なバッファーキャピタルを供給することに強い動機が働くのです。

バッファーキャピタル:ルーティングノードはチャネル疲弊とルーティングエラーを避けるために十分なバッファーキャピタルを提供するべきです。


オートパイロットとノード可用性の尺度

エンドユーザーのために、lndにはゲートウェイルーティングノードを見つけてチャネル開設する処理を自動的に行うオートパイロット機能があります。今後予定のオートパイロットのイテレーション(繰り返すこと)には、どのノードと接続するべきかの決定時にネットワークチャネルグラフから算出される尺度を使います。主要な尺度には、稼働時間、アウトバウンドチャネル容量、チャネル接続性の幅(インターネットでいう帯域幅のこと)、特定の目的地への接近性があります。これらの情報は、初期チャネル開設および開設済みチャネルの最適化を促進するために、ルーティングノードによって集計されます。最終的には、オートパイロットは、信頼性が高く安価な支払いを促進できるゲートウェイノードに対してチャネルを開設するでしょう。大半のユーザーにとって、オートパイロットはバックグラウンドで行われますが、上級者のためには、オートパイロットヒューリスティックという機能が設計されています。ライトニングコミュニティのメンバーは、特定のユースケースや完全に新しいアルゴリズムをデフォルトとして置き換えるためのノード選択パラメーターの最適化をすることが可能になるでしょう。

もう一つオートパイロットで重要なのが、エンドユーザーは関連性が全くない複数のルーティングノード(現時デフォルトは五つ)とチャネルを開設をすることです。これは、エンドユーザーにライトニングネットワークへ複数の異なる入り口を持たせ、ルーティングノードがオフラインになる場合に備え、信頼性の向上に役立ちます。これはインターネットのルーティングとは対照的です。なぜなら、ISPは物理的なインフラ(ファイバーと無線送信機)を建設するための費用による制限があるからです。ライトニングでは、他のノードと接続するためのインフラ構築のコストは単にオンチェーンのビットコイントランザクションのコストと同じです。

ネットワーク接続性、ライトニングネットワークvsインターネット:ライトニングネットワーク内のユーザーは、同じコストで物理的な制限に関わらず、そのネットワーク内ではどこにでもチャネルを開設できます。インターネットのルーティングは物理的なインフラコストによる制約があり、「ハブースポークト」ポロジーの形になってしまいます。


ソースルーティングとオニオンルーティング

ライトニングペイのルーティングとインターネットのルーティングの違いの一つに、ライトニングの場合、経路に沿ったそれぞれのルーターによって決定(通常のインターネットルーティング)されず、支払い者(ソースルーティング)によってルートが決定・確定されます。さらに、ライトニングはマルチホップペイメントのためにオニオンルーティングを採用しています。これは支払い経路内の中継ノード達は、それぞれのノードの前方と後方の情報しか知らないことを意味します。重要なことは、ソースルーティングとオニオンルーティングを組み合わせることで決済の送信者と受信者の情報を保護し、プライバシーと検閲耐性を強化できることです。

また、ライトニングネットワークのプロトコルはTorをサポートしており、将来のlndリリースではTorをサポートする予定です。エンドユーザーlndノードとゲートウェイルーティングノードとのやりとりは最終的にはTorがデフォルトになり、さらなるプライバシー保護をサポートすることが期待されます。


ブリッジチャネルとネットワーク接続性

これまで、ゲートウェイルーティングノード(エンドユーザーにライトニングネットワークへの接続するための方法を提供するノード)についてお話してきました。しかし、ライトニングユーザーがよく抱く懸念に、(1)接続性と(2)可用性(ライトニングネットワーク内のどこにいる参加者に対しても、速く信頼できる支払いができるか)があります。資本効率の良い(かつ安価な手数料)方法でこの接続性を向上させるためには、十分な総容量でより信頼性のあるノードが、他のルーティングノード間を「橋渡し」することです。これをブリッジノードと呼び、他のルーティングノードからのインバウンド広告チャネルを受け入れ、そして他のブリッジノードとゲートウェイノードに対して大きなアウトバウンドチャネルをつなげます。ゲートウェイノードとブリッジノードとの間に明確な区別があるわけではありません。あるノードは比較的多くのゲートウェイチャネルを持つかもしれませんし、あるノードはブリッジノードに重点を置くかもしれません。


ブリッジチャネルは、一般的にゲートウェイチャネルよりも速く支払い処理をし、また、ブリッジチャネルはエンドユーザーの中から引き抜かれるため、自然にバランスの取れたフローを持つでしょう。この二つの要因により、ブリッジチャネルはゲートウェイチャネルよりも多いバッファーキャピタルを持ち、その資本でたくさんの取引を処理することが期待されます。この資本効率はゲートウェイホップよりもブリッジホップの方がより安価な手数料になります。ゲートウェイノード単独で構成されるよりも、ブリッジチャネルがライトニングネットワークのユーザーに安価なコストで多くの接続性を与えるでしょう。

ネットワークが成長するにつれ、より多くのホップとブリッジチャネルが増えていき、指数関数的に多くのユーザーがネットワークを形成していくことが期待されます。私たちの暫定的なモデル予想では、直径10~15ホップのネットワーク内において、基本的な取引量と1円/取引以下相当の手数料で数十億ユーザーまでは対応可能です。また、上記で述べた資本効率性の理由により、ゲートウェイルーティングノードは、一般的な入出のバランスを取るために必要なだけ多くのユーザー(概算で数百ユーザー)にサービスを提供し、そしてブリッジチャネルを活用しより広範な接続性を提供することが期待されます。エンドユーザー視点では、ウォレットはより安価な手数料になるルートを選択(これは資本効率のよいブリッジチャネルを選択する傾向があるということ)するでしょう。

もう一つ注目すべきことは、エンドユーザーは複数のポイントでネットワークに接続され、またそれぞれのルーティングノードは他のルーティングノードとも接続されるので、特定のブリッジまたはゲートウェイノードによる取引の検閲はうまくはいかないでしょう。取引を検閲しようとするノードは迂回され、もし検閲しているノードが異常な数のルーティングエラーを出せば、他のノード達はその検閲ノードから切断するでしょう。また、オニオン暗号は送信者と受信者の情報をブリッジノードから見えなくするので、よりいっそう検閲が難しくなります。

マルチホップ支払い経路:ネットワークが拡大すると、始点と終点の経路の両方において非公告チャネルを二つ以上のゲートウェイノードとブリッジノードを越えることがでてきます。ライトニングが搭載されたソフトウェアはプライバシー向上のためにホップを追加しランダムにすることができます。


アトミックマルチパスペイメント(AMP: Atomic multi-path payments)

ライトニングルーティングに関する最後のトピックはAMP(アトミックマルチパスペイメント)で、これは送金者によって高額支払いを複数の小額支払いに分割することを可能にします。分割された支払いはライトニングネットワーク上の異なる経路を通って送信され、受取人がそれらを結合し、あたかも一つの取引であったかの様に見立て、その支払いを受理または拒否することができます。ユーザーにしてみれば、AMPプロセスは自動的に行われます。AMPはさらなるルーティングの柔軟性を可能にし、また複数の小さいチェネル群を1つの結合されたチャネルのように振舞うことができます。今後のブログではこのAMPの詳細について述べたいと思います。


結論

このブログでは、ライトニングルーティングに関わるいくつかの基本的なコンセプトについてお話しました。私たちLightning Labsでは、現在のプロトコルで、プライバシーの強化、ビットコインの非中央集権化および検閲耐性の向上をしながら、最低でも数百万のユーザーまで安価で信頼のある取引がスケールアップできると信じています。このブログはルーティングに関する私たちの考えについてお話しましたが、その他のライトニング実装をしている方々やライトニングコミュニティは他の考えを持っているかもしれません。ライトニングはオープンソースで協力しあうコミュニティであり、様々なアイディアについて討論することを楽しみにしています。

ライトニング革命は黎明期であり、今私たちが予測できないような様々な方法によって、プロトコル、アルゴリズム、ハードウェアの向上が効率性、プライバシー、スケーラビリティを改善することもあり得るでしょう。私たち(とライトニングのその他の実装者たち)は、将来版ライトニングネットワーク仕様書のためのプロトコル改善をすでにもっています。しかし、今後数ヶ月、数年にわたって、より多くの新しく、面白く、予想できないようなアイディアがライトニングネットワークのコミュニティおよびエコシステムから来ることを期待しています。

コメントを残す