はじめに
今回はLND Developer SiteのInstallationを翻訳&要約。
基本的に書いてある通りにコマンド打っていればできるので、こっちみたほうがいいかも。
一応、Oshikawaメモを散らばらせておいた。
**追記:**こっち↓では翻訳ではなく実際に試した様子を記している。
Ubuntuでlndとbtcdの環境を構築してみる
見出し
- インストール
- 事前準備
- lndのインストール
- 利用可能なオペレーティングモード
- btcd オプション
- Neutrino オプション
- Bitcoind オプション
- btcdを使う
- Neutrinoを使う
- bitcoindかlitecoindを使う
- Macaroons
- Network Reachability
- Simnet vs. Testnet Development
- lnd.confを作る(オプション)
インストール
事前準備
lndを動かすには以下の依存環境が必要
- Go: lndはGo言語で書かれている。インストールするには以下のコマンドを実行。
備考:Goの最低必須バージョンはGo 1.11。我々はGoの最新バージョン(制作時は1.11だった)を使うことを勧めている。
☆ Oshikawaメモ:これを忘れていて、lndのBuildエラーが出まくって時間が食われた記憶があるので要注意。☆
Linuxの場合:
sudo apt-get install golang-1.11-go
Mac OS Xの場合:
brew install go
FreeBSDの場合:
pkg install go
☆ Oshikawaメ:Linuxユーザーは自分の環境に合ったインストール方法をググってインストールした方がいいかも。☆
あるいは、プレコンパイル済みのバイナリをGo言語ダウンロードページでダウンロードもできる。
ソースからインストールしたいなら、もっと詳細なインストール方法はここに書いてるよ。
この時点で、ワークスペースのパスを意味する$GOPATH
環境変数を設定すべき。デフォルトでは、$GOPATH
は~/go
に設定されている。$GOPATH/bin
にあなたのPATHを設定する必要がある。
export GOPATH=~/gocode
export PATH=$PATH:$GOPATH/bin
我々のオススメはターミナルを開くたびいちいち上のスクリプト書かなくていいために.bashrc
かsetupスクリプトに置いくこと。
☆
Oshikawaメモ:
要は、.bashrc
に上のスクリプトをコピペしてsource /.bashrc
すればいいってこと。
☆
- go_modules:依存関係の管理と再現性のあるビルドをするために、このプロジェクトはgo moduleを使う。
go moduleを使えば、$GOPATH
にlndを追加する必要がなくなる。代わりに、lndリポジトリーがどこでも使えるようになる。
lndのインストール
事前準備が終わったら、lndとlncli、そのとの依存環境を以下のコマンドで実行しよう。
go get -d github.com/lightningnetwork/lnd
cd $GOPATH/src/github.com/lightningnetwork/lnd
make && make install
備考:我々のこのインストール手順では,前のGoのバージョンのディレクトリから$GOPATH
を使たが、しかしgo 1.11ではlndはあなたのファイルシステムのどこからでも実行できるようになりました。
Windows WSLユーザーは/usr/bin/make/経由でmake
をするか、make
の周りにクオテーションマークをつけて、以下みたいにする。
/usr/bin/make && /usr/bin/make install
"make" && "make" install
FreeBSDでは、make
の代わりにgame
を使う。
make
コマンドを使いたくないなら、代わりにgo
コマンドをGO111MODULE=on go install -v ./...
のディレクトリでつかえる。
アップデート
lndのバージョンをアップデートしたいなら、
cd $GOPATH/src/github.com/lightningnetwork/lnd
git pull
make clean && make && make install
FreeBSD,
cd $GOPATH/src/github.com/lightningnetwork/lnd
git pull
GO111MODULE=on go install -v ./...
テスト
lndが正しくインストールされているか確かめるには
make check
利用可能なオペレーティングモード
lndを実行できるようにするには、チェーンバックエンドを検証する必要がある。このdocumentを書いている時に、利用可能なバックエンドは:btcd
, neutrino
, bitcoind
がある。neutrino以外のそれらすべてはメインネットでlndインスタンスから実行できる。bitcoindとbtcdでは--txindex
を必要としないがtxindexをつけるとlndはつけたほうが早く実行できる。
☆
Oshikawaメモ:
lndはbtcdを使うことをオススメしている。
でも最近btcdは数十ノードしか稼働してないらしい...
詳しくは、coin danceを参照。
☆
btcd オプション
btcd:
--btcd.dir= ノードのデータ、設定、ログなどを格納する基本ディレクトリ.
(default: /Users/roasbeef/Library/Application Support/Btcd)
--btcd.rpchost= The daemon's rpc listening address. If a port is omitted, then the default port for the selected chain parameters will be used. (default: localhost)
--btcd.rpcuser= Username for RPC connections
--btcd.rpcpass= Password for RPC connections
--btcd.rpccert= File containing the daemon's certificate file (default: /Users/roasbeef/Library/Application Support/Btcd/rpc.cert)
--btcd.rawrpccert= The raw bytes of the daemon's PEM-encoded certificate chain which will be used to authenticate the RPC connection
Neutrino オプション
neutrino:
-a, --neutrino.addpeer= Add a peer to connect with at startup
--neutrino.connect= Connect only to the specified peers at startup
--neutrino.maxpeers= Max number of inbound and outbound peers
--neutrino.banduration= How long to ban misbehaving peers. Valid time units are {s, m, h}. Minimum 1 second
--neutrino.banthreshold= Maximum allowed ban score before disconnecting and banning misbehaving peers
Bitcoind オプション
bitcoind:
--bitcoind.dir= The base directory that contains the node's data, logs, configuration file, etc. (default: /Users/roasbeef/Library/Application Support/Bitcoin)
--bitcoind.rpchost= The daemon's rpc listening address. If a port is omitted, then the default port for the selected chain parameters will be used. (default: localhost)
--bitcoind.rpcuser= Username for RPC connections
--bitcoind.rpcpass= Password for RPC connections
--bitcoind.zmqpubrawblock= The address listening for ZMQ connections to deliver raw block notifications
--bitcoind.zmqpubrawtx= The address listening for ZMQ connections to deliver raw transaction notifications
btcdを使う場合
btcdのインストール手順
FreeBSD,
Install btcd:
make btcd
それか、btcdのリポジトリからインストールできる。
btcdの起動
以下のコマンドを実行すればrpc.certとデフォルトのbtcd.confを作ってくれる。
btcd --testnet --rpcuser=REPLACEME --rpcpass=REPLACEME
もしテストネットでlndを実行したいのなら、btcdでテストネットのフルノードを同期させる必要がある。PCによりけりだが、数時間かかる。Note that adding --txindex is optional, as it will take longer to sync the node, but then lnd will generally operate faster as it can hit the index directly, rather than scanning blocks or BIP 158 filters for relevant items.
btcdの同期をしている間、btcdのnetinfo RPCコマンドで進行状況を確認できる。
btcctl --testnet --rpcuser=REPLACEME --rpcpass=REPLACEME getinfo
{
"version": 120000,
"protocolversion": 70002,
"blocks": 1114996,
"timeoffset": 0,
"connections": 7,
"proxy": "",
"difficulty": 422570.58270815,
"testnet": true,
"relayfee": 0.00001,
"errors": ""
}
さらに、リアルタイムで同期の進行状況を見たいならbtcdのログを見ることができる。
getpeerinfoコマンドであなたのbtcdノードの接続性をみれる。
btcctl --testnet --rpcuser=REPLACEME --rpcpass=REPLACEME getpeerinfo | more
btcdのバックエンドでlndを動かす
テストネットにいるなら、btcdの同期が終わった後、以下のコマンドを実行しよう。それか、e --bitcoin.testnet
を --bitcoin.simnet
に置きかえよう。
もしチュートリアルのためにlndを準備しているのなら、このステップはスキップしていい。
lnd --bitcoin.active --bitcoin.testnet --debuglevel=debug --btcd.rpcuser=kek --btcd.rpcpass=kek --externalip=X.X.X.X
Neutrinoを使う場合
軽量クライエントモードでlndを実行するためには、この新しい軽量クライエントモードを提供てきるフルノードに位置する必要がある。lndは軽量クライエントモードのためにBIP 157とBIP 158を使う。
neutrinoモードで、lndを使う場合、lndを以下の通り実行しよう。
lnd --bitcoin.active --bitcoin.testnet --debuglevel=debug --bitcoin.node=neutrino --neutrino.connect=faucet.lightning.community
bitcoindかlitecoindを使う場合
bitcoindとlitecoindの設定はかなり似ている。
以下がlndで使うbitcoin.confのサンプル。
testnet=1
server=1
daemon=1
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333
Macaroons
lndの認証システムはmacaroonsと呼ばれており、非中央集権的な資格情報の権限の委任や減衰、その他色々できる。詳しいことはAlex AkselrodのGithubで読める。
lndを初めて実行した時、lndの認証に使うためのlndadmin.macaroon
, read_only.macaroo
, macaroons.db
がデフォルトで作成される。
それらはネットワークディレクトリに保存される。(default: lnddir/data/chain/bitcoin/mainnet) そのため、ainnet, testnet, simnet, その他で異なるパスワードを使える。もし他のディレクトリをしていいしたいなら(--datadir
経由で)、--macaroonpath
を使ってlncli
のadmin.macaroonに新しいパスを通さないといけない。
macaroonsをテスト用に使えなくするためには、lndとlncliに--no-macaroons
フラグをつける。
Network Reachability
もし新しいチャンネルを受け入れるために(peersはチャンネル開設のワークフロー初期化のためにinboundを繋ぐ必要があるので)他のノードにシグナルをつけるには、あなたのパブリックなIPアドレスに--externalip
フラグをつけるべきだ。
Simnet vs. Testnet Development
もしチュートリアルなどでローカルの開発環境を使うなら、simnet
モードでbtcd
やlnd
を使いたいはず。simnetはregtestとよく似ていてlndをローカルで試すためのBlockの採掘を即座に行える。--bitcoin.testnet
の代わりに--bitcoin.simnet
をつけると、デーモンを起動する時testnetの代わりにsimnetを使える。
lndの開発環境で使える他のローカルテスト用の関連コマンドラインフラグは--debughtlc
がある。このコマンドと一緒にlndを起動すると、特別なHTLCが自動で設置できるようになる。これでマニュアルどうりの試験的な送金用のinvoiceを発行する必要がなくなる。この特別なHTLCタイプに送金するには、--debugsend
コマンドをsendpayment
コマンドの最後につける必要がある。
現在、lndを起動するために、主要な2つの方法がある。まず、RPCサービスに晒されたローカルのbtcdインスタンスを使うこと。もう一つは、フルに統合されたneutrinoの軽量クライエントを使うことである。
lnd.confを作る(オプション)
lndの起動の間、永続的な設定を持ちたいなら、lnd --bitcoin.testnet --bitcoin.active
とコマンドラインで打てばいい。すると、lnd.conf
が作られる。
MacOS: /Users/[username]/Library/Application Support/Lnd/lnd.conf
Linux: ~/.lnd/lnd.conf
btcdを始めるためのlnd.confのサンプル。
[Application Options]
debuglevel=trace
maxpendingchannels=10
[Bitcoin]
bitcoin.active=1
[Bitcoin]
の部分に注目してください。ここにBitcoinのパラメータを置きます。lndはLitecoinのtestnet4(BTCとLTCを同時にはできない)もサポートしている。Litecoinを使うときはLitecoinのパラメーターを設定してください。詳細なサンプルファイルはここで見れて他の[Btcd]
, [Bitcoind]
, [Neutrino]
, [Ltcd]
, [Litecoind]
も探せます。