Neutrinoとライトニングネットワーク
Neutrinoってなに?
- NeutrinoはLNの軽量版クライアントではない!
- NeutrinoはBIP157/158のことでBIP37が抱えるSPVウォレットのプライバシー問題を解決するための新しいプロトコル提案
- BIP157/158はGCSフィルターというこれまでのBloomフィルター(BIP37)よりもプライバシー向上を目指したプロトコル
Neutrinoを使うと何がいいの?
ビットコインフルノードを持つ必要がありません。主要なライトニングネットワークノードは現状ビットコインノード(bitcoindやbtcd)を必要とします。このためライトニングネットワークを使おうとしてもまずはビットコインノードの構築やデータ同期を待つ必要があり余計なコストがかかってしまいます。また、ビットコインフルノードが必要ということは、当然モバイル版LNウォレットなんて作れるわけがないですよね。以下に、Neutrinoの使い方を説明します。
Neutrinoの使い方
NeutrinoはLNDに含まれているため、まずはここからダウンロードおよびインストールが必要です。以降ではLNDのインストールが完了したことを前提に解説します。
1.以下のコマンドを実行しLNDのデーモンを起動します。
ここで重要なのは、Neutrinoはfaucet.lightning.communityという公開ノードに接続してビットコインヘッダ情報を取得しており自分のパソコンにビットコインノードが必要ないということです。同期にしばらく時間がかかるのでコーヒーのご用意を。
$ lnd --bitcoin.active --bitcoin.testnet --debuglevel=debug --bitcoin.node=neutrino --neutrino.connect=faucet.lightning.community
2. コンソールをもう一つ立ち上げ以下のコマンドを実行していきます(途中省略有り)。
#ウォレットのアンロック(初回起動の場合はlncli cretaeが必要)
$ lncli --network=testnet unlock#ウォレットの同期情報を取得する。"synced_to_chain": trueであれば同期完了
$ lncli --network=testnet getinfo
{
"identity_pubkey": "03d266a4fa94c551fde023df51ecb63cf3c3203ade55cf39d5613bf039a34e778f",
"alias": "testnet.raimu",
"num_pending_channels": 0,
"num_active_channels": 0,
"num_peers": 3,
"block_height": 1446515,
"block_hash": "0000000000000066d74db224a0ee1b2f68093b1f6bb387ef0a6638178317c6aa",
"synced_to_chain": true,
"testnet": true,
"chains": [
"bitcoin"
],
"uris": [
],
"best_header_timestamp": "1543938049",
"version": "0.5.0-beta commit=",
"num_inactive_channels": 0
}
3. ライトニング(Neutrino)の同期が完了したら、以下の手順でチャネル開設をします。
#まずはビットコインを入手するためのアドレスを生成し、そこへビットコインを送金
$ lncli --network=testnet newaddress np2wkh
{
"address": "2N5rAVcu16AcXMzC1siLHrxDwiYWWFRvK3q"
}#ビットコインが送金されたかを確認
$ lncli --network=testnet walletbalance
{
"total_balance": "741798",
"confirmed_balance": "741798",
"unconfirmed_balance": "0"
}#チャネル開設
$ lncli --network=testnet openchannel 037ad5d97c0ba4ac122b1c2c28deb1ea858f4a48f8d02148ba6946950871988bec 100000 --conf_target 1 --min_confs 1
#チャネルが解説中の場合は以下のコマンドで確認可能
$ lncli --network=testnet pendingchannels
{
"total_limbo_balance": "0",
"pending_open_channels": [
{
"channel": {
"remote_node_pub": "037ad5d97c0ba4ac122b1c2c28deb1ea858f4a48f8d02148ba6946950871988bec",
"channel_point": "7e879ace6c536fcbd436f759b9b731b5277d25aa60fea8522b07d52153bb29a3:0",
"capacity": "100000",
"local_balance": "90950",
"remote_balance": "0"
},
"confirmation_height": 0,
"commit_fee": "9050",
"commit_weight": "600",
"fee_per_kw": "12500"
}
],
"pending_closing_channels": [
],
"pending_force_closing_channels": [
],
"waiting_close_channels": [
]
}#チャネル開設が完了!
$ lncli --network=testnet listchannels
{
"channels": [
{
"active": true,
"remote_pubkey": "037ad5d97c0ba4ac122b1c2c28deb1ea858f4a48f8d02148ba6946950871988bec",
"channel_point": "7e879ace6c536fcbd436f759b9b731b5277d25aa60fea8522b07d52153bb29a3:0",
"chan_id": "0",
"capacity": "100000",
"local_balance": "90950",
"remote_balance": "0",
"commit_fee": "9050",
"commit_weight": "600",
"fee_per_kw": "12500",
"unsettled_balance": "0",
"total_satoshis_sent": "0",
"total_satoshis_received": "0",
"num_updates": "0",
"pending_htlcs": [
],
"csv_delay": 144,
"private": false
}
]
}
4. チャネル開設が完了したら、支払いをしてみましょう
#支払いをする
$ lncli --network=testnet payinvoice lntb10n1pwq0nvjpp54ageafhnvpudrzmxggxhf63k7x6zwg2p06sf750v4xspndm6u8fqdqqcqzysxqyz5vqwe56hr9c86pqf7h6jewt6c7t4tcgu7gf6nyq9aszec4qv74hn5uphpppna720g728729ysvur9saqk6tnwsxnehcyqpc3kkc2t26rfqq2cpl8t -f
{
"payment_error": "",
"payment_preimage": "7bd5b884f5211e5e5f6b02258ca27da1b31949fdd6e91627ab8144f5217c62ac",
"payment_route": {
"total_time_lock": 1446778,
"total_amt": 1,
"hops": [
{
"chan_id": 1590472156883386369,
"chan_capacity": 3999000,
"amt_to_forward": 1,
"expiry": 1446778,
"amt_to_forward_msat": 1000,
"pub_key": "03c856d2dbec7454c48f311031f06bb99e3ca1ab15a9b9b35de14e139aa663b463"
}
],
"total_amt_msat": 1000
}
}
以上がNeutrinoを使い、ビットコインノードを用意しないでライトニングネットワークを体験する方法です。
モバイル版LNウォレットはNeutrinoが必須?
いいえ、必須ではありません。
現状はBIP37に準拠したSPVクライアント(主にBitcoinJライブラリ)を使って以下のLNモバイルウォレットが実装されています。
・Eclair
・Bitcoin Lightning Wallet
・Denryu Wallet(forked from BLW)
また以下のアプリはNeutrinoを使用したモバイルウォレットとデスクトップウォレットです。
・rawtx
・Lightning desktop app
Neutrinoを使ってモバイル版LNウォレットは作れるの?
作れます。ただし現状はNeutrinoをサポートしているビットコインノード(btcd)が少なく、実装してもモバイルから接続しにいくノードが限られているため非中央集権・分散化が醍醐味のビットコインとしての特徴がなくあまり魅力的ではありません。以後、BIP157/158をサポートするビットコインノードがネットワークの全体を占めるとNeutrinoの威力が発揮されるでしょう。
参考資料
お知らせ
■HashHubでは入居者募集中です!
HashHubは、ブロックチェーン業界で働いている人のためのコワーキングスペースを運営しています。ご利用をご検討の方は、下記のWEBサイトからお問い合わせください。また、最新情報はTwitterで発信中です。
HashHub:https://hashhub.tokyo/
Twitter:https://twitter.com/HashHub_Tokyo
■ブロックチェーンエンジニア集中講座開講中!
HashHubではブロックチェーンエンジニアを育成するための短期集中講座を開講しています。お申込み、詳細は下記のページをご覧ください。
ブロックチェーンエンジニア集中講座:https://www.blockchain-edu.jp/
■HashHubでは下記のポジションを積極採用中です!
・コミュニティマネージャー
・ブロックチェーン技術者・開発者
・ビジネスディベロップメント
詳細は下記Wantedlyのページをご覧ください。
Wantedly:https://www.wantedly.com/companies/hashhub/projects