LNのリバランス等をCLIで行う方法

LNのリバランス等をCLIで行う方法

最近はDiamond HandsをきっかけにLightning Networkのルーティング試行錯誤に時間を溶かす今日この頃です。

といいますのも、

  1. Diamond Handsの記事を読み、面白そうだと一念発起
  2. Raspberry Piを買ってUmbrelなノードを立てる
  3. Ride The Lightning, ThunderHubを使ってリバランスする日々

といったかんじでステップを踏んできたわけです。

そして、手数料を安めにセットしてリバランスしようと試行錯誤してたわけなのですが、ひたすら不安定な挙動に悩まされました。

とにかく反応が返ってくるまでが遅い。

そして反応が返ってきたとしても、エラーだったりタイムアウトだったりすると。

ルートを探しているんだと思うのですが、それにしてもこの待ち時間は辛いなあ、と。

さて、こんなときはスクリプト化ですね。

スクリプト化の前段階として、コマンドラインでの指示出しができないとどうしようもありません。

ということで、今回はBalance of Satoshisというコマンドラインツールの導入法を解説したいと思います。

Balance of Satoshis

URL: https://github.com/alexbosworth/balanceofsatoshis

これは、UmbrelのようにLightning NetworkのコアエンジンとしてLNDを採用している環境に導入できるコマンドラインツールです。

Invoiceによる支払い、リバランス、ステータス確認、自動実行支援、通知支援など、とてもアドバンスドな機能が豊富で、LND使いならば入れておいて損はないツールかと思います。

Balance of Satoshisを使うと、例えば、以下のような感じでリバランスが行えます。

これの何が良いか、というと

  • 今どのルートを検証しているかが分かる
  • どのPeer経由で高めな手数料を取られそうになっているかが分かる
  • そのルート試行がダメだった理由が分かる

といった点かと思います。

さらに凄いのが、これらの情報をもとに特定のPeerやチャネルを経由させたくないな、と思ったら、それを指示できちゃう点です。せっかくなので、この話は有料コンテンツエリアにて書かせて頂きます。

それにしても、こういった使いやすいツールがあるのがLNDエコシステムの凄いところだあなと感心しきりです。

Balance of Satoshis (BOS)のUmbrelへの導入方法

まず、コマンドラインツール利用の前提としてSSHログインができる必要があります。この辺は大変優秀な記事が既にありますので割愛させて頂きます。

UmbrelにSSHログインしましたら、BOSをインストールします。

以下の3ステップを行います。

  1. BOS本体をインストールする
  2. Umbrel用のBOS設定ファイルをつくる
  3. 便利エイリアスをセットする

1. BOS本体をインストールする

UmbrelにはDockerが既にインストールされているため、Dockerによる導入が簡単です。

SSHログインしましたら、以下を打ち込みます。

docker pull alexbosworth/balanceofsatoshis

これだけ、です。さすがDocker。

2. Umbrel用のBOS設定ファイルをつくる

ここが最難関です。といいますのも、BOSのドキュメントがちょっと分かりにくかったり間違っていたりするんですね。Issuesには上がってますのでそのうち直るとは思いますが。

まず、BOS設定ファイルを置くディレクトリをつくり、その中にcredentials.jsonを作成します。

# ホームに移動
cd
# .bos/umbrelディレクトリを作成
mkdir -p .bos/umbrel
# ~/.bos/umbrel/credentials.jsonを作成
nano ~/.bos/umbrel/credentials.json

nanoエディタでは、下記を入力し、Ctrl+x Ctrl+sで保存して終了します。

{
  "cert_path": "/home/node/.lnd/tls.cert",
  "macaroon_path": "/home/node/.lnd/data/chain/bitcoin/mainnet/admin.macaroon",
  "socket": "umbrel.local:10009"
}

さて、問題無く設置できたか動作確認です。例えば、以下のように打ち込み、支払った手数料チャートを見てみましょう。

※ 2022年6月11日更新 umbrelのバージョンにより若干場所指定が違ってくると教えて頂きましたので、追記しました。

umbrel v0.4まで

docker run -it --rm --network="host" --add-host=umbrel.local:127.0.0.1 -v $HOME/.bos:/home/node/.bos -v $HOME/umbrel/lnd:/home/node/.lnd:ro alexbosworth/balanceofsatoshis chart-fees-paid

