LNDgで自動リバランス
みなさんこんにちは。Lightning Network(LN)のルーティングに勤しんでるみなさんは朝起きたら朝食前に寝てる間にルーティングが来てると期待して、umbrelの前にいるんじゃないでしょうか。上級者の方々は通知機能でオンタイムで把握していそうですが俺は毎朝起きたら先ずRTLです。最近RTLばかり見てるせいでどこかが病んでます
LNのルーティングはハマると楽しいですね。稼ぎ頭のチャネルのキャパシティが無くなるとルーティングが発生しなくなってモチベーションが下がるために基本リバランスすることになります。初期の頃はこのリバランスが分からない上に、やっても通らない全く通らないとにかく通らない、通ったと思ったら手数料負けをしていました。(リバランスする相手にもよりますね)
リバランス自体はキャパシティの調整として必要な作業なのでやるにはやりますが、あのリバランス中の待機時間が嫌です。しかも待たされた挙句にtime outするとモチベーション下がりまくりです。秒殺でno routeが出るのはもっと嫌です。
そうなると当然期待するのは自動リバランスでかつてDNFYOさんの記事を参考に自動リバランスの導入を図りました。しかしコンピュータの知識が無いせいで4行目で詰み、python3がインストールされたのかされなかったのか不明なまま辞めてしまいました。そういう人は色々いじらずに自動リバランスができる日がくるのを待つわけです。
この記事に出てくる男気リバランスというパワーワードが頭から離れない
LNDg
Twitterでアプリの使い方が説明されています
LNDgアプリはテレグラムアプリのDiamond Handsグループ内で紹介で知り、これには自動リバランス機能があります。先行して導入してる人もいて実績があるならこれは期待大だと思いさっそく入れてみました。
LNDgはたしかumbrelバージョン0.4.1くらいから使えるようになってます。インストール自体はumbrelのApp Storeから選択してインストールするだけです。インストール後のログインに必要なIDとパスワードはApp StoreでのLNDgインストール画面内に表示されていますので、それを入れます。
LNDgの自動リバランスの概要
- iTarget%でリバランスしたいチャネルを選ぶ
- リバランスに参加させるチャネルたちをTarget Outbound Above%で決める
- Targe Amount%でどれくらいの割合でリバランスを試行させるか決める
- Target Time(min)でリバランスする時間を決める
- Global Max Fee Rate%で1回ごとに試行するリバランス代の上限を決める
- その他
だいたいこんな感じです。大量にスクリーンショットを出しているので見づらいかと思いますがLNDgを初めて触った人間の操作なのでおゆるしを
そしてこれはLNDgにログインした画面です。俺のノードはたいして見るべきものがありません
使えるようになったのでとりあえず出しておきます的な見た目ですが、UIの作り込みはこれから良くなるのだろうと思います。
そしてこの下には開いたチャネル一覧があり、
右側にこの項目の重要なAR(Auto Rebalance)ボタンがあります。
このLNDgのリバランスは減ったアウトバウンドキャパシティを補充するイメージのリバランスの考え方で、上の画像のOutbound Liquidity(アウトバウンド流動性、以下OL)が小さい順で並んでいます(%表示です)。
これまでRTLでリバランスしていた頃はインバウンドキャパシティを用意する目的でリバランスしていました。インバウンドキャパシティがなくなるとルーティングが発生しなくなっていたので、リバランスといえばインバウンド。それがこのLNDgではアウトバウンドキャパシティを増やすリバランスをするイメージに切り替える必要があります。
私のノードではNiceHashが最もルーティング件数が多いのでアウトバウンドキャパシティがすぐ空に近づきます。そこでNiceHashを自動リバランスの対象にする操作をします。一番右側にあるAR一覧にEnableボタンがあり、これがリバランスするしないの実行ボタンになります。そこでNiceHashのEnableボタンをクリックします。
変更を加えると毎回茶色の帯で変更箇所が表示され、このようにNiceHashが対象になったと出ます。
NiceHashのARがDisnableに変わり隣りのiTaeget%に30という数値が出ました。このiTarget%てのが何なのかを説明する前にここの数値の変更について。
30を20に変えたい場合は20と打った後にenterまたはreturnキーを押す必要があります。LNDgの公式Twitterで気をつけましょうとツイートされていますね。
そして変更が加えられるとまた茶色帯で変更点がアナウンスされます。これなかなか親切
そして20に
iTarget%
(このiTarget%という単語はおそらくinbound target%を模したものだと思います。インバウンドキャパシティが何%にまで下げるのかを設定するので)
このiTarget%がNIceHashで20というのは「NiceHashのインバウンドキャパシティを20%まで下げる」ということになります。上の画像でのNiceHashのインバウンドキャパシティはInbound Liquidity(インバウンド流動性、以下IL)で見ると46%です。これが20%になるまでリバランスをしようとする訳です。いない間にやってくれるなんてLNDgに申し訳ないですねぇ
このiTarget%はリバランスさせたいチャネルをたくさんEnableにしたいところですがリバランス時間とリバランス成功の兼ね合いがあることと、LNBIGでデカいインバウンドキャパシティを用意したチャネルが邪魔くさい場合があります。LNBIGは後述します
Auto Rebalancer Setting
LNDgの画面を下にスクロールさせていくと自動リバランスの設定画面が現れます。これは今の設定値であまり参考になりません。
表と設定項目の表記が微妙に違っている
AR-Outbound%(Target Outbound Above%)
このAR-Outbound%はリバランスされるチャネルたちの範囲を設定するもので、アウトバウンドキャパシティを余してるチャネルたちはどの辺のやつらですか?と
Target Outbound Above%というので何%以上のアウトバウンドキャパシティを余してるチャネルを対象(犠牲)にしますか?という意味だと思います。この画像でも下のチャネルはアウトバウンドキャパシティだらけですね。
ここでTarget Outbound Above%を0.8にすると80%超のOLのチャネルたちをリバランス要員として使います、というふうになります。80%超というとBlixt Walletより下のチャネルたちです。多くはアウトバウンドキャパシティが多いチャネルと少ないチャネル同士でリバランスすると願ったり叶ったりになりますが、実際はリバランスがなかなか通りにくいです。チャネルの選定から見直しをする必要もあるのかも?
AR Target%(Target Amount%)
Target Amount%はリバランスするチャネルが1回辺りのリバランス量の割合は何%ですか?という設定です。
今回はNiceHashをリバランスする設定にしていますので、このNiceHashを例にするとNiceHashは1,000,000Satsでチャネルを開いています。このNiceHashをリバランスする時に毎回50,000satsでリバランスさせたいとしたら、
50,000/1,000,000=0.05
となり5%ずつリバランスの設定をすれば良いことになります。0.05を入力することで50,000satsずつリバランスを試行します。
チャネルのサイズ合わせ
ここで問題になるのがいくつかのチャネルEnableにしてリバランスさせようとするとき、チャネルのサイズが同じ大きさにしておかないとキッツいことになります。
これはLNBIGとNIceHashをEnableにした時のリバランス結果です。Target Amount%を0.05にするとNiceHashは50,000satsくらいのほどほどな量でやるのに、LNBIGは1発が約550,000satsとなり誰もリバランスしてくれそうにありません。
それとLNBIGはアウトバウンドキャパシティがほぼ無いせいでなのか勝手にEnableになることが多いです(アウトバウンドキャパシティが少ないチャネルをEnableにしようとする傾向があります)。でも上記のような問題があるので無駄な時間と試行になり、このLNBIGの自動リバランスを止めるにはiTarget%を100にしておきます。
AR Time(Target Time(min))
LNDgのTwitterでの説明ではリバランスの試行する前のルート検索時間に関係する項目のようです。リバランスに失敗した場合30分間は再検索をしないため、リバランス時間を長くせずに3〜5くらいがおすすめだそうです。それで現在は5で設定しています。ここで劇的にリバランスの成績が変わるのだろうか
AR Max Fee Rate(Global Max Fee Rate%)
これは割と分かりやすい設定でリバランスに払える最大手数料率です。ppm単位なので0.1%にするのであれば1000を入れます。今は350で固定にしていますがルーティング戦略はチャネルやサイズなどで変わってきますので正解はわかりません。
ではなぜ今350でやっているのかというと、ルーティング初級レベルの言い分としては稼ぎ頭のNiceHashが500ppm前後でルーティングが通るからで、これより小さい手数料でリバランスできてればまぁいいや、と。
その他の設定
- AR Max Cost% これの意味がよくわかっていません。適当な数値を入れてもたいしてリバランスの結果に影響が出ていないので絶対ではないのかなと思っています。詳しい人がいましたら誰かお教えください
- AR Autopilot 自動リバランスの自動運転みたいです。LNDgのTwitterではここは最初のうちはoffにして手動で体験でもしたどーよ?とかなんとか書いていました。私は最初からon(つまり1を入れています)です。
AR Enabled(Enabled) ここに「1」を入れてOKボタンをクリックすると自動リバランスが始まります。自動リバランスを停止させる時は「0」を入れてOKボタンをクリックします。「1」を入れてOKボタンをクリックすると早速リバランスが始まりますので、LNDgの真ん中ら辺にスクロールして自分のLNDgのリバランス結果を見てみましょう
(よく休まないでリバランスするよ、、)
NiceHashだけがリバランスするように設定しているのでNiceHashしか出てきていません。Fee Limitが10や3ではありますが、実際のpaymentではもう少し安くなっています。
あなたへのおすすめ
公式Twitterの後半に「設定が終わって自動リバランスを始めたらSuggested ARを見てみましょう」みたいなのがありました。自動リバランスに適したチャネルの提案がここに示されるようになります。
試しに今の状態でクリックすると、
現在あまりチャネル数が多くないのでやることがないんですね
最後に
当初理解がキツかったのはiTarget%でした。普段はMoon WalletとBlixt WalletとDiamond Handsのルーティングが頻繁だったのでこれら3チャンネルをiTarget%20にしてEnableにしていました。しかし全く何も起こらずiTarget%は収益性の高いチャネルだったのではないのか?と完全な勘違い。
アウトバウンドキャパシティが減るチャネルでないと手数料は稼げませんから、いつもインバウンドキャパシティが減る上記の3チャネルはLNDgの自動リバランスルールに関与しません。試行錯誤の繰り返しでやっと分かってきましたので最近は毎朝RTLよりLNDgを見てる方が多いです。これからは病まないはず
自動リバランスで設定していた数値はあくまでも個人的な見解です。確実なリバランスでもありませんのでこのアプリを使うときはぜひ自分に合った条件を見つけてください。
このLNDgにはFailed HTLCsという項目がありルーティングの打診はあったけどできなかった結果が見れます。これはルーティング戦略を考える上でも参考になるので、自動リバランス以外にも利用できる良アプリだと思います。
まだまだ完全完璧に理解はしていませんがこれからLNDgで自動リバランスをする方の参考になれば幸いです。長文乱文におつきあいいただき、ありがとうございました。
良記事。
「インバウンドキャパシティを用意する目的でリバランス」
→
「LNDgではアウトバウンドキャパシティを増やすリバランス」
これが明記されていて大いに助かった。