なぜビットコインは遅いのか?
その結果、ビットコイン内で行うあらゆる支払いは、完了と確認に時間がかかります。例えば、通常のビットコイン取引は、決済に通常10~30分かかります。
ライトニングネットワークはどのように機能するのか?
ライトニングの中核は、あなたのノードにビットコインをパークする「オンチェーン」決済を作成することです。ライトニングは、パークされたビットコインを使用して、他のライトニングノード間のチャネルを作成します。
このように、ライトニングは、他のライトニングノードとの間でチャネルを作成することができるのです![] (/uploads/bitcoin-lightning-node-04-lightning-network-graph.jpg) これにより、ブロックチェーンでの決済が不要なLightningによる「オフチェーン」決済を追加で作成し、2ユーザー間の決済時間を大幅に短縮することができます。例えば、通常のLightningトランザクションは、クリアするのに約1秒しかかかりません。ビットコインライトニングノードのセットアップ
Lightningを始めるには、自分専用のノードを用意するのがよいでしょう。ビットコインノードのセットアップと同様に、ライトニングノードでは、そのネットワークでのトランザクションを完全に制御することができます。
インストールを開始するには、いくつかのリソースを利用し、準備する必要があります。- 適切な量のストレージとメモリを搭載したマシン。私の場合、1TBのストレージと2GBのRAMを搭載した古いDell Optiplexデスクトップを使用しています。
- ライトニングノードは、その状態を維持するために他のノードと定期的に通信する必要があるため、一定のインターネット接続が必要です。
- ライトニングノードへの「資金提供」に使用できる少量のビットコイン。
このチュートリアルでは、Ubuntu 22.04.1 LTS マシンに c-lightning をインストールすることに重点を置いています。
依存関係の取得
c-lightningをインストールする最初のステップは、新しいユーザーアカウントを作成し、ノードのファイルや設定がメインユーザーから分離されるようにすることです。
sudo useradd -s /bin/bash -d /home/lightning -m -G sudo lightning
sudo passwd lightning
su lightning` を実行してこの新しいユーザーに切り替え、c-lightning が動作するためのすべてのプログラムを含むサードパーティーリポジトリを追加します。
sudo add-apt-repository -u ppa:lightningnetwork/ppa
ノードの依存関係をインストールします。
sudo apt install software-properties-common lightningd snapd
シンプルなビットコインノードのセットアップ
ここからは、シンプルなBitcoinノードをインストールし、設定する必要があります。上述したように、ライトニングは、カスタムビットコイントランザクションを使用して “ファンドチャンネル” を作成することで動作するオーバーレイネットワークです。
これらのチャネルを作成するために、ライトニングノードは、以下のコマンドを実行してインストールすることができるシンプルなビットコインノードと一緒に実行する必要があります。sudo snap install bitcoin-core
sudo snap install bitcoin-core ``
ルートの「snap」ディレクトリと「bin」フォルダの間にシンボリックリンクを作成します。
sudo ln -s /snap/bitcoin-core/current/bin/bitcoin{d,-cli} ・・・。/usr/local/bin/
BitcoinノードのInitial Block Downloadを開始します。
bitcoind -daemon
このコマンドは、ビットコインブロックチェーン全体をダウンロードし検証するために、ノードをバックグラウンドに送ります。次のコマンドを実行することで、その進捗を確認することができます。
tail -f /home/$USER/.bitcoin/debug.log
この処理には数時間から数日かかることがあることに注意が必要です。例えば、私のDell Optiplexデスクトップは、ビットコインネットワークと完全に同期するのに5日かかりました。
シンプルなビットコインノードを設定する
ノードがネットワークと同期したら、まずビットコインノードを停止して、ライトニングと互換性があることを確認します。
bitcoind stop
/etc/bitcoin.conf “の下にある設定ファイルを編集します。
nano /home/$USER/.bitcoin/bitcoin.conf を編集します。
2つのオプションを無効にします。walletbroadcastと
prune` の2つのオプションを無効にします。最初のオプションは、ビットコインノードがライトニングのデータのみを使用するように指示し、2番目のオプションは、ブロックチェーン全体をハードドライブに保存することを保証します。
ウォレットブロードキャスト=0
プルーン=0
以下のコマンドを実行して、Bitcoinノードを再起動します。
bitcoind -daemon
ビットコインライトニングノードの立ち上げ
以下のコマンドを実行して、ライトニングノードを起動します。
lightningd --network=bitcoin --log-level=debug --daemon
このコマンドは、ノードをバックグラウンドに送り、その設定ファイルを “/home/$USER/.lightning” の下に作成します。このコマンドで Lightning ノードが正しく動作しているかどうかテストします。
lightning-cli --lightning-dir=$HOME/.lightning getinfo
ビットコインライトニングノードの最終確認
c-lightningが動作している状態で、異なるLightningピア間で「ファンドチャンネル」を作成することで、ノードを最終的に完成させることができます。上述したように、「ファンドチャンネル」はカスタムビットコイントランザクションで、ブロックチェーンにコミットせずにビットコインを移動させることが可能です。
これを作成するには、まず以下のコマンドでノードの受信アドレスを生成して、LightningノードにBitcoinを「入金」します。lightning-cli newaddr
外部ウォレットに移動し、その受信アドレスにビットコインを送信します。私の場合、Bitcoin Coreのウォレットを使って0.00050000BTCを送ります。
トランザクションがブロックチェーンに登録されると、ライトニングノードは自動的に資金残高を更新します。次のコマンドを実行することでこれを表示します。lightning-cli listfunds
リモートビットコインライトニングノードとのピアリング
Lightning を通して Bitcoin を送受信できるようにするために、自分のノードをネットワーク内のピアに接続することを開始します。
開始するには、その公開キーと IP アドレスの両方を見つけます。PGP 暗号化を使用するのと同様に、公開鍵暗号化によってノードの信頼性を接続および検証することができます。 これを行うための最も一般的なツールの 1ML: ネットワーク内のアクティブな Lightning ノードをすべてリストアップするウェブサイトです。1MLは、ネットワーク上のすべてのアクティブなライトニングノードをリストアップするウェブサイトです。
アクティブなノードを見つけたら、lightning-connect
コマンドを使用してピアリクエストを確立します。例えば、このコマンドは私のノードをACINQにピアリングします。
lightning-cli connect 1 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f 3.33.236.230
- 最初の値は、現在のピアに割り当てたいスロット番号を示します。このノードでは、スロット1を使用しています。
- 2番目の値は、リモートノードの公開鍵です。この場合、ACINQの公開鍵を使用しています。
- 3番目の値は、リモートノードのパブリックIPアドレスです。
リクエストを確定するために、自分のノードのビットコイン残高の一部をリモートノードに送り、自分とピアリングノードとの間に「資金チャンネル」を作成します。
たとえば、このコマンドは、私のリストの最初のピアに 0.00030000 BTC の「資金チャンネル」を作成します。lightning-cli fundchannel 1 30000
![](/uploads/bitcoin-lightning-node-16-fund-channel.png)
### ライトニングペイメントの送受信
アクティブな「fund channel」が稼働している状態で、ノードを使用して支払いの送受信を行います。デフォルトでは、LightningはBitcoinと区別するために「lnbc」で始まるBOLT11形式を使用します。
LightningでBitcoinを送るには、受取人のBOLT11アドレスを知っている必要があります。例えば、以下のコマンドで0.00005000 BTCをリモートアドレスに送信します。
lightning-cli pay lnbc20m1[…]qdhhwkj 50000
また、invoice
コマンドを使用し、受け取りたいビットコインの正確な量を指定することで、ライトニングを通してビットコインを受け取ることができます。例えば、このコマンドは 0.00010000 BTC のインボイスを作成します。
lightning-cli invoice 100000
![](/uploads/bitcoin-lightning-node-19-obtain-bitcoin-lightning.png)
## よくある質問
### Dojoをビットコインノードとして使用しています。c-lightningで使用することは可能ですか?
いいえ。デフォルトでは、DojoはDockerコンテナを使用して、Bitcoin Coreのサンドボックス化されたインスタンスを実行するためのプログラムです。Dojo Bitcoinノードは、そのサンドボックスコンテナの外側のプログラムと通信することができません。
### 私のウォレットは "bc1 "アドレスをサポートしていません。私のライトニングノードに入金することは可能ですか?
はい、可能です。c-lightningはネイティブに「bc1」アドレス形式で生成されますが、古いP2SH形式を使用してライトニングノードにビットコインを転送することは可能です。これを行うには、以下のコマンドを実行してください。lightning-cli newaddr p2sh-segwit`.
### ライトニングの支払いが時々失敗します。私のノードが壊れているのでしょうか?
いいえ!この問題は、あなたと受信者の間のノード接続が不足していることが原因である可能性が高いです。ライトニングネットワークは、設計上、各ノードが一貫して互いに直接会話することに依存しています。
この問題を解決する1つの方法は、ローカルノードが接続するピアと「資金チャンネル」の量を増やすことです。例えば、少なくとも2~3個のアクティブなピアを持っていれば、ほとんどすべてのLightningユーザーに接続できるようになります。
画像引用元:UnsplashとWikimedia Commons。すべての改変とスクリーンショットはRamces Redによるものです。