暗号通貨とブロックチェーン研究所

暗号通貨とブロックチェーンに関する技術やトレンド情報を解説していきます。

ライトニングノード(Lightning Network/Lnd)を立ち上げてみた!

ライトニングネットワークとはビットコインのスケーラビリティ問題を解決するセカンドレイヤーの技術のことで、直接繋がっていない二者間のマイクロペイメントを可能にし、オフチェーンでトランザクションをまとめてからブロックチェーンに書きこむことで取引の高速化と効率化を実現しました。

簡単にいうとライトニングネットワークとはビットコイン実用化への未来を担う重要な技術ということです。

ライトニングネットワークの詳細はこちらの記事をご覧ください。

tomoyaishida.hatenablog.com

そんなライトニングネットワークに触れるためにライトニングノードを立ち上げてみました。

今回はLndというLightning-Labs製のライトニングネットワークをテストネットで触れてみたいと思います。

推奨環境はUbuntuのようですが、僕は通常のMac OSで行いました。

また今回はNeutrinoと呼ばれるブロックチェーンのブロックのヘッダーのみを同期させるライト・クライアントを使用しています。これによりユーザーはフルノードと同期せずにライトニングネットワークを使用できます。また、Neutrinoには悪意のあるノードに繋がらないようにするプライバシー保護の役割があります。

github.com

まずはじめにlndはGo言語で書かれているので、Go言語をインストールする必要があります。バージョンは1.9以上が必要です。

$ sudo apt-get install golang-1.10-go


Macの方はこちら。

$ brew install go


インストールが完了したらバージョンの確認をして見ましょう。

$ go version


/usr/local/binにシンボリックリンクを貼ります。(Macは不要)

$ sudo apt-get install golang-1.10-go


Go言語のパスを設定します。

$ export GOPATH=~/gocode


続いてlndの実行ファイルの保存先にもパスを通します。

$ export PATH=$PATH:$GOPATH/bin


ログイン毎に上記コードを実行しなくても済むように~/.bashrcに設定をします。

$ vi ~/.bashrc
#Vimを開き書きコードを記述したら:qwで保存して終了です。
$ export GOPATH=~/gocode
$ export PATH=$PATH:$GOPATH/bin


ここでついにライトニングノードをインストールします。

$ go get -d github.com/lightningnetwork/lnd


インストールには約5分以上かかります。待ちきれない人は下記のコマンドの方が早くインストールできます。

$ git clone https://github.com/lightningnetwork/lnd.git
$ GOPATH/src/github.com/lightningnetwork/lnd


コンパイルし、lndの実行ファイルを作成し配置します。

$ cd $GOPATH/src/github.com/lightningnetwork/lnd
$ make && make install


そして、ライトニングノードの立ち上げです!

$ lnd --noencryptwallet --bitcoin.active --bitcoin.testnet --bitcoin.node=neutrino --neutrino.connect=faucet.lightning.community


lndログの確認

$ less ~/.lnd/logs/bitcoin/testnet/lnd.log


Macの場合

$ less ~/Library/Application Support/Lnd/data


lndノード情報取得

$ lncli getinfo


補足になりますが、ノード立ち上げ時に設定したオプションをlnd.confにあらかじめ設定しておけば毎回指定する手間が省けます。

$ mkdir ~/.lnd && cd ~/.lnd
$ touch lnd.conf


次にlnd.confを開き設定を書き込みます。

$ vi lnd.conf

下記を記述します。

#ノードIPアドレスとライトニングネットワークのポート番号(xxx.xxx.xxx.xxxとなっている部分にIPアドレスを入れる)
#ノードを立ち上げるだけなら不要
externalip=xxx.xxx.xxx.xxx:9735

#テストネットのための設定
noencryptwallet=1

#ノードの名称
#立ち上げるだけなら不要
alias=xxxxxx

#ビットコインのP2Pネットワークに接続
bitcoin.active=1

#ネットワークの接続先を指定(この場合はテストネット)
bitcoin.testnet=1

#ビットコインフルノードの接続先を指定(今回はneutrino)
bitcoin.node=neutrino

#他ノードに対してチャネルを貼る際の承認数を指定(テストネットなので1を指定するが、メインネットの場合は3以上)
bitcoin.defaultchanconfs=1

#neutrinoの接続先を指定
neutrino.connect=faucet.lightning.community

#autopilotをon(自動的に他ノードに接続しチャネルを貼る)
autopilot.active=1


以上でセットアップは完了です!

暗号通貨界隈の技術の発展スピードはとても早いので、もしうまくいかない方は公式のGithubをチェックしてみてください。英語ですが、とても詳しく記述されているのでどこかしらに答えが書いてあるはずです。(インストール方法は/docs/INSTALL.md)

github.com

続編も近日公開するので、しばしお待ちを!

よろしければTwitterのフォローもよろしくお願いします!

twitter.com