Linuxでビットコインライトニングノードを作成する方法

ビットコインライトニングノード 00 特集画像

ビットコインを使用する際の最大の痛点の一つは、長い取引時間です。これは、このデジタル通貨に初めて触れる新しいユーザーにとってはイライラすることがあります。これを改善する最も簡単な方法の一つは、ビットコインライトニングのような二次支払いレイヤーを使用することです。

ビットコインライトニングは、通常のブロックチェーンプロセスの外で資産を迅速に移動させるためにカスタムビットコイン取引を使用するシステムです。この点において、ライトニングは、匿名接続をルーティングする際にTCP/IPをバックボーンとして使用するTorネットワークに似ています。

目次

  • なぜビットコインは遅いのか?
  • ライトニングネットワークはどのように機能するのか?
  • 自分のビットコインライトニングノードを設定する
  • よくある質問

さらに読む: Emacsのレジャーモードで財務を管理する方法

ビットコインを使用すると、中央集権的な権限なしでインターネット上で簡単にお金を交換できます。あなたが行うすべての取引は受取人に直接行われ、ネットワーク全体に分散されます。

なぜビットコインは遅いのか?

ビットコインライトニングノード 03 ビットコインブロックの視覚化

その結果、ビットコイン内で行う支払いは完了し確認されるまでに時間がかかります。例えば、通常のビットコイン取引はクリアされるまでに通常10分から30分かかります。

ライトニングネットワークはどのように機能するのか?

ライトニングは、その核心において、ビットコインの一定量をノードに駐車させる「オンチェーン」支払いを作成することによって機能します。ライトニングは、その駐車されたビットコインを使用して他のライトニングノードとの間にチャネルを作成します。

ビットコインライトニングノード 04 ライトニングネットワークグラフ

これにより、ブロックチェーンでクリアする必要のない追加の「オフチェーン」支払いをライトニングを通じて作成でき、2人のユーザー間の支払い時間を大幅に短縮します。例えば、通常のライトニング取引はクリアされるのに約1秒しかかかりません。

さらに読む: Linuxでの高いCPU使用率を修正する方法

自分のビットコインライトニングノードを設定する

ライトニングを始めるには、自分の個人ノードを持つことが良いです。ビットコインノードを設定するのと同様に、ライトニングノードはそのネットワーク内での取引を完全に制御することを可能にします。

インストールを開始するには、いくつかのリソースが利用可能で準備されている必要があります:

  • 十分なストレージとメモリを持つマシン。私の場合、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

ビットコインライトニングノード 05 新しいユーザーを作成

この新しいユーザーに切り替えるには、su lightningを実行し、c-lightningが機能するためのすべてのプログラムを含むサードパーティのリポジトリを追加します:

sudo add-apt-repository -u ppa:lightningnetwork/ppa

ノードの依存関係をインストールします:

sudo apt install software-properties-common lightningd snapd

ビットコインライトニングノード 06 依存関係をインストール

さらに読む: Linuxノートパソコンのバッテリー寿命を延ばす4つの方法

シンプルなビットコインノードの設定

ここから、シンプルなビットコインノードをインストールして設定する必要があります。上記で説明したように、ライトニングはカスタムビットコイン取引を使用して「資金チャネル」を作成するオーバーレイネットワークです。

これらのチャネルを作成するために、ライトニングノードは次のコマンドを実行してインストールできるシンプルなビットコインノードと一緒に実行する必要があります:

sudo snap install bitcoin-core

ビットコインライトニングノード 07 スナップでビットコインをインストール

ルート「スナップ」ディレクトリと「bin」フォルダの間にシンボリックリンクを作成します:

sudo ln -s /snap/bitcoin-core/current/bin/bitcoin{d,-cli} /usr/local/bin/

ビットコインノードの初期ブロックダウンロードを開始します:

bitcoind -daemon

このコマンドはノードをバックグラウンドに送信し、ビットコインブロックチェーン全体をダウンロードして検証します。進行状況を確認するには、次のコマンドを実行します:

tail -f /home/$USER/.bitcoin/debug.log

ビットコインライトニングノード 08 ダウンロードログ

このプロセスは数時間から数日かかることに注意することが重要です。例えば、私のDell Optiplexデスクトップはビットコインネットワークと完全に同期するのに5日かかりました。

シンプルなビットコインノードの設定

ノードがネットワークと同期したら、まずビットコインノードを停止してライトニングと互換性があることを確認します:

bitcoind stop

「/etc/bitcoin.conf」の下にある設定ファイルを編集します:

nano /home/$USER/.bitcoin/bitcoin.conf

ビットコインライトニングノード 09 ノード設定ファイル

2つのオプションを無効にします:walletbroadcastprune。最初のオプションはビットコインノードにライトニングとデータをのみ使用するように指示し、2番目のオプションはハードドライブにブロックチェーン全体を保存することを保証します。

walletbroadcast=0  
prune=0

次のコマンドを実行してビットコインノードを再起動します:

bitcoind -daemon

ビットコインライトニングノードの起動

次のコマンドを実行してライトニングノードを起動します:

lightningd --network=bitcoin --log-level=debug --daemon

