Author: RGB++ Fans; Source: byte meta CKB
前回の科学記事では、支払いチャネル、マルチホップルーティング、HTLC など、ライトニングネットワークに関連する中核概念について簡単に科学しました。
ライトニングネットワークで送金を行うには、複数の仲介ノードを経由する経路が構築されることが多く、その仲介ノードでは送金可能な残高が限られていることが多いため、最終的に支払いの成功率に影響すると述べました。パス内のノードに十分な資金が供給されるようにし、ユーザーエクスペリエンスを向上させるために、これは何らかの流動性管理スキームによって規制されています。しかし、流動性管理の問題を深く理解するためには、まずローカルとリモートのバランス、インバウンドとアウトバウンドのキャパシティなど、いくつかの基本的な概念を紹介する必要があります。
これまで、ライトニングネットワークの基本的な構成要素はノードとチャネルであると述べてきました。ユニットはノードとチャネルであり、後者はビットコインネットワーク上に構築されたオフチェーン1対1転送機能です。チャネルが初期化されると、両者は初期残高としていくらかのお金を送金します。あなたの側は「ローカル残高」と呼ばれ、あなたの取引相手の側は「リモート残高」と呼ばれます。 ローカル残高は、あなたの支払い能力、すなわちあなたの「発信能力」を制限して、あなたが取引相手に送金できる金額を決定し、リモート残高は、あなたの「受信能力」、すなわちあなたの回収能力を制限して、取引相手があなたに送金できる金額を決定します。
参加者のそれぞれの残高は、チャネルが閉鎖される前に頻繁に変更することができますが、チャネルの合計容量は、チャネル全体を再起動するか、資金を注入するために「チャネルスプライシング」を使用しない限り、変更することはできません。
(この図はあなたとロバートのそれぞれの残高を示しています。)(
(この図は、あなたとロバートのそれぞれの残高を示しており、あなたのローカル残高は5、リモート残高は3、チャネル全体の容量は8となっています)
上記の基本概念を少し理解した後、ライトニング・ネットワークの流動性管理が実際に解決しようとしていることを見てみましょう。あなた(左下)はLNTopの1つのノードにのみ接続されており、リモート残高が3であるため、最大3米ドルの送金を受け取ることができる。そして、もしSophieがあなたに1ドルを送金しようとした場合、中間ノードがLNTopに十分な送金残高を持っていないため、失敗するでしょう(赤枠のノードはLNTopへの送金容量が0です)。
チャネルのキャパシティは、ライトニング・ネットワークが初期に遭遇した深刻な問題の1つであったと言えます。このような問題は、モビリティがネットワーク全体にもっと適切に分散されていれば効果的に軽減されるはずであり、これに対する解決策はしばしば「モビリティ管理」と総称されます。たとえば、クライアントがリース市場(Lighting Pool)を通じて複数のモビリティが豊富なノードに接続できるようにすることなどです、必要に応じて新しいチャネルをオープン/クローズしたり、チャネルのスプライシングやリバランシング(Channel Rebalancing)などの方法を導入して、チェーンの内外にあるチャネルのバランスを調整したりします。
現在、一部のウォレットクライアントは自動チャネル管理を提供しており、ユーザーの支払い行動やネットワーク状況に基づいてチャネルをインテリジェントに管理し、送金に十分な流動性を確保しています。新規ユーザーは、ライトニング・ネットワークに初めて接続する際に「一方的な資金調達」モデルを使用することもできます。これは、チャネルの取引相手にのみチャネルへの資金調達を許可し、チャネルが初期化されたときに自分自身は資金調達を行わないことを意味します。
以下では、ライトニングネットワークにおける流動性管理スキームの一般的な操作について詳しく見ていきます。まず、チャネル・リースについて見てみましょう。これは、ノードの「受入容量」に対処するスキームです。つまり、他人があなたに送金したい場合、相手に支払い経路をうまく構築してもらう必要があります。そのためには、経路に含まれる各ノードが、たとえば次のような条件を満たしている必要があります。十分な送金可能残高/送金能力。先に述べたパスの失敗シナリオは、一部の中間ノードが他のノードと構築するチャネルに流動性がないことに根ざしています。
参加者は資金の一部を固定しなければならないことが多く、機会費用が発生するため、チャネルの構築にはコストがかかります。いわゆるチャネル・リースのアイデアは、ノード・ランナーが市場ベースの手段を通じて直接取引できるようにすること、そして「リース」システムを通じて、余剰ノードが率先して他のノードのためにチャネルを構築できるようにすることです。たとえば、あなたが商人で、いつでも他の人からお金を受け取る必要がある場合、1日に200BTC以上を受け取れる必要があります。
つまり、あなたはライティングを通じて4つの大規模ノードと合意に達したということです。
ライティングプールを通じて4つの大規模ノードと取引を行い、4つのノードのそれぞれがあなたと24時間チャネルを設定し、それぞれが50BTCをロックし、それぞれが50BTCのリモート残高をあなたに提供することで、各チャネルで50BTCの回収が可能になります。誰かがあなたに送金する場合、4つのノードのいずれかを仲介者として使用して、ペイアウト経路を設定することができます。
(1ml.comでは、以下のように表示されています。
上記のリースプールに加えて、流動性広告もあります。広告)があり、流動性プロバイダーはライトニングノードからのゴシップメッセージを使用して、オファーとチャネルの期間をブロードキャストすることができ、オファーを受け入れたノードはそのノードとチャネルを開くことができます。このようなリースベースのスキームは、一方の当事者が突然デフォルトになるのを防ぐためにマージンシステムと組み合わされます。
ライティング・ラボやファイバーなどのライトニング・ネットワーク開発者は現在、CKBのスマートコントラクト機能の上に流動性エスクローシステムを導入するファイバーの計画など、一方向資金調達のための流動性リースシナリオの最適化を実験している。例えば、ファイバーはCKBのスマートコントラクト機能に基づいて流動性支払いシステムを導入する計画で、指定されたLSPサービスプロバイダーノードがユーザーとチャネルを設定し、ユーザーの回収ニーズを満たすために一定期間、無料のクレジット容量をユーザーに提供する。また、この種のシナリオに関連する流動性誓約メカニズムも議論中である。
大体において、チャネルリースは、ノード同士を接続し、クレジットされた流動性を得るという問題を解決するために使われることが多く、一方、以下のチャネル・スプライシングシナリオは、資金調達/引き出しのオンチェーン操作を通じて、チャネルの両側の合計残高を直接変更する。通常、チャネルは2/2署名を使ってオープン/クローズされ、参加者は共同で所有するオンチェーン資産を再分配します。一方、以前のライトニング・ネットワークのスキームでは、一度チャネルがオープンされると、一度クローズしてから再開しない限り、チャネル全体の残高は変更できませんでした。
一方、チャネルのスプライシングは、チャネルの両当事者が共同で所有するUTXOの再編成を、既存のチャネルを停止することなくオンチェーンで直接更新できるようにする新しいアプローチです。例えば、両当事者が共同で所有する既存のアセットに新しいアセットを追加して、チャネル内の全体的なバランスを変更します。このアイデアは下図で簡単に概説されており、左側が古いチャネルに対応するオンチェーン資産(UTXO1)で、アリスとボブによって複数の署名で管理されています。その後、2つの当事者がチャネルスプライスを開始し、別の資産(UTXO2)を追加して同様に共同管理することで、最終的にチャネルの2つの当事者が自由に使える資産(UTXO3)の量が増え、容量が増加します。
チャネルのスプライシングは、余剰資金の削減にも利用できます。一時的に遊休となった資産をチャネルから移し、資本利用の効率を向上させる。チャネルの閉鎖/再開に必要な従来の2つのチェーン相互作用に比べ、チャネル・スプライシングは1つのチェーン操作しか必要としないため、コストを大幅に削減できる。チャネルスプライシングの明らかな利点にもかかわらず、歴史的な理由により、このソリューションは完全に成熟しておらず、その普及はまだ先のことです。
チャネル・スプライシングを理解した後は、チャネル・リバランシングに移ります。これは、チャネルを停止したり、チャネルの総容量を変更したりすることなく(料金を無視して)、異なるチャネルのオフチェーン・バランスを調整する手段です。これはまた、チャネルを閉鎖したりチャネルの総容量を変更したりすることなく(手数料を無視して)、異なるチャネルのオフチェーン残高を調整する手段でもあります。
チャネル1: ノードXと、合計容量1 BTC
チャネル1: ノードXと、合計容量1 BTC
チャネル2:ノードYと設立、合計容量は0.5BTC
チャネル3:ノードZと設立、合計容量は0.5BTC
チャネル4:ノードZと設立、合計容量は0.5BTC
各チャネルの資金分配は以下の通りです:
チャネル1: あなたのローカル残高: 0.9 BTCリモート残高:0.1BTC
チャンネル2:あなたのローカル残高:0.1BTC リモート残高:0.4BTC
チャンネル3:あなたのローカル残高:0.1 BTC リモートバランス:0.4 BTC
現在の問題は、取引相手に0.1BTCまで送金できるチャンネル2と3の発信容量が足りず、大口の送金に対応できないことです。同時に、チャネル1には0.9BTCの余剰送金能力があるが、短期的にはそんなに使えない。当然、チャンネル1から他の2つのチャンネルに余剰資金を移動させるのがベストだ。つまり、チャンネル1のローカル残高から0.4BTCをチャンネル2に、0.4BTCをチャンネル3に移したいわけで、そのためには循環支払いを2回行う必要があります。
これを行うには、上の画像のように、次のようにします。あなたは0.8BTCをノードXに送金することができ、ノードXは0.4BTCをYとZに送金します。YとZはそれぞれ0.4BTCをチャネル2とチャネル3であなたに送金し、あなたのローカル残高を増加させるので、将来的な大きな送金のニーズに応えられるよう、送金可能な資金をたくさん持つことができます。
上の画像を見ると、ループ決済の本質は、残高の全体的な分布が望ましい結果になるように、チャネルからチャネルへと残高を移動させながら自分自身に送金することであることが簡単にわかりますが、この方法だけでは、どのチャネルでも2者の合計残高をいきなり増やすことはできません。しかし、この方法だけでは、どのチャネルでも2者の合計残高を無闇に増やすことはできず、その実装は、XがYとZに十分な送金可能資金を持っているという前提に依存している。言い換えれば、ループ支払いは、問題のノードが事前にある程度の流動性を確保しておく必要があることが多い。
ループ・ペイメントはチャネル・リバランシングの考え方の1つの実装アイデアであり、リバランシング・スキームは実際にはサブマリン・スワップなどの他の方法と組み合わせることができます。サブマリン・スワップを紹介しましょう。その核となるアイデアは、チャネルを閉じることなく、HTLCや他の方法の助けを借りて、オンチェーンとオフチェーン間で資金を交換することです。
最もシンプルなサブマリンスワップのシナリオは、アリスがすでにボブと1対1のチャネルを確立していると仮定して、チェーン上のチャネルに資金を補充することです。この時点で、アリスはさらに資金を投入したいので、再開する前にチャネルをシャットダウンする必要がありますが、チャネルはリースされているので、事前にシャットダウンするのは費用対効果がよくありません。
スワップが海底経由で行われるのであれば、プロセスはより簡単でしょうが、HTLCの助けを借りれば、まずアリスは乱数Rを生成し、H(R)をハッシュ化します。その後、アリスはチェーン上のボブのアドレスにBTCを送ることができ、ロック解除条件はHTLCによって制限される。ボブはチェーン上のこれらのビットコインをロック解除するために、H(R)の元画像Rを知らなければならない。
ボブはオフチェーンチャネルでHTLCを介してアリスと取引しますが、その方向は逆です。アリスがRの価値を提示しさえすれば、ボブはそれを使ってアリスがチェーン上にロックしているBTCを解除することができます。その後、アリスはチャネル内のローカル残高を増やし、チェーン上の資産残高は(手数料を無視して)同額だけ減ります。これは基本的に1対1のスワップです(上記は原理を説明するためにサブマリンスワップの通常の動作順序に厳密に従ったものではありませんが、実際にはほとんどの場合、一方の当事者がオフチェーンチャネルで最初に取引を行い、もう一方の当事者がオフチェーンチャネルで最初に取引を行います。ほとんどの場合、一方の当事者がオフチェーンでHTLCを作成してから、もう一方の当事者がオンチェーンで対称的なHTLCを作成します)。
上記のシナリオは主にオンチェーン資産とオフチェーン残高を交換するために使われ、アリスとボブの操作方向を調整することで、引き出しに切り替え、オフチェーン残高をオンチェーン資産に変換することができます。サブマリンスワップは、HTLCとタイムロックの組み合わせによって安全が確保されています。途中で相手が協力を拒否しても、HTLCにロックされたあなたのお金は、相手がHTLCを解除する鍵を知らないので安全ですし、タイムロックが切れたら、お金を取り戻すことができます。
ただし、上記のシナリオの場合、元本が盗まれることはないものの、資金をロックするためにチェーン上にHTLCを作成する当事者が必要であり、ハトの相手側に一定の影響を与えることが避けられない場合、どうしても手数料の損耗が発生してしまうので注意が必要です。これらの問題を解決するために、海底スワップは、多くの場合、前払い、評判システムやその他のペナルティなどのいくつかの協力援助を持っています。
私たちは、サブマリンスワップのコアのアイデアは、柔軟なスワップを達成するためにチェーン/チェーン資産をさせることですチャネルのリバランスのアイデアに沿っている場合は、より良い流動性調整手段のうちを達成することができます。
複数のチャンネルを開設しているノードを運営しているとします。あるチャンネルはローカル残高が豊富ですが、他のチャンネルはローカル残高が著しく不足しており、支払い能力に影響を及ぼしています。海底スワップは良い解決策になります。 過剰なローカル残高を持つチャンネルを選択し、海底スワップを通じてチェーンに資金を移し、海底スワップを通じてターゲットのチャンネルにチェーンの資産を注入することができます。
しかし、上記の点をまとめると、サブマリンスワップやチャネルスプライシング、チャネルリース、その他の流動性調整操作はすべて、チェーンに操作の痕跡を残し、それが手数料を発生させ、そのような操作が頻繁に行われれば、ユーザーの経済コストやUXを圧迫することになることは難しいことではない。ビットコイン・ライトニング・ネットワークはBTCメインネットに依存しているため、オンチェーンでの頻繁なやり取りは非現実的であるのに対し、CKBベースのファイバーはそのような圧力が比較的少なく、流動性管理もスムーズである。いずれにせよ、ライトニングネットワークとファイバーはともに、より革新的な流動性ソリューションに取り組んでおり、Mercury Layerのようなプロジェクトチームとの積極的なコラボレーションを通じて、将来的にはより適切な道を見つけることができるかもしれません。