【LN】BoSでDual Funding Channelを作る

【LN】BoSでDual Funding Channelを作る

LNノード運用でチャンネルを新たに開設する時、こんな悩みがあったりしないでしょうか。

  • もっと大きなチャンネルを開きたいけど手持ち資金が足りない
  • チャンネル開設後にインバウンドキャパシティを作るのが面倒

この2つの悩みは実のところ同じ原因、つまりチャンネル開設資金の出どころがチャンネルを開いた側のウォレットであることに起因します。したがってチャンネルを繋ぐ2つのノードがそれぞれ資金を提供してチャンネルを作ることができれば、上記の悩みはおのずと解決します。

残念ながら標準機能では2つのノードから資金を出し合うチャンネル(いわゆるDual Funding Channel)を作ることはできませんが、Spotlightでも頻出のBalance of Satoshis (BoS) を使用すれば実現可能です。BoSのインストール方法は下記の記事をご参照ください(このくだり何回目だろう…)。

前提条件

この仕組みではノード間で情報をやり取りする手段として、内部的にKeySendを使用します。KeySend自体の解説はこちらの記事をご覧ください。

さて、KeySendを使用する都合上、Dual Funding Channelを実施するには下記の前提条件が必要となります。

条件1)KeySendを有効にしている

lndであればlnd.confの[Application Options]セクションに accept-keysend=trueが記述されていれば問題ありません。Umbrelならばデフォルトで有効となっているはずです。

条件2)既にチャンネルを一つ以上開いている

KeySendはインボイスが無くともテキストを載せた送金が可能ですが、送金自体はチャンネルを通じて行われます。したがって、今回開こうとしているチャンネルがノードにとって最初のチャンネルの場合はKeySendの通り道が無いため Dual Funding Channel は作れません。

またこれも送金に絡むことですが、チャンネル開設要求側にはKeySendを送るためのアウトバウンドキャパシティが、チャンネル開設応答側にはKeySendを受け取るためのインバウンドキャパシティがどこかのチャンネルに必要となります。

条件3)作業中双方のノードがオンラインで操作可能である

双方のノードがオンラインでないとKeySendをやり取りできません。またチャンネル開設要求への応答には制限時間がある(30分以内と聞いたことがありますがソースを見つけられませんでした)ため、作業を行うスケジュールを調整する必要があります(タイムゾーンが違うノードと Dual Funding Channel を開こうとすると苦労します…)

操作方法

1)チャンネル開設要求側

CLIで下記の通りコマンドを実行します。

umbrel@umbrel:~$ bos open-balanced-channel

するとチャンネルを開く相手のノードのパブリックキーを聞かれるため入力します。

? Public key of the node to request a balanced open with?
0227d47539ebbfbb3548abdb31a243063bf2ff2dd77da2af04404da61ab8264560

入力したノードへのルートをBoSが検索して教えてくれます。

checking_route:
  - 700580x1922x1 ★ ★ ★ ★
  - Garlic? 033b63e4a9931dc151037acbce12f4f8968c86f5655cf102bbfa85a26bd4adc6d9. Fee rate: 0.01% (100)
  - 737461x1433x0

チャンネルのサイズ(sats単位)を聞かれるので入力します。

? Total capacity of the new channel? 5000000

開設時のオンチェーン手数料(sats/vB)を聞かれるので入力します。mempoolの込み具合に応じて適宜調整してください。

? Fee rate per vbyte for the joint funding transaction? 1

チャンネル開設資金はノードの資金を使うかと聞かれるのでYesと入力しEnterを押します(外部のウォレットを使うこともできるようですが試したことはありません)

? Use internal wallet funds? Yes

すると入力した情報をもとにチャンネル開設トランザクションの概要が表示され、KeySendが送信されます。