umbrel v0.5以降

docker run -it --rm --network="host" --add-host=umbrel.local:127.0.0.1 -v $HOME/.bos:/home/node/.bos -v $HOME/umbrel/app-data/lightning/data/lnd:/home/node/.lnd:ro alexbosworth/balanceofsatoshis chart-fees-paid

上手くいけばこんなグラフが表示されます。

すでに3,000円くらい手数料で溶かしているようです...

3. 便利エイリアスをセットする

上述のようなdockerコマンドを毎回打ち込むのは苦行ですね。そこで、独自コマンド"bos"を.bash_profileにてエイリアスとして作成しておくと便利です。

nano ~/.bash_profile

とやって、以下の行を付け足し、保存して終了します。

v0.4まで

alias bos="docker run -it --rm --network="host" --add-host=umbrel.local:127.0.0.1 -v $HOME/.bos:/home/node/.bos -v $HOME/umbrel/lnd:/home/node/.lnd:ro alexbosworth/balanceofsatoshis"

v0.5以降

alias bos="docker run -it --rm --network="host" --add-host=umbrel.local:127.0.0.1 -v $HOME/.bos:/home/node/.bos -v $HOME/umbrel/app-data/lightning/data/lnd:/home/node/.lnd:ro alexbosworth/balanceofsatoshis"

エイリアスを有効化するにあたり、

source ~/.bash_profile

とやるか、Umbrel自体を再起動してください。

エイリアスが有効になりましたら、

bos chart-fees-paid

とやることで、先ほどのdockerコマンドと同じ事が実現できます。

以上で導入完了です!

BOSを利用したリバランス

リバランスですが、次のようなコマンドにて行います。

bos rebalance --out {インバウンドキャパシティを増やしたいチャネル接続先Peerの公開鍵} --in {アウトバウンドキャパシティを増やしたいチャネル接続先Peerの公開鍵} --max-fee-rate {許容手数料レート(ppm単位)} --amount {目標額}

公開鍵ではない方法でPeerを指定したり、もっとカスタムした数量指定法などもありますがそのへんは

bos rebalance --help

とすると利用法がでてきますので深堀りしてみてください。

さて例えば、BreezからBitfinex (bfx-lnd1)へのリバランスをしたい場合、まずこれらのノードの公開鍵情報を探してきます。RTL、ThunderHub、Ambossなどでさがしましょう。以下が得られると思います。

Breez: 031015a7839468a3c266d662d5bb21ea4cea24226936e2864a7ca4f2c3939836e0bfx-lnd1: 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6

IN: bfx-lnd1、OUT: Breez、希望リバランス量 : 1M sats、限界手数料レート: 10ppmにてリバランスを実施したい場合、以下のコマンドとなります。

bos rebalance --out 031015a7839468a3c266d662d5bb21ea4cea24226936e2864a7ca4f2c3939836e0 --in 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6 --max-fee-rate 10 --amount 1000000

こんな感じで探索が始まれば成功です。

TemporaryChannelFailureとありますが、これはそのチャネルのキャパシティが枯渇しているということを表します。せっかくの手数料の安いルートなのですが、そのPeer管理者がキャパシティ調整を怠っているんですね、残念。時間をおくと調整されて使えるようになっている可能はあります。

さて、しばらく眺めていると、

こんなかんじでBOSが終了してしまうことがあります。この場合、手数料レートを1,236ppmにしないと現状ルートがねーぞ、というエラーメッセージとなります。手数料に納得がいくのであれば、--max-fee-rate 1300とかと指定して再度トライしてみましょう。

また、途中でこんなかんじで結構高めな手数料を課すPeerを見つけることがあります。

できたらこうしたルートは最初から除外したいですね。さて、以下有料エリアではこうした経由したくないPeerを指定してリバランスする方法、ルート探索タイムアウト時間をセットする方法などを解説しています。ご興味ありましたら是非ご購入ください。

Remaining : 1703 characters / 4 images
1,000

Sign up / Continue after login

Related stories

Writer

ビットコイン研究所にコラム寄稿したり、AndGoという会社にてビットコインなプロダクトと戯れたりしています。

Share

Popular stories

Argon ONE M.2選択は修羅の道

868

Umbrelのお手軽Dropbox自動バックアップ

261

DH発足から1年のUmbrelアップデートを振り返る

205