見出し画像

Lightning Network挑戦記(4)

おはようございます。🐤

Lightning Networkのことがだいぶわかってきました。つよつよの先輩がたから見ると鼻で笑われそうですが、自分なりには進歩が見えて楽しいです。

昨日charge-lnd(チャネルの自動リバランス)を導入して、はじめての「まともな」ルーティングが得られたので、その記念にここまでの足跡を記録していこうと思います。

0. 守り

現在僕は約0.3 BTCをLightning Networkで運用しています。0.3 BTCというと2022年8月現在のレートで約$6,900(約93万円)です。

僕にとって93万円は大金で、「なくなってもいいお金」なんかではありません。だから、「万一機械が壊れた場合」にも、その資金がなくならないように備えておく必要があります。

ラズパイという業務用でもなんでもないおもちゃのコンピュータが24時間休みなく動き続けているんですから、いつ壊れても不思議ではありません。

というわけで、守りの対策です。次の3つで備えます。

  • ラズパイの環境を整える(発熱、埃、安定した電源とネットワーク、予備のラズパイの準備)

  • ビットコインウォレットのシードフレーズの保管

  • Lightningチャネルのバックアップ

さて1つめです。ラズパイが壊れたことを想像します、たいへんです。

もし予備のラズパイがあったら、すぐにMicroSDを差し替えて立ち上げたらおそらく事なきを得るはずです。(未経験)

もし予備のラズパイが無かったら、その復旧には新しいラズパイをアマゾンでポチって入荷待ちして、おそらく1か月くらいはかかるでしょう。

あと、そもそもOSを入れているMicroSDが壊れたり、ビットコインブロックチェーンのデータが入っているSSDが壊れるかもしれません。そうなるとどうやってもアウトです。

そんな時にバックアップが役にたつと思うのですが、きっちりバックアップがとってあっても、完全に元通りにはならないのです。

なんのためのバックアップ? と思いますけど、これはノードが復旧した時に「過去のチャネル状態のバックアップはこれだよ、現在のと比べてみよう、うん、古いよね」という確認をして各チャネルの相手ノードに「チャネルの強制閉鎖」を依頼するためのものだそうです。(lndというプログラムが自動で依頼してくれます)

チャネルの強制閉鎖をすると、相手がもっている最新の状態に従って、オンチェーンにBTCが戻ってきます。

バックアップをしていてもチャネルは元には戻らない……そんな独特な世界です。

でも、このバックアップがないと、その強制閉鎖の依頼もできないので、やっぱりバックアップは重要です。チャネルの追加を行うたびに必ず下の図の「Download channel backup file」を実行してください。

その下に「Automatic backups」とあります。これももちろんオンにしているのですが、自動的に上記のバックアップがとられるわけではなく、Umbrelの運営側に保存されるだけなので、これが役にたつのは最後の手段です。(運営と連絡をとって、指示されるとおりに手順を実行して、というようにかなり面倒で時間がかかります)

参考:
LNノードのバックアップ&リストア考察 | Yuya | Spotlight
channel.backupがない状態からumbrelの復旧に挑戦 | たがえる | Spotlight

1. 導入

導入にあたって参考にしたウェブサイトはつぎのとおりです。

Umbrelのバージョンが0.5になっているのがポイントで、上記の解説と少し違います。というわけでこちらの記事を書きました。

機材の選び方、Umbrelのセットアップ、Bitcoinノード、Lightningノード、Ride the Lightningアプリのインストールまで説明しています。

2. チャネル

環境が整ったら次にチャネルを張ります。ここが結構大きな挫折ポイントです。これまでは懇切丁寧に画像付きで「ここをこうクリックして」などと解説があったのに、いきなり、

「じゃあ好きなノードにチャネルを張ってみよう」

って、好きなノードなんかあるかい! って状態だと思います。どこに張ったらいいかわからなくて、「さあここまできた、どこに張るかは大事なようだから後でちゃんと調べよう」とそのままほったらかしになるのです。

ここで「ちゃんと」でなくても、とにかくやってみる態度が必要です。とりあえず張ってみて、ルーティングが回ったら残して、回らなかったらクローズして、というのが一番です。

あと、ここがとても重要なのですが、一般的なチャネルの戦略は教えてくれても、「ここ一番の重要情報」はおそらく誰も教えてくれません。いや、Spotlightの先輩ニキたちはそれでも結構教えてくれるのですが、少なくとも僕がもし上級者になって儲けられるようになったら教えません。

なぜなら、他人に狩場を教えたら自分の取り分が減るからです。これは「新台来たぞ! みんなで盛り上がれ~」というDeFiの世界(新規呼び込めば自分も儲かる)とは決定的に違う部分です。

Lightning Networkの「Rooting to Earn」の世界はとるかとられるかの世界です。「仲良くみんなで儲けよう」は成り立たないことを理解しておきましょう。

その上で僕がチャネル選びの参考にしたのはこちらです。

これを見て、とりあえずDiamondHandsのノードにチャネルを張って、あと5番の項目にホワイトリストというありがたいリストがあるので、これを参考にいくつか張ってみると良いです。

僕がつまづいたポイントは2つ。

(1) ノードアドレスがわからない
⇒amboss.space(もしくは1ML.com)でノード名(alias)を検索して、ここをコピペ(pubkey@ip:port の形式になっている)

(2) チャネルを張れない
⇒チャネルに入れる額が不足(下の図参照)
⇒そもそも自分の資金が不足(送金完了してから3承認される必要あり、30分程度待つ)

チャネルに入れる額が不足
そもそも資金が不足

ちなみに、チャネルを張るときのスライドバーは、チャネル張りにかかるビットコインブロックチェーンの手数料を決めるもので、チャネルの送金手数料を決めるものではないです。「~4hrs」の方にしたら時間がかかるけど安いことが多いです。その時の価格と気分次第でOKです。

チャネルが張れたあと、3承認でアプリにチャネルが反映されます。

ちなみに、チャネルの初期設定はbase fee=1000, fee rate=1になっていて特にrateが激安過ぎるので、チャネルを張ったらすぐにbase fee=0、fee rate=500程度に設定しておくか、次の例の最後の2行を参考に、lnd.confで初期設定を変えておくといいと思います。そうしないとせっかくインバウンドキャパシティ作ってもすぐに持っていかれる可能性が高いです。

[Application Options]
# up to 32 UTF-8 characters
alias=ALIAS
# choose from: https://www.color-hex.com/
color=COLOR
# default fees for new channels (does not affect existing ones)
bitcoin.basefee=0
bitcoin.feerate=500

参考:lnd.conf example - Lightning Node Management

3. リバランスと自動化

Umbrelのセットアップ、アプリのセットアップ、そしてチャネルの開設が終わったらいよいよリバランスです。

チャネルを作りたては、次の図のようにインバウンドキャパシティがゼロのはずです。自ノードが中継に使われるためには、一般的にはアウト:インが50:50に近くなるのが理想です。

Ride the Lightningアプリ画面

というわけで、インバウンドキャパシティを作成するのに手っ取り早い方法は、自分のノードから、他で作った自分のウォレットにBTCを送金することです。

そして、送金に使うウォレットはBlueWalletではなくWallet of Satoshiを使った方が良いです。少なくとも現時点で僕はそう考えています。BlueWalletは出金の時に少なくとも送金額の0.3%の手数料を支払う必要があるので、調子にのって使いまくっていたらたくさんの手数料を支払わないといけないことに気づきます。

Wallet of Satoshiからだと、送金額にかかわらずおよそ7000~9000sat程度の定額でLightning NetworkにあるBTCをオンチェーンに移動できます。

Ride the Lightningアプリの「On-chain」メニューから、「Generate Address」をクリックして受け取り用アドレスを表示します。

これをコピーしてWallet of Satoshiの「SEND」でQRコード読むかコピペで送信先に設定します。送金額にかかわらずだいたい7000~9000satくらいが手数料としてかかります。

このように、チャネルごとに相手ノードの手数料設定やルーティングの発生状況やamboss.spaceのFee Reportなどを見て、自分の手数料を決定していくのですが、自分で考えて戦略をたてるのが楽しい一方で、とても手間がかかってRoutingの他に何も手につかない状態になります。

なので、ここで自動化が必要になります。僕はDHメソッドにあった「charge-lnd」というツールを使いました。この導入には少し骨が折れるかもしれませんが、たぶん次のブログのとおりにやってみたらなんとかなります。

4. コミュニティなど

かなり疲れてきてないでしょうか。まだあります。

  • DHメソッドのためのDiamondHandsコミュニティ

  • Lightning Network+のTriangleで効率よくインバウンドを作る

最後のTriangleというのは、自分から相手に向けて1つチャネルを張るだけで、自分に向けたチャネルもできてしまうという効率の良いインバウンドキャパシティの獲得方法です。チャネルを張る期間と金額が縛られるのはデメリットですが。

まとめ

と、今回はこれまでのまとめで、自分のための記録でもあります。

もし誰かの参考になりましたら嬉しいです。

それではまた、Lightning~(@^^)/~~~


この記事が気に入ったらサポートをしてみませんか?