refund_transaction: 0100000000010179010ebdc09b76647f4c77bb983a870fc5a49a47db0a89628f8e090fa9c6deba0100000000000000000191252600000000001600141fca67753e33089e6cb3f87d27fa8f13c5b4b6ff02483045022100fc9a76b122ccf7373079c105f61a171fb5c41a79da1cba8ec07508597ec29aff02205e6252656122ced75b386631c8f218405e9da3bfae5de7c154b627becb25d8e3012102413d0f01c0613c0c5db54e49aa4e4134a976b1938b2841640f2823038cbd3fee00000000

finding_route:
  - 700580x1922x1 ★ ★ ★ ★
  - Garlic? 033b63e4a9931dc151037acbce12f4f8968c86f5655cf102bbfa85a26bd4adc6d9. Fee rate: 0.01% (100)
  - 737461x1433x0

requesting_balanced_open_channel: true

waiting_for_peer_balanced_channel_acceptance: true

received_balanced_channel_acceptance: true

channel_transaction_id:    21fd7d1c87ef329969fcb3d86207020d4af3a234e7ea0a8c8a3742815fe5e1b8
channel_transaction_vout:  0
transactions_to_broadcast:
  - 020000000001033530a587453e75ef5190bab3bab35d922d09b471ef232db781d48b0047dc8fb10000000000ffffffffbba41af9a61ecd12bb2c4795751cbc3610ff937044aba0d49d4e3602a78e1ac00000000000ffffffffb7428967ee0551382449d9d91edfaadad480cf7fda025c6153be06550c372bcb0100000000ffffffff02da5a0600000000001600141cf2667a8ab524b077e8ef5b6ad57122c9c824abff252600000000001600144a25f138b15596fa1a81d66260fd5390b95ed78e02473044022052479aac172843a9c689b47bc4cf533a2f4b3fbf97a77719a44fa828362d100d022077e06a718a8fd125a4197350772e6cfcdb94d49e28f582f916fda4a620fba67b0121034137e5e6dc93036d7d5c7c903b01813fe2431452967ba523f7fbd862dc728fb3024830450221009800fdb6ca87951d27c2e83215b88c7adbda572be624f0c18f51bd0fbe57656f0220525676a6b0df6d29ea5825457c360cf7127411d651f259d9edee2cb1a7d9c4560121022bf9dc7b2c30391b6594b78643b6ea1efec8618ca32fcd87ebffe071d688a06d02483045022100fde971daf5da1d17b0d4d737693c90bad2b56154f96ce2309a6a0ddc0ae629f202206a49a538c9f7f63c16781a204872a807354a35b25d640a1f217dffe65775762c01210377592021805700b87ebc72e4c08803963b8dd0278e798a5e14d3a459734301a700000000
  - 0100000000010279010ebdc09b76647f4c77bb983a870fc5a49a47db0a89628f8e090fa9c6deba010000000000000000bc90385cfdde5ccc941f4d41e214f7d693cc98a26d4d5195e1947cfe1e61775c00000000000000000001404b4c00000000002200207c5c80d85110d25e3dfec3652f7c591810975487f9689959cc3b74e679d14afd02483045022100dc45d499aeedd39b10cac74f171ba3c1ab1ecd9d02c6f8f67d2d2c24330b862602201f355f0e3106f06450d4a36acacb85e89d91d5b39e86197bbdbce54a41664606012102413d0f01c0613c0c5db54e49aa4e4134a976b1938b2841640f2823038cbd3fee02473044022021226abd92382fd619c7c36223887f346f738b1ed8b0eb7b82c69f22fc6c96fc022052fc1ac814d4c2dbd65b348996cbfc5277cbfe03e7338d6946cbd8cb0d80c9a40121034a6208c3a86d71eaffb13494fb3c6f24dc79a7e8265d7ec34b90e09498f6e64800000000

broadcast: badec6a90f098e8f62890adb479aa4c50f873a98bb774c7f64769bc0bd0e0179

broadcast: 21fd7d1c87ef329969fcb3d86207020d4af3a234e7ea0a8c8a3742815fe5e1b8