ビットコインライトニングノード 11 ライトニングノードを初期化

このコマンドはノードをバックグラウンドに送信し、「/home/$USER/.lightning」の下に設定ファイルを作成します。次のコマンドでライトニングノードが正しく動作しているかテストします:

lightning-cli --lightning-dir=$HOME/.lightning getinfo

ビットコインライトニングノード 12 ノード情報を確認

さらに読む: Linuxサーバーを保護するための最高のオープンソースツール

ビットコインライトニングノードの最終化

c-lightningが実行されている状態で、異なるライトニングピア間で「資金チャネル」を作成することでノードを最終化できます。上記で説明したように、「資金チャネル」はブロックチェーンにコミットすることなくビットコインを移動させることを可能にするカスタムビットコイン取引です。

これを作成するには、まず次のコマンドを使用してノードの受信アドレスを生成し、ビットコインをライトニングノードに「入金」します:

lightning-cli newaddr

ビットコインライトニングノード 13 ビットコインアドレスを生成

外部ウォレットに移動し、その受信アドレスにビットコインを送信します。私の場合、ビットコインコアウォレットを使用して0.00050000 BTCを送信します。

ビットコインライトニングノード 14 外部ウォレットから資金を送信 1

取引がブロックチェーンに記録されると、ライトニングノードは自動的に資金残高を更新します。次のコマンドを実行してこれを表示します:

lightning-cli listfunds

リモートビットコインライトニングノードとのピアリング

ノードをネットワーク内のピアに接続し、ライトニングを通じてビットコインを送受信できるようにします。

まず、その公開鍵とIPアドレスを見つけます。PGP暗号化を使用するのと同様に、これにより公開鍵暗号を通じてノードの信頼性を接続し確認できます。

これを行うための最も一般的なツールの一つは1MLです:ネットワーク内のすべてのアクティブなライトニングノードをリストするウェブサイトです。

ビットコインライトニングノード 15 1mlノードリスト

アクティブなノードが見つかったら、lightning-connectコマンドを使用してピアリクエストを確立します。例えば、このコマンドは私のノードをACINQにピアリングします:

lightning-cli connect 1 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f 3.33.236.230
  • 最初の値は、現在のピアに割り当てたいスロット番号を示します。このノードの場合、スロット1を使用しています。
  • 2番目の値はリモートノードの公開鍵です。この場合、ACINQの公開鍵を使用しています。
  • 3番目の値はリモートノードの公開IPアドレスです。

リクエストを最終化するには、ノードのビットコイン残高の一部をリモートノードに送信して、あなたとピアノードの間に「資金チャネル」を作成します。

例えば、このコマンドは私のリストの最初のピアに0.00030000 BTCの「資金チャネル」を作成します:

lightning-cli fundchannel 130000

ビットコインライトニングノード 16 資金チャネル

ライトニング支払いの送受信

アクティブな「資金チャネル」が実行されている状態で、ノードを使用して支払いを送受信します。デフォルトでは、ライトニングはビットコインと区別するために「lnbc」で始まるBOLT11形式を使用します。

ライトニングを通じてビットコインを送信するには、受取人のBOLT11アドレスを知っている必要があります。例えば、次のコマンドはリモートアドレスに0.00005000 BTCを送信します:

lightning-cli pay lnbc20m1[...]qdhhwkj 50000

ビットコインライトニングノード 18 ビットコインライトニングを送信

また、invoiceコマンドを使用してビットコインを受信し、受け取りたいビットコインの正確な量を指定することもできます。例えば、このコマンドは0.00010000 BTCの請求書を作成します:

lightning-cli invoice 100000

ビットコインライトニングノード 19 ビットコインライトニングを取得

さらに読む: Linuxで大きなファイルを見つける方法

よくある質問

Dojoをビットコインノードとして使用しています。c-lightningと一緒に使用することは可能ですか?

いいえ。デフォルトでは、DojoはDockerコンテナを使用してビットコインコアのサンドボックスインスタンスを実行するプログラムです。Dojoビットコインノードは、そのサンドボックスコンテナの外のプログラムと通信することはできません。

私のウォレットは「bc1」アドレスをサポートしていません。ライトニングノードに入金することは可能ですか?

はい!c-lightningはネイティブに「bc1」アドレス形式で生成されますが、古いP2SH形式を使用してライトニングノードにビットコインを転送することは可能です。これを行うには、次のコマンドを実行します:lightning-cli newaddr p2sh-segwit

私のライトニング支払いが時々失敗します。私のノードは壊れていますか?

いいえ!この問題は、あなたと受取人の間のノード接続が不足していることが最も可能性が高いです。ライトニングネットワークは、設計上、各ノードが互いに一貫して直接通信することに依存しています。

この問題を修正する方法の一つは、ローカルノードが接続するピアと「資金チャネル」の数を増やすことです。例えば、少なくとも2〜3のアクティブなピアを持つことで、ほぼすべてのライトニングユーザーに接続できるようになります。

画像クレジット: UnsplashおよびWikimedia Commons。すべての変更とスクリーンショットはRamces Redによるものです。