LightningNetworkノードを立ち上げる方法(lnd編)


はじめに

実際にLightningNetworkのノードを立ち上げる手順を説明します。
接続先はtestnet(テスト環境)、OSはUbuntuを想定しています。

全体の流れ

  • Bitcoinフルノードの立ち上げ
  • lndのインストール
  • configの設定
  • その他の設定
  • ノードの起動

Bitcoinフルノードの立ち上げ

最初にBitcoinのフルノードを立ち上げる必要があるのでまだの場合はお手軽にVPSでBitcoinフルノードを立ち上げる方法などを参考に立ち上げてください。

lndのインストール

2018/7/21時点で最新版のver0.4.2-betaをインストールします。

$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.4.2-beta/lnd-linux-386-v0.4.2-beta.tar.gz
$ tar xvzf lnd-linux-386-v0.4.2-beta.tar.gz
$ cp ~/lnd-linux-386-v0.4.2-beta/lnd /usr/local/bin/
$ cp ~/lnd-linux-386-v0.4.2-beta/lncli /usr/local/bin/

configの設定

lnd.confbitcoin.confの2つの設定をします。

lnd.confの設定

~/.lnd/lnd.confファイルを作成して以下を記述します。

.lnd フォルダを作成します。

$ mkdir ~/.lnd
$ cd .lnd

lnd.confファイルを作成して以下を記述します。
以下にlnd.confファイルのサンプルがあるので参考にしてみてください。
https://github.com/lightningnetwork/lnd/blob/master/sample-lnd.conf

#[Application Options]
debuglevel=info
alias=ノードのエイリアス名
externalip=IPアドレス:9735

#[bitcoin]
bitcoin.active=1
bitcoin.testnet=1
bitcoin.node=bitcoind

#[Bitcoind]
bitcoind.rpchost=localhost
bitcoind.rpcuser=ユーザー名
bitcoind.rpcpass=パスワード
bitcoind.zmqpath=tcp://127.0.0.1:28332 

bitcoin.confの設定

bitcoin.confに以下を追記してください。
またrpcuserrpcpassowrdlnd.confの記述と合わせてください。

rpcuser=ユーザー名
rpcpassword=パスワード
server=1
daemon=1
txindex=1
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28332

bitcoind再起動

インデックスの再構築を実施します。
起動まで時間かかります。進捗は~/.bitcoin/testnet3/debug.logで確認してください。

$ bitcoind -daemon -reindex

その他の設定

PORTの設定

mainnetもtestnetも9735を使用するので使えるように設定します。
18333はbitcoindがtestnetの時に使用し、mainnetの場合は8333を使用します。

$ ufw enable
$ ufw allow 9735
$ ufw reload
$ ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
18333                      ALLOW       Anywhere
9735                       ALLOW       Anywhere
18333 (v6)                 ALLOW       Anywhere (v6)
9735 (v6)                  ALLOW       Anywhere (v6)

PATHの設定

~/.profile に記述する。

PATH="$PATH:/root/.lnd/admin.macaroon"

PATHを有効にする。

$ source ~/.profile

lndの起動

$ lnd >> ~/.lnd/debug.log &

必要に応じてdebugログの確認をしてください。

$ tail -f ~/.lnd/debug.log

ウォレットを作成します。

$ lncli create
Input wallet password: 
Confirm wallet password:

Do you have an existing cipher seed mnemonic you want to use? (Enter y/n): n

Your cipher seed can optionally be encrypted.
Input your passphrase you wish to encrypt it (or press enter to proceed without a cipher seed passphrase): 

Generating fresh cipher seed...

!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!

---------------BEGIN LND CIPHER SEED---------------
 1. XXX   2. XXX    3. XXX    4. XXX
 5. XXX   6. XXX    7. XXX    8. XXX
 9. XXX   10. XXX   11. XXX   12. XXX
13. XXX   14. XXX   15. XXX   16. XXX 
17. XXX   18. XXX   19. XXX   20. XXX  
21. XXX   22. XXX   23. XXX   24. XXX  
---------------END LND CIPHER SEED-----------------

!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!

lnd successfully initialized!

作成したウォレットをアンロックします。

$ lncli unlock
Input wallet password: 

lnd successfully unlocked!

lncli getinfoで状況が確認できます。
同期に少し時間がかかるので~/.lnd/debug.logで状況を確認してください。
synced_to_chaintrueになり、num_peersが0でなくなれば同期が完了です。

$ lncli getinfo 
{
    "identity_pubkey": "0377c0ed130d363dd157cfbe78ff1d4ff8a629ddd38834b7cfb698db811af76c6d",
    "alias": "ノードのエイリアス名",
    "num_pending_channels": 0,
    "num_active_channels": 0,
    "num_peers": 3,
    "block_height": 1354786,
    "block_hash": "0000000000000028c13dc0c1e7f6f5245a5dae374a84e3d5b30ed235e45bbdc7",
    "synced_to_chain": true,
    "testnet": true,
    "chains": [
        "bitcoin"
    ],
    "uris": [
        "0377c0ed130d363dd157cfbe78ff1d4ff8a629ddd38834b7cfb698db811af76c6d@133.18.23.0:9735"
    ],
    "best_header_timestamp": "1532157492",
    "version": "0.4.2-beta commit=7cf5ebe2650b6798182e10be198c7ffc1f1d6e19"
}