2)チャンネル開設応答側

※以降のコマンド例の結果は他のチャンネル開設応答の内容を要求側の例に合わせて改変したものになります(同じチャンネルの要求側と応答側を同時にこなすことはできないため)。細部は正確ではないですが流れは伝わると思いますのでご了承ください。

チャンネル開設要求側の作業が終わった後に、CLIで下記コマンドを実行します。

umbrel@umbrel:~$ bos open-balanced-channel

チャンネル開設要求のKeySendを受信していればその内容が表示されます。問題なければYesと入力しEnterを押します。

umbrel@umbrel:~$ bos open-balanced-channel
? Balanced channel request a minute ago from Emin Yurusimasu👨🏻‍🏫 0227d47539ebbfbb3548abdb31a243063bf2ff2dd77da2af04404da61ab8264560:
- 0.05000000 channel at 1/vbyte chain fee rate? Yes

チャンネル開設資金はノードの資金を使うかと聞かれるのでYesと入力しEnterを押します

? Use internal wallet funds? Yes

チャンネル開設トランザクションの概要が表示され、トランザクションがブロードキャストされます。

refund_transaction: 01000000000101e330af3f5d7bdb99e1ff04412144538a36f8d7e5bf50bfd2a8f47ff15c16b62d000000000000000000019125260000000000160014b5ccb31a5e3a7e63ccd17b5741f35def3168dcf50247304402205e7141bbb030d82688863dcf11ab9a91173c691176160229731c50faa1c9c86002204fa96dee86c950ca5b59e36dddef6f3cf92ab0f725939a6c16657440532d4b310121023ad9dc6d7e5d292aaa5904b03cda20f8809b844d6998636e27f999c04404e3c200000000

funding_tx_id:                     21fd7d1c87ef329969fcb3d86207020d4af3a234e7ea0a8c8a3742815fe5e1b8
waiting_for_full_channel_proposal: true

peer_transaction_id: badec6a90f098e8f62890adb479aa4c50f873a98bb774c7f64769bc0bd0e0179
paying:              0.02500095
out_index:           1

channel_transaction_id:    21fd7d1c87ef329969fcb3d86207020d4af3a234e7ea0a8c8a3742815fe5e1b8
channel_transaction_vout:  0
transactions_to_broadcast:
  - 02000000000101f4167c58bf3446a90622686636f1e7db36c4ac7bdba6ca01ab229e40a942d3010200000017160014765d1c728b0bfd7274815885f4dc41d2ec02aa1cffffffff02ff25260000000000160014a358a6840fab4cf8d72ceb047a34dde45f8ea8140d285300000000001600144318032f2939f5a8215eb7cada10ba3ca420d3f302473044022013a91838c9cfa56d4c02588860df06010c6ee8ec1ce86d51253bdc9c520c45fc0220243a0e24550f2a0181ef9881adee410990ce5232fcecd7d872f5880bcd28b399012102104b1aaa91f8a41fb01cde87808487375363808da811ae0088fe10b9d982a22900000000

broadcast: 5c77611efe7c94e195514d6da298cc93d6f714e2414d1f94cc5cdefd5c3890bc

当該トランザクションはこちらです。0.05BTCの2of2マルチシグアドレス(=チャンネル)のインプットが、2つの0.025BTCのアドレスになっています。

実際に作られたチャンネルはこちら。

ノード運用者同士の密なコミュニケーションが必要なので使える場面は限定されますが、お手軽に大きなチャンネルを開けるのは魅力的ではないでしょうか。

以上になります。ありがとうございました!

Remaining : 160 characters / 0 images
1,000

Sign up / Continue after login

Related stories

Writer

暗号資産エンジョイ勢。UmbrelでBTCノード運用中。

Share

Popular stories

【LN】 ルーティング手数料の概要と戦略

681

UmbrelでAliasを設定する

595

UmbrelにSegwit未対応ウォレットから直接入金する

193