Lightning⚡node環境にPeerswapとLiquid node入れてみた(備忘録)。
こんにちはかずみょんです。Lightning Networkのノード立ち上げて後1か月ほどで1年が経ちます。ノードが死にそうになったことが何回かありますが何とか生き延びてます💦。自分はLightning Networkでリバランスを低コストで簡単に実行するというのは課題だと思っていて、これを解決するのはPeerswap+Liquid networkかなぁ~と思い始めてる今日このごろです。そんな時期にPeerswap開発者のTogami氏から突然Telegramのメッセージでpeerswapを強く推奨されたこともあってちょっと試してみようという流れになってしまいました(ほんとびっくり)。
(Peerswap自体はP2Pリバランスなのでchannelを張ってるお互いの環境にpeerswapのデーモンが起動してないと機能しません)
1. Elements(Liquid node)セットアップ
さて本題に入りますが現在ビットコイン レイヤー2の決済ネットワークとしてBlockstreamの開発するLiquid Networkという高速で手数料が安い決済ネットワークがあります。これはユーザーが双方向ペッグを使用して 2 つのネットワーク間(Bitcoin <--> Liquid)でビットコインを移動できるようにするビットコインのサイドチェーンです。Liquid上で使用されるビットコインはL-BTCと呼ばれ今回はL-BTCを用いてリバランスしようという試みです。
Liquid network詳細についてはこちら↓↓
Liquid networkは”Elements”という”Bitcoin core”と同じようなアプリケーションによって構築されるのでまずは”Elements”をインストールします(Lightning network,Bitcoin core入れてる同じマシンにインストールしました)。
自分の環境はwindowsなのでセットアップファイルをダウンロードし実行するだけでした(ほぼBitcoin coreと同じ、データ用DirはBitcoin coreのデータ入れてるSSDにElements用のDir作って指定しました)、ぜひUmbrel OSでも稼働できるようになってほしいです。
セットアップファイル(windows):elements-22.1.1-win64-setup-unsigned.exe
インストール手順↓↓(RasPi用もありますね)
Elementsのconfig設定し再起動します(指定したデータDir配下にelements.confがあるのでそれを編集)。
elements.conf↓↓
mainchainrpccookiefile=<Bitcoin coreのデータDirを指定>
mainchainrpcuser=<Bitcoin coreのrpcuser名>
mainchainrpcpassword=<Bitcoin coreのrpcpassword>
server=1
rpccookiefile=<ElementsのデータDirを指定>
rpcuser=<Elementsのrpcuser名:peerswapとの通信用>
rpcpassword=<Elementsのrpcpassword名:peerswapとの通信用>
rpcport=7041
立ち上がった画面はBitcoin coreとほぼ同じでした。。
2. Peerswapインストール
Peerswapについての詳細はYuyaさんと安土さんの分かりやい記事があるので参照しておきます。
環境がwindowsの自分はPeerswapをビルドしなければならなかったんですが、少しGoを勉強し始めた時に作った環境があったので、いがいと簡単にできました。
参考までにGoのinstallから簡単な理解まではこちら(windows)↓↓
Go -> srcの配下でソースをコピー
"git clone https://github.com/ElementsProject/peerswap.git"
Go
├─bin
├─pkg
├─src
│ └─peerswap
├─out
├─peerswapd.exe
├─pscli.exe
peerswapの配下でbuildコマンドを実行!
//peerswap demon
go build -ldflags "-X main.GitCommit=8075b00348bd854904196cf786bbbb16e15f3e7e" -o ./out/peerswapd.exe ./cmd/peerswaplnd/peerswapd
//peerswap command interactive
go build -ldflags "-X main.GitCommit=8075b00348bd854904196cf786bbbb16e15f3e7e" -o ./out/pscli.exe ./cmd/peerswaplnd/pscli
src -> peerswap -> outの配下にpeerswapのバイナリーができました。
後は"peerswapd.exe"を実行、実行後peerswap用のData Dirができるのでそこにpeerswap.confを編集(elementsとの通信設定)
"C:\ユーザ\ユーザ名\AppData\Local\Peerswap” (windowsの場合、lndと同じ)
peerswap.conf↓↓
lnd.macaroonpath=C:\Users\ユーザ名\AppData\Local\Lnd\data\chain\bitcoin\mainnet\admin.macaroon
elementsd.rpcuser=<elementsのrpcuser名>
elementsd.rpcpass=<elementsのrpcpassword名>
elementsd.rpchost=http://127.0.0.1
elementsd.rpcport=7041
elementsd.rpcwallet=peerswap <-- elementsにこの名前でwalletを作成する必要がある。
またpolicy.confという名前で新規ファイルを同じDirに作成することで、Peerしたいノード制限を設定したりできます。
policy.conf↓↓
reserve_onchain_msat=0 // <-- on chainに残したい残高かな?? (Liquid netwokのL-BTCはどうなるんだろ?)
allowlisted_peers=02df5ffe895c778e10f7742a6c5b8a0cefbe9465df58b92fadeb883752c8107c8f // <-- peerswapを許可するnodeを指定していく
allowlisted_peers=02d0e03736cbfc73f3c005bc3770327df0e84bd69bc8e557c279887344deb8bce2
allowlisted_peers=035b1ff29e8db1ba8f2a4f4f95db239b54069cb949b8cde329418e2a83da4f1b30
accept_all_peers=0 // <-- 1にすると全ノードに開放
で、再起動すれば設定反映されます。(再起動しなくてもreloadも出来そうな感じがする。)
"peerswapd.exe"を実行
起動画面↓↓
これで、L-BTC(Liquid network)を使ったLighning NetworkのSwap-inとSwap-outが出来るようになりました。
3. Swap-outしてみた!
まずはlistpeersコマンドでpeerswapの使えるノードを調べる。
pscli.exe listpeers
peerswap使えるノードは7ノードありました。そのうち許可がされてるのは5ノード、DiamondHandsでswapoutが使えるのは大きい!、ということでDiamondHands nodeとL-BTCでswapoutしてみました。
Node alias: allowed : asset
Blockstream Store : true : lbtc,btc
FREE PEERSWAPS! : true : lbtc,btc
DiamondHands💎🙌 : true : lbtc,btc
Lucky.Dog : false : lbtc,btc
Blockstream PeerSwap : true : lbtc,btc
iampigman peerswap : true : lbtc,btc
The Captain [Coincept.com] : false : btc
channel_idにDiamondHands のchannelを指定、3000000satをLightningNetworkで送りL-BTCと交換する。swapの流れをみてるとまず①手数料(303sat)を相手ノードに送る、②Logにあるopening txを発行、③Lightninnetworkで相手ノードに3000000satを送金、④claim txを発行し発行手数料(146sat)が差し引かれた2999864satを受け取って無事swapoutが完了しました。
swapout command↓↓
pscli.exe swapout --channel_id 826845938318835712 --sat_amt 3000000 --asset lbtc
Log↓↓②
Lightning networkのTransaction↓↓①,③
L-BTC受け取り↓↓④
今回はL-BTCでやりましたが、生BTCでもできるのでFeeが安ければやる価値はあるのかもしれません。後、受け取ったL-BTCどうするの問題があるんですが、自分はとりあえず今はBitfinexにL-BTCを送ってLN用BTCに変換後(変換手数料はなし)、Bitfinexのchannel(bfx-lnd0)から戻しています。他にL-BTCがswapできるところの一覧は下記の通りのようです。sideswapが手数料(0.1%)一番安いのかな??
Swap L-BTC↓↓
4. まとめ
ビットコイン保管して少しでも増えればいいなくらいの感覚で始めたLightningNetworkですがやることや考えること多すぎです。。
とりあえずPeerswaper増えるといいな。
以上
UmbrelアプリとしてElements Coreはあるけど、コイツめっちゃメモリぐいで4GBは持ってかれる。さらにIBDはめっちゃ負荷かかる。
だからラズパイ4のUmbrelには不向きだと思う。Umbrel Homeはわからん。