【LN】deezy.ioにインバウンドキャパシティを売る
deezy.ioといえばLN-BTCとオンチェーンBTCをスワップするサービスとして知られていますが、最近になってチャンネルのインバウンドキャパシティを買い取ってくれるサービスを始めました。
deezy.ioとの間に開いたチャンネルを閉じる際に、deezy.io側のキャパシティ(=自ノードのインバウンドキャパシティ)の1000ppm分に相当するLN-BTCを報酬として支払うというものです。これにより自ノードは報酬分のLN-BTCを、deezy.io側はキャパシティ分のオンチェーンBTCを得ることになります。deezy.ioは前述の通りLN-オンチェーンのスワップを主なサービスとしているため、売り物となるオンチェーンBTCの収集をアウトソーシングする狙いがあると思われます。
さて、この報酬を貰うにはただチャンネルを閉じれば良いというわけではありません。閉じたいチャンネルのチャンネルポイントを調べ、それに対して自ノードで署名を作り、deezy.ioの公開するAPIに対して予めリクエストを送る必要があります。リクエストを送るとdeezy.ioから直ちに報酬分のLN-BTCがKeysendで送られ、その後にdeezy.io側から自動的にチャンネルを閉じるフローとなっています。
とはいえ上記の流れを毎回手作業で実行するのは面倒…というわけで、このAPIを実行するだけの単純なシェルスクリプトを作ってみました。
…勢いで作ったのでUmbrel環境でしか動作しませんがご了承ください…
今回はこのスクリプトを実行して実際に報酬を貰ってみたので手順を紹介します。
手順
まずdeezy.ioに対して開いているチャンネルのチャンネルポイントを調べましょう。私はRTL (Ride the Lightning) をノードにインストールしているため、そこからチャンネル情報を参照して確認しました。
上図のChannel Point
に表示されている98c6ccf9acb4f955d5fffd867af05cd7cb5bb8a2292d20e962733ecc1be45c9a:1
がそれです。
また、この際にdeezy.io側のキャパシティも確認しておきましょう。可能な限りdeezy.io側にキャパシティを寄せた方が報酬が高くなるためです。
なお、deezy.io側にキャパシティを寄せる手段は特に指定されていません。deezy.ioでスワップアウトしても良いですし、リバランスで他のチャンネルにキャパシティを移しても構いません。ただし前者は報酬分よりも高くつくはずなので、スワップアウトしたい理由が無ければ避けた方が無難でしょう…
スクリプトの実行
自ノードにCLIでログインして下記コマンドを実行し、スクリプトをダウンロードしてください。
umbrel@umbrel:~$ git clone https://github.com/Marimox/request_deezy_closure
ダウンロードが終わったら出来上がったフォルダに移動し、先ほど調べたチャンネルポイントを引数としてスクリプトを実行します。
umbrel@umbrel:~$ cd request_deezy_closure/
umbrel@umbrel:~/request_deezy_closure$ bash request_deezy_cloure.sh 98c6ccf9acb4f955d5fffd867af05cd7cb5bb8a2292d
20e962733ecc1be45c9a:1
うまくいくと下記のようにメッセージが表示されてリクエストが完了します。
========================================
[INFO ] Get Earn Info
[INFO ] current_earn_ppm =[1000]
========================================
[INFO ] exec lncli signmessage
[INFO ] channel_point =[98c6ccf9acb4f955d5fffd867af05cd7cb5bb8a2292d20e962733ecc1be45c9a:1]
[INFO ] signature =[ryc18yauy4s4jp4fcn1gyx6fymwcwzozup8ihod1g7mnxs6jbon7ektsqxzyo6kxg9gdmky4umxjh5p5gugcxtjotfhjj5wjxa5c7tad]
========================================
[INFO ] Request Earn by Closing Channel
[INFO ] payout_ppm =[1000]
[INFO ] payout_payment_hash=[cfe72750559b62a72f04628c8db9510cccbdbf343409e3bb89fe9e49b9f3a5f7]
[INFO ] status =[PENDING]
========================================
ステータスが「PENDING」となっていますが、これはdeezy.ioによる報酬の支払いが完了すると「COMPLETE」に変わります。一度リクエストしたチャンネルポイントを再度指定してスクリプトを実行してもエラーとはならず、現在のステータスを表示してくれます。
リクエストに成功すると即座にLN-BTCが送られてきます。BoS Telegramだとこんな感じでメッセージも表示されます。
報酬の受領に成功するとチャンネルがdeezy.ioによって閉鎖されます。
手順としては以上となります。
有料部分ではこの手法で収益を伸ばす方法について考察してみます。
やってみたよ
600万satsのチャネルでリバランスで流動性1%に偏らせて上記スクリプトを実行。
Keysendにて5,933sats受取
ClosingTXのFeeで2,820sats支払い(16.8sats/vB)
差し引き3,113satsの利益
チャネルサイズが大きくないと利益が小さい。
Feeは2confで入るような高額Feeで計算してそうなので、mempool.spaceで高優先が高すぎるなら見送った方が良いかもね