【第3回】「Umbrel」で素人でも簡単にBTCフルノード&Lightningノードを構築する
第2回では同期完了を待つ間にUmbrelの基本的な機能・拡張アプリに関してザックリと紹介しました。
おそらく第1回の記事を見てフルノード構築を始められた方はビットコインの同期が完了しているのではないでしょうか?
100%同期してしまえば後はそのまま放置しておくだけでBTCフルノードの構築・運用は完了です!おめでとう!君がビットコインだ!
しかし思いのほかあっさりとフルノードの構築が終わってしまい拍子抜けしている人もいるのではなかろうか?
そんな人におすすめなのがLightning Networkノードの運用だ!
Spotlightを利用している人ならお馴染かもしれないがビットコインのLightning Network(以下 ”LN”)を利用すればビットコインなのに数円以下の手数料&ほぼリアルタイムで送金できるという優れもの。
最近話題のL2(レイヤー2)といえばしっくり来るかもしれないが、せっかくならばこのLNのノード運用もしてみよう!というわけだ。
ちなみにLNノードの運用を上手く行うことで年利約1%ほどのルーティング手数料収入が得られるかも?こちらはyuyaさんが定期的に運用実績を記事にしてくれているのでLN運用される方は必読です。
さて、前置きが長くなりましたが今回のお品書きはこんな感じになります。
- LNを使う前の基礎知識
- ペイメントチャネルの開設
- チャネルのキャパシティバランス
1.LNを使う前に
さて、ここが一番筆が進まない項目なのだが、LNを使う上で最低限の仕組みというか知っておかなければならない知識があるのでまずはyuyaさんの記事を見ていただきたい(他力本願)
とても分かりやすいですね。てなわけでLNで送受信をするためには最低でも1つのチャネルを開かなければなりません。
UmbrelのLightning項目を見ると「Send」や「Receive」が表示されているためすぐにでも受け取りができそうに思えますが、チャネルは開いていない(繋がるルートが無い)ためどれだけ別のウォレットから送信しても受け取ることができないのです。
Blue Walletなどのカストディアルウォレットであればすぐに受け取りができるようチャネルを調整してくれているのですが、Umbrelの場合は誰とも繋がっていない孤島スタート。
つまりUmbrelでLNを使うにはまず「チャネルの開設」が必要!というわけだ。
しかし一つでもチャネルを開設すればネットワークを経由することで直接チャネル開いていない人とも送受信ができるようになります。
スーツのおっさんとしかチャネルを開いていないのだが、[首を振るおっさん]→[アカザ君]を経由することで[イーロン君]や[KJ君]と送受信ができる。
これが【ペイメントチャネルネットワーク】で、チャネル間を経由することを「ルーティング」と呼ぶ。(らしい)
ルーティングに協力した人は手数料としてあらかじめ自分で設定した手数料を貰える→これがLNノードの運用による利回りとなる。
2.ペイメントチャネルの開設
という訳でLNを使うためにチャネルを開設していくのだが、チャネルを開くにはオンチェーンのBTCをLNにデポジットする必要がある。
なのでUmbrelのBTC(オンチェーン)ウォレットにあらかじめ資金を入れておこう。
後述しますがチャネル開設時にデポジットした金額がLN上で扱える資金の上限になるため懐事情や使用頻度等を考慮したうえで額を決めてね!
あとLNやUmbrel自体もβ版のため失っても自我を保っていられる程度の額を自己責任で運用しましょう。
BTCオンチェーンに資金を入れたら「Lightning」から矢印の「OPEN CHANNEL」を選択しよう。
するとチャネル開設画面が出てくるので諸々入力していく
①「Lightning address」は開設したい相手のLightningアドレスを入力するのだが、相手のアドレスをいちいち聞くわけにもいかないので→「1ML」というサイト←で検索しよう。
今回は[Spotlight]と検索しyuyaさんが運営しているSpotlightのパブリックノードとチャネルを開設してみる。
「Lightning address」は02a~から始まる文字列になるのでこちらをコピーし①に貼り付ければOK!
②は先述のDeposit量を入力、③はオンチェーンBTCをLNにデポジットする際の送金手数料設定になる。
デフォルトでは4段階の手数料から選択するのだがなるべく節約したいのであれば24時間以内を選択しよう。慣れている人は「Custom」をonにして自分で手数料調整をすればかなりお安く送金できる。
mempoolの赤枠部分を参考にするといいかも
入力が終わったら「OPEN CHANNEL」を押すことでLNへのデポジットが開始される。通常のBTC送金と同じなので手数料を盛れば1ブロック取り込み&3確認≒約30分ほどでチャネルの開設が完了するはずDA。
チャネルに関してはいくつ開設するのが正解なのかは不明だが、ルートを増やすという意味では少なくとも一つはチャネル数が多いノードと繋ぐといいのではなかろうか?(小並感)
この記事を書いてる時点だと最も開設チャネル数の多いパブリックノードはACINQの1512チャネルとなっている。
最近になって思うのは、大手と繋げばチャネルを経由することであらかた送受信ができるようになるが、ルーティング回数が増えるほど支払う手数料は増えてしまう。
またネットワークが中央的になってしまう気もする(鳥取から広島に荷物送るのに一旦東京を経由してから広島に運ぶような?)ので、ペイメントチャネルネットワークの分散性を高めるならチャネルの少ない者同士で開設し合うのがベストかも?
(近場同士の方が交通費=ルーティング手数料は掛からないよねと)
その方がルートとしての価値は高いと思うのだが果たしてルーティング回数に影響は出るのだろうか?謎である…
ちなみに前回も書いたようにUmbrelで構築したBTCフルノード・LNノードはTorによって匿名化されているためノードに名前を付けることはできないのでご注意を。
しかし自身のLightning addressを伝えれば相手にチャネルを開いてもらうこともできるし、先程の1MLでもアドレスで検索を掛ければ自分のLNノードを確認できる。
アドレスを確認するにはLightningメニューの右上赤枠の部分から表示することが可能。
ちなみに以下が私のLightningアドレスになるので田舎ルートを開拓してくれる物好きな方が居れば是非チャネルを開いてみてほしい。
03da03d338ca9ec82eed4d686b672972dd01ecaf1eedd24515dd329e51abbd32cd@ujz4d4mx525c2l35dyc3rhjpsef3tmzxpmtt672nvq3kitbkny4ejxqd.onion:9735
3.チャネルのキャパシティバランス
チャネルの開設が完了するとLightning画面にチャネルの情報が表示される。(画像ではすでに3つのチャネルが開設済み)
①を見ると「Max Send」と「Max Receive」とあるが、これは見ての通りで今現在Lightningで【送金できる最大額】と【受け取りができる最大額】になる。
普通のオンチェーンウォレットなら送金可能額は分かるが「受取可能額」という概念は無いので不思議に思うはず。
これはチャネルを開いた際のデポジット金額およびチャネル内のバランスによって変化する。
画像ではおっさんがアカザ君とのチャネル開設を行った場合で、おっさんのデポジット金額は50万Satoshi(0.005BTC)だった。
するとこのチャネルの容量(トータルキャパシティ)は50万Satoshiとなり、チャネル開設時は①のようにデポジットしたおっさんが50万Sat:アカザ君は0Satといったバランスになる。
この状態(①)だとおっさんは50万Sat送金することができるが、アカザ君はチャネル内の残高が無いため【送金ができない=おっさんは受け取ることができない=おっさんの受け取り可能額が0Sat】という事になるのだ。
そこでおっさんはとりあえず25万Satoshiをアカザ君を通してルーティングし、自分のライトニングウォレットに送金した。
この場合のバランスが②になる
おっさんの残高は25万Sat:アカザ君の残高も25万Sat=2人の残高を足すとチャネルの容量通り50万Satになる。
これでおっさんの送金可能額は25万Sat、受取可能額も25万Satになるわけだ。
アカザ君を通してルーティングしたが、この2者間のやり取りは50万Satのチャネルで完結するので少しややこしいが、画像にするとこんな感じではなかろうか
まぁLNではチャネル容量やバランス次第では送金・受け取りができなくなる場合があると覚えておけばOK。
特にチャネルを開設したばかりだと画像の③のように50万SatのチャネルでMaxSendが50万Satとなり受け取り出来ない状態でスタートするので、おっさんのように一度どこかに送金してチャネルのバランスを調整しよう(リバランス)
ちなみに誰かにチャネルを開いてもらった場合は②のようにMax Receiveが100%になるので受け取りはできるが送金は不可。
しかしこの2つのチャネルを活用し、送金時は③のチャネルから送り、受け取りは②のチャネルを使うことで送受信はできるのだ!(ややこしい…)
なので①に表示されているMaxSend/MaxReceiveは開設しているチャネルの合算で、基本的にはこのバランス内であればLNで送受信ができると思っておけばOK!あとは…
・MaxSendの事を「アウトバンドキャパシティ/ローカルバランス」
・MaxReceiveの事を「インバウンドキャパシティ/リモートバランス」
とか言うので非常にめんどくさい!
いろいろと長くなってしまったが、LNに関しては自分もまだまだ謎な部分が多いので間違ってたらすまぬ。コメントなど頂ければ随時修正していきます。
いずれにせよ理解するためには触ってみるのが一番!
少額からでもチャネルを開いてLNで送金するところから始めてみましょう!
LNで送金する際は「Send」から送金先で発行されたインボイスを貼り付ければOKです。
せっかくなので我が家のクマノミ水槽に遠隔でエサやりができて様子も見れる「NEMO FEED」を試してみてね!(エサやり出来るのは11時30~20時半まで)
上記のNEMO FEEDにアクセスして、赤枠部分をクリック!
別タブで送金先情報が出てくるのでインボイスコードをコピー!
UmbrelのLightning画面→「SEND」→赤枠にコピーしたインボイスコードを貼り付け→送金!
無事に送金が完了するとLIVEカメラに給餌装置が表示され餌を投下→クマノミ達が餌を食べる!という仕組みです!
1回当たり100Sat(約5円)なので是非試してみてね!もちろんUmbrel以外のLightningウォレットからでもエサやり出来ます(MONAやイーサも可)
くぅ~疲れましたw 長くなりましたがこれにて第3回が終了です!
次回はあるか分かりませんが書くとしたらLNノードのルーティング周りやApp機能の掘り下げくらいかな?
Umbrelでフルノードを建てる方がドンドン増えているので是非みなさんも気づいた点などあればSpotlightに投稿して盛り上げていきましょう!