LNの中継ノードを圧迫するProbingもネットワークに貢献する?
LNノードを真面目に運用している方は、支払いを中継するときに失敗することがよくあることにお気づきかもしれません。この失敗の多くは「プロービング」という、様々な送金経路を試し、その送金がどこで失敗するかを計測することによりチャネルの残高の偏りを観測しようとする一部のノード運用者によるもので、主要なノードはこのせいで中継する支払いの9割以上が失敗となっています。(一部には98%以上ではという声さえあります!)
このプロービングは、ノード運用者からすると使えるツールの1つである一方で、中継するノードからすると大変迷惑なものです。今日は迷惑の文脈で語られることの多いプロービングがどのようにネットワークに影響を与えているのかをまとめました。
ちなみにLNを個人的に使う分には難しいことを考えず、中継機能はオフにしてノードを運用することをおすすめします。下手に運用しようとするより低リスクですし、よほど上手にまとまった金額を運用しなければ大した利益も見込めないためです。
プロービングの悪影響
プロービングの悪影響を論じる際、主に4つの観点が出てきます。中継ノードが保存するデータ量の膨張、中継ノードの経済的コスト、プライバシーの漏洩、支払い失敗の繰り返しによって中継ノードとして選択されにくくなる影響です。
中継ノードのデータ保存量増大
まず、中継ノードが保存すべきデータについてです。支払いを中継する際、中継するチャネルでも支払い後の状態に遷移できるHTLCが作られます。プロービングでは支払いが失敗するため、このHTLCは両方のノードの協力によって巻き戻されますが、相手がこのHTLCを後に公開して資金を盗めないように、中継ノードは失敗した送金についてもHTLCの内容を保存します。そうすれば、HTLCが後に巻き戻されたことを証明でき、相手の不正を罰する(残高を没収する)ことができるためです。
最もポピュラーなLNノード実装のLndではすべてのHTLCに加え様々な情報を保存しているため、中継ノードを運用しているとchannel.dbというデータベースファイルが肥大化していきます。大規模なルーティングノードに関しては、このファイルサイズが100GBを超えているものもあります。チャネルを閉じてまた開けばかなり削減できますが、経路選択アルゴリズムがチャネルの年齢(長期間存在するほど良い)を考慮していると経路として選択されにくい影響が考えられます。
このデータ保存問題を改善するため、DBの効率化によってLNDに劇的にデータ保存量を節約するプルリクエストが出ており、数カ月後のリリースに含まれるかもしれません。HTLCを上限まで含んだChannel Commitmentが747KBから24KB、HTLC1つあたり1.5KBから50バイトという大幅削減です。
中継ノードの経済的損失
次に、経済的コストの問題です。電気代、ストレージの故障リスクなども増加すると考えられますが、たまたま途中のノードでプロービングの送金がスタックしてしまい、オンチェーンで決済する必要が生まれる可能性があります。例えば1万回のプロービングごとに1度発生するとしても、状況によっては1000円といったコストが発生しうるので馬鹿にはできません。プロービングは送金者本人が受け取らず必ず失敗させるため、中継ノードの手数料収入にならず、単純に損失を生みます。
プライバシーの漏洩
プライバシーの漏洩はプロービングの目的そのものです。とはいっても、多くの場合プロービングはチャネルのバランスをなるべく正確に把握することが目的で、トランザクションの追跡が目的とは限りません。しかし、Chainalysisのようなブロックチェーン監視業者が高額な(オンチェーンより手数料がかかる=プライバシーにプレミアムを払っている)LNトランザクションの追跡目的でプロービングを行うのは時間の問題です。
信頼性の低いチャネルとみなされるリスク
これもプロービングの目的と近いものですが、問題はプロービングを行っている本人以外は意図的に失敗した送金なのか、他に理由があって失敗した送金なのかを区別することができません。したがって、特定のチャネルについて送金の失敗率を元に信頼性を評価するアルゴリズムなどがあれば、大量のプロービングはそのアルゴリズムに悪影響を及ぼすことになります。ただし、プロービングの多さと低コスト性は既知の問題なので、そもそもこれは評価軸に向いていないかもしれません。
プロービングのネットワークへの貢献
さて、ここまで中継ノードやLNユーザーにとってプロービングがどれほど困るものなのかを説明してきました。しかし、当然メリットがあって行われています。プロービングを行う主体にとっては情報が得られるという利己的なメリットが存在しますが、ネットワーク全体にとってもプラスなものなのかはユーザーや中継ノードにとってのメリットを考えることで評価することができます。
低レベルな中継ノードの淘汰
残酷な話ですが、プロービングによる負担に耐えられないノード、特に頻繁に落ちる、故障するなどしてオンチェーンに決済せざるを得なくなるノードが淘汰されることにつながります。またカストディアルウォレット等がチャネルバランスの偏りを放置するなどして中継失敗し易いノードを事前に把握し回避することで、LNユーザーは送金時間の短縮、送金成功確率の向上という恩恵を受けることができます。
完璧なA/Bテストはできませんが、プロービングが不可能なLNを仮定するとそれよりも送金時間の短縮・送金成功率の向上が実現している可能性は高いと個人的には思います。プロービングする事業者に経路選択を頼るカストディアルウォレットのユーザーが多いほど効果は顕著でしょう。
長期的には中継ノード全体の品質向上につながるので、やはり中継ノードはある程度の資本を投下して真剣に取り組むものだといえます。半端な管理で中継ノードは務まりません。
チャネル残高共有手段の開発
プロービングの目的として、ネットワーク上のチャネルバランスの把握によって送金確率を高めたり、流動性の需要が高いところに流動性を配置することが挙げられます。だったら、その情報を公開・共有してしまえばネットワーク全体の効率が向上する上にプロービングというスパムも減らすことができる、という発想があります。
プロービングのインセンティブとなる情報の非対称性を減らすアプローチですが、プライバシーの漏洩につながったり、すべてのノードが正直に申告するとは限らないことから、これらの欠点を考慮に入れた上でプロービングを有意に削減できる仕組みが生まれるかは見守っていくしかありません。
おわりに
ノード運用者に問題視されることの多いプロービングですが、ネットワークにとって良いものかという是非や対処について実は意見が割れるトピックのようです。プロービング以外にもHodl invoiceなど、LNには「それゼロコストじゃ駄目なんじゃない?」と思う点がいくつかあり、長期的には是正される必要性を感じています。
しかし、プロービングもHodl invoiceも役に立つから使われており、どちらもネットワーク全体に送金性能の維持や新しいユースケースの実現といった面で貢献しているともいえます。将来的に欠点とメリットを両立していくスタイルが続くのか、それとも何か根本的なインセンティブの変更が提案されるのか、長い目で見たLNの1つの重要なトピックです。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション