多くの人がUmbrelなどでライトニングノードを立てているDiamondHandsプロジェクトに参加していて直面するトラブルの報告を見ていると、その多くがTorを利用しているライトニングノードが原因だと考えられるものです。Torを使えば手軽にNATを越えてノードを家庭内のネットワークからLNやビットコインネットワークにつなぐことができる一方で、Torに対応していないノードとの関係はギクシャクしてしまいます。

今回はそのような不便さを解消したい事業者やルーティングノード向けに、LND v0.14.0から搭載されるTorハイブリッドモードがどのように便利なのかを説明したいと思います。

CLEARNETとTOR

ライトニングネットワーク上のノードは主にClearnet (IPv4 / IPv6アドレス、ドメイン名)で公開されているものと、Tor (Onionアドレス)で公開されているものがあります。もちろん、双方の間でもチャネルの開設ができるので同じペイメントチャネルネットワークを構成しています。

2020年まではClearnetに公開されているライトニングノードがほとんどで、Torで公開されているものは比較的少数でした。しかしUmbrelの流行でTorのノードが急増し、ライトニングネットワーク関連のデータを集計している1MLによると2021年10月下旬では全体で3万台のノードのうち1万台がTorを利用しています。

1ML: https://1ml.com/statistics

このように、自宅から簡単にライトニングノードを運用できる利便性からTorを使うノードが増え、その結果としてClearnetとTorノードの混在によるちょっとしたトラブルが顕在化しています。

TOR・CLEARNET混在の問題点

まず一番大きい問題点は、一般にClearnetノードからTorノードへと通信をすることができないことです。(Onionアドレスを解釈したり、通信のプロトコルを知らないので当然ですね。)

このため、ClearnetノードはTorノードとチャネルの開設を行う前に、Torノードから接続してもらう必要があります。また、これはノードの再起動などでTorで公開されているピアとの接続が切れてしまった場合にClearnetのノードから自発的に再接続できないことでもあり、チャネルの安定性、ひいてはネットワーク自体の経路計算の成功率に影響します。()

具体的には、自分がTorでノードを公開しているとLNBIGのようなサービスからチャネルの開設がうまくいかなかったり、ピアと接続されているのにそのピアとのチャネルがなぜかオフラインになったりします。(ちなみに解決の早技はlncli disconnectからのlncli connectで再接続を試みることですが、Clearnet側からはそのままではできません。)

一方でClearnetのノードもTorを使ったほうがいいのかというと、そうではありません。Torは通信経路を世界中で経由させる特徴上、通信の所要時間が長く、数秒かかってしまいます。Torを利用するノード経由の送金はライトニングネットワーク決済の即時性を損ないやすく、大量のトランザクションを捌くノードでは同時に処理できる決済件数を一時的に超える可能性もあり、これらの結果として経路選択で不利に扱われる可能性もあります。()

このため大規模なノードやルーティングノードはできればClearnetで公開したまま、Tor上のノードに自発的に接続できるようにしたいところです。

ハイブリッドモード

さて、①の問題の対策として現状のLNDで"tor.active=true"を設定しても、Clearnet上のノード相手の通信を含めすべての通信がTor経由で行われるようになり、Torノードに自分から接続できる代わりに反応時間が伸びてしまうなど②の欠点がすべてのチャネルに適用されてしまいます。

ここで待望されるのが、Torで公開されているノードと通信する場合にのみTorを通信に利用し、Clearnetでも接続可能な相手にはClearnet経由で接続するというハイブリッドモードの実装です。Torで公開されているノードに自発的に接続しつつ、Clearnet上のノードには従来どおりClearnetで通信できます。

大規模なルーティングノードの多くが対応すると考えられ、TorユーザーのUXの改善やチャネル・ネットワークの安定性向上に寄与すると期待しています。

ハイブリッドモードについて面白いなと思うのは、Torを利用する主目的がプライバシーではなく経済合理性や利便性によるところです。UmbrelがTorを利用する理由も、プライバシーというよりはNAT越えの利便性ですね。

導入時期

LND v0.14.0を目標に開発されていた当機能は今年8月に完成しマージされており、Lightning Labsのカンバンを見ていてもLND v0.14.0はほぼ完成に近いため、リリースが早ければ年内に利用できるようになりそうです。

イシュー:https://github.com/lightningnetwork/lnd/issues/5042

プルリクエスト:https://github.com/lightningnetwork/lnd/pull/5410

v0.14.0 カンバン:https://github.com/lightningnetwork/lnd/projects/13

まとめ

・Clearnetに公開されているノードがTorで公開されているノードに対して自発的に通信するには、すべての通信をTor経由にして性能面でのペナルティを食らうほかなかった

・Clearnet上のノード宛の通信はClearnetで行うまま、Tor上のノード宛の通信はTorで行うことのできるハイブリッドモードが開発され、v0.14.0に実装されている

・早ければ年内にリリースされるかもしれない