ライトニングのルーティングが中々発生しない理由&テスターの募集
Diamond Handsコミュニティ内のユーザーの皆さん、お待たせしました。
少し前からやりたい、やりたい、と言っていた、特に初心者ユーザー向けのルーティング設定の自動化と最適化の実験に関する案内です。
まず先に現状をちょっと振り返りましょう。
以下の記事でも紹介した通り、現状Diamond Handsコミュニティに参加しているノードの大部分が、過去3ヶ月ほとんどルーティングを発生させていないという事実があります。
Diamond Handsのコミュニティの活性化の為にも、いかにこの非アクティブになってしまっているノードを再起動させるか、というのは非常に重要な命題なので、今月から当面はこのタスクに集中していこうと思っています。
ルーティングが発生しない理由
おさらいも含めて、改めてなぜ小規模ノードではほとんどルーティングが発生していないのか一般論を説明します。主な理由は以下のようなものに分けられます。
アウトバウンドとチャネル数が足りない
Diamond Handsの報酬スキームでは、チャネルの大小に関わらず一定の報酬を与える形をとっています。それもあり、DHコミュニティノードの中には比較的小さいチャネル(0.01BTCほど)を必要最低限の2つしか開いていないケースもよく見ます。
理論上はチャネルが2つあればルーティングが発生する可能性はありますが、経験的にはDiamond HandsノードとLNBigなどとのチャネルを2つ開くだけでは実際にはほとんどルーティングは発生することはないです。
ある程度安定してルーティングをするには、おそらく全体で0.1BTC程度のキャパシティと、チャネルを出来れば最低でも7~10くらいは開く必要があると思います。(これは経験則の何となくの数字ですが、今回の実験も含め少しづつこれらの条件を定量化していきたいと思っています)
ノードの選択が悪い
1つ目の要因で、キャパシティやチャネル数が足りないことを上げましたが、どのノードにチャネルを開くか、というのもルーティングを増やすために非常に重要です。例えば、チャネルを適当なノードと20以上開設しても、ノードの選択が悪いとそれでもほとんどルーティングは発生しない可能性があります。
どのノードからどのノードにどれくらいお金が流れているか、相性のいいノード同士はどこか、というのは本来まさに地道に自分で調査すべきことで、ライトニングルーティングの醍醐味の一つだと思いますが、時間があまりなかったり、ルーティングに割ける資金力に乏しい小規模ノードは正確な情報を得るのは中々難易度が高いです。しかも、ノード間のお金の流れというのは、常にダイナミックに変化しており、1週間ほど前までお金がジャンジャン流れていたかと思ったら、パタッとルーティングが止まったり、常に分析、対応し続ける必要があります。
これもあり、最初は色々興味を持っていじってたノード運営者が、途中でついていけなくなって脱落するというパターンは少なくないです。
手数料が高すぎる、低すぎる
資金力や、チャネル数、ノードの選択の部分をクリアしても、今度は手数料設定を通して、ルーティングが起こりやすいようにチャネル上のバランスを上手く維持する、という壁が残ります。
仮に資金とチャネル数が十分にあり、Txを頻繁に発生させているノードを上手く選択できたとしても、手数料設定が高すぎる、もしくは低すぎると、チャネル上のお金が片方に偏った状態で動かなくなってしまい、結果としてルーティングがほとんど発生しない状態になってしまっているノードもあると思います。
ライトニング上での手数料設定というのは、手数料収入の獲得以外にも、手数料を通してチャネル上の自ノードと相手ノードのバランスを調整する為の仕組みという側面があります。例えば、チャネル上の自分のノード側のバランスが過剰な場合は、手数料を低く設定して相手側のノードに出来るだけお金が流れやすく調整し、チャネルのキャパシティが半々くらいでバランス(均衡)するようにするのが常套手段です。
では「最適な手数料」はどれくらい(何%くらい)かというと、これは各チャネルごと、それぞれのチャネル内のキャパシティの変化、市場全体のライトニングTxへの送金需要の変化などに応じて常に変わっていくものなので、「固定値でこれです」とも言えるものでもありません。
ではどうすればいいのかというと、中級者以上のノード運営者のほとんどは、キャパシティの内訳などの条件を基に、自動的に各チャネルの手数料が定期的に更新されるようなロジックを組んでいると思います。逆に言えば、初心者ノードでも手数料自動調整を何かしらの形で設定しないと、安定してルーティングを発生させるのは難しいでしょう。
ルーティングって無理ゲーでは?
さて、ここまで読んでくれた初心者ノード運営者の多くの人達は「なるほど、わからん。とりあえず何か難しそうで何をしたらいいか全くイメージがつかない、それだけはわかった。」と感じているかもしれません。安心してください、自分も実際これはかなり難易度が高いことだと思っています。
例えば、Diamond Handsノードの運用は自分と小川さんが役割分担をして、それぞれの得意な分野で貢献、提案したりしていますが、初心者ノードがサーバの運用やデータ分析など含め一人で上記を全てこなし、常にノードを最適な状態に保つというのはあまり現実的ではないと思います。
海外では個人運営ノードで多くのルーティングをさばいているノードも存在しますが、おそらくこれはすでにたくさんビットコインを保有していて、ほぼ引退しているようなビットコイナーが、個人的趣味として時間を使ってやっている可能性が高いと自分は睨んでいます。他のフルタイムの仕事をしながら上記のタスクをこなしていくのは、仮に技術力があっても、時間や資金の制約的に大部分の人にとっては厳しいでしょう。
「じゃあどうすればいいんですか!?諦めるしかないんですか!?」ということで、そこを我々でなんとか解決出来ないかやってみよう、というのが今回の実験です。
テスターの募集
初心者ノードが最小努力でルーティングを安定して増やすためのステップは以下の通りです。
- どのノードにどれくらいの大きさのチャネルを貼るべきかDH運営側から指定
- DH運営が考えた手数料の自動設定ルールが記述されたConfigファイルをノードで設定してもらう
とりあえず上記の2点を最初に一回やってもらえれば、その後はしばらくノードを放置していても自動的に手数料が調整され、日常的にルーティングが発生する状態を維持できる状態を目指します。
というわけで上記のスキームを試していきたいのですが、DHコミュニティ全体にやる前にまずは密にデータを共有したり、報告可能なテスターを5~10人ほど募集したいです。まずは少人数のテスターと2週間ほど試してみて、上手く行きそうであればメンバー全体が簡単に設定できるように拡大していく予定です。
以下の条件を満たす人で興味がある、という人がいれば、是非テレグラムグループなどで声をかけてください。グループ内で調整さんなどを設置して、直接Zoomなどを通して個別に説明、ヘルプするセッションを設定します。
- ルーティング用の予算を最低でも0.1BTC用意出来る人
- Umbrelユーザー
- 試験運用中のルーティングデータを自分たちと共有してもいい人
- 実験終了後、他のコミュニティメンバー向けに日本語で設定方法などを説明する記事を書いたり、ヘルプするのに協力できる人(必須ではないですが、やれる人がいたら非常にありがたいです)
2月からまたビットコイン報酬配布も含めて積極的にやっていくので、盛り上げていきましょう。今年はライトニング関係でも色々進展があると予想しているので、ルーティングノード運営者にとっても面白い体験が出来ると思います。