動作環境
ハードウェア
- host OS: windows7
guest OS: Ubuntu 16.4.1
Ubuntuの容量: 100GB
UbuntuのRAM: 1924MB
ソフトウェア
- Node.js v4.7.0
- Bitcore v4.1.0
- Bitcore-node v3.1.3
install手順
事前準備
node.jsをまずは導入します。
$ apt-get install build-essential libtool autotools-dev automake autoconf pkg-config libssl-dev git
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
$ nvm install v4
bitcoreをinstallするにあたって、
bitcoreでは、zeroMQを使うことから、これも別途installする必要があります。
また、versionの問題があるので、
libzmq-devではなく、libzmq3-devをinstallすることに注意します。
libzmq-devがすでにinstallされてしまっている場合は、一旦uninstallしてから、libzmq3-devをinstallします。
$ apt-get install libzmq3-dev
bitcoreのinstall
次に、bitcoreをnpmを使ってdownload。
$ npm install -g bitcore
詳細を把握しきれていないですが、おそらく、bitcore-nodeをinstallしても、ほとんど変わらないと思われます。
(両者をinstallして、起動のプロセスを見る限り、ほぼ違いが見受けられなかったので)
$ npm install -g bitcore-node
とやっていっても、特に問題はなさそうです。
bitcoreを起動させる
方法①
bitcore自体はinstallされたので、実はこの段階で使えるといえば使えるのです。
$ bitcored
とすると、これは、
~/.nvm/versions/v4.7.0/bin/bitcored
を実行することとなり、
~/.nvm/versions/v4.7.0/lib/node_modules/bitcore
にinstall済のライブラリたちを使って、
~/.bitcore
というフォルダが生成され、その中にdataが入ることで、すぐに使える状態になります。
(insight-api, insight-uiは
$ npm install -g bitcore
でインストールしたためか、
~/.nvm/versions/v4.7.0/lib/node_modules/bitcore
の中にすでに存在しました)
方法②
グローバルのディレクトリを直接使って、汚してしまうのが嫌な場合、
新たにbitcore用のディレクトリを作って、その中で完結させる方法もあります。
$ bitcore create --testnet mynode
こうすると、コマンドを入力したディレクトリの直下にmynodeというディレクトリが作成されます。
--testnetというオプションをつけておくと、testnet用の設定ファイルになってくれるのですが、これは後から自分で簡単に変更できるので、あんまり重要ではないです。
このコマンドの入力後のディレクトリ構成は、
mynode
|-- data
|-- node_modules
|-- bitcore-node.json
|-- package.json
となっていて、bitcore-node.jsonの設定を見ると、
{
"network": "testnet",
"port": 3001,
"services": [
"bitcoind",
"web"
],
"servicesConfig": {
"bitcoind": {
"spawn": {
"datadir": "./data",
"exec": "/home/(user name)/.nvm/versions/node/v4.7.0/lib/node_modules/bitcore/node_modules/bitcore-node/bin/bitcoind"
}
}
}
}
となっていて、insight-api, insight-uiがまだinstallされていないことがわかります。
また、testnetとして設定されていて、このtestnetをlivenetと書き換えたりすれば(datadirを一度削除する必要はあるでしょうが)、
後からでも、変更可能です。
また、datadirというのがbitcoinの情報がすべて格納されるディレクトリのpathになっています。
そして、insight-api, insight-uiは後から、bitcoreのアドオンとしてinstallする形式となっており、
$ cd mynode
$ bitcore install insight-api insight-ui
というコマンドを実行することで、installされてくれて、
bitcore-node.jsonの方も、
{
"network": "testnet",
"port": 3001,
"services": [
"bitcoind",
"insight-api",
"insight-ui",
"web"
],
...
という中身に書き換わってくれています。
datadirは任意に設定可能なのか
設定ファイルを見て思うことの一つとして、
datadirを自分で任意に設定できるのか、というのが気になるポイントです。
方法②のやり方の一つとして、以下のものもあります。
$ bitcore create -d ~/.bitcoin --testnet mynode2
この -d というオプションは、参照するdatadirのpathを最初の段階で設定するというものです。
この場合、
mynode2
|-- node_modules
|-- bitcore-node.json
|-- package.json
というディレクトリ構成になり、
bitcore-node.jsonはというと、
{
"network": "testnet",
"port": 3001,
"services": [
"bitcoind",
"web"
],
"servicesConfig": {
"bitcoind": {
"spawn": {
"datadir": "~/.bitcoin",
"exec": "/home/(user name)/.nvm/versions/node/v4.7.0/lib/node_modules/bitcore/node_modules/bitcore-node/bin/bitcoind"
}
}
}
}
というように、datadirのpathが設定した通りになってくれています。
ただ、これで実行したときに、エラーが起きてしまうケースがあります。
この点は、次の実行の説明の時に捕捉します。
起動
さて、insight-api, insight-uiまでinstallまで完了すれば(datadirが ./data の場合)即座にinsight画面を表示することができます。
コマンドは、
$ bitcore start
のみです。
これを実行すると、
Using config: ...
Using network: testnet
Starting bitcoind
Using bitcoin config file: ...
...
といったように起動が進んでいきます。
そして、何かしらのブラウザ上で、
localhost:3001/insight
と入力すれば、すぐに
このような画面を確認することができると思います。
ただ、latest transactionsなどのデータは、データが完全に同期し終えないと表示されないっぽいので、
ちゃんと動いているか確認したい場合には、Blocksなどの画面から遷移していって、
上記のようなページを見ることをおススメします。
また、起動の際に
$ bitcore start --daemon
というオプションをつけて起動することも可能です。
この場合、サーバーは立たないので、localhostなどからの確認はできませんが、
tail -f mynode/data/testnet3/debug.log
とすることで、データの同期が進んでくれていることを確認できます。
どれくらいデータの同期が進んでくれているかというのは、
testnetの場合は、
http://tbtc.blockr.io/
のサイトなどのblock heightを見て、確認するといいと思います。
ただ、daemonで起動した際、bitcoinの止め方がよくわからず、一度Ubuntuを再起動させた覚えが自分にはあります。
どうしたらいいのだろうか。。
別のdatadirを使おうとした時の注意点
自分は、最初bitcoindを別途installし、
そちらでデータを同期した別ディレクトリをdatadirとして使おうとしていました。
しかし、それをやろうとすると、
$ bitcore start
Starting ...
...
Cannot obtain a lock on data directory ...... Bitcoin Core is probably already running.
というようなエラーが発生する問題にぶち当たりました。
http://bitcoin.stackexchange.com/questions/38303/bitcoin-core-cannot-obtain-lock
https://bitcointalk.org/index.php?topic=54737.0
いろいろ調べてはいるものの、今のところ、解決策というのは見つかりきっていません。。orz
これは追って調べて、解決できればまた載せたいと思います。
16/12/09 13:45追記
解決っぽいところまでいったので、記載します。
まず、別のdatadirを使うための準備手順です。
https://bitcoin.org/en/version-history
こちらのBitcoin Coreのversion historyから、for Ubuntu 64bitの圧縮データをダウンロードしてきます。
この時、versionを0.12.1にしなければなりません。
これは、bitcoreが使っているbitcoindのversionとの兼ね合いです。
bitcoreのinstall時に、
$ bitcore create mynode
...
Downloading bitcoin: https://.../bitcoin/.../v0.12.1-...
...
となっているのを確認できます。
なので、
たとえば、PPAを使ってbitcoind, bitcoin-qtをUbuntuにinstallしてしまうと、
最新版をinstallしてしまうため(現段階では、0.13.1)、そうするとゆくゆくエラーが発生してしまうわけです。
なので、Bicoin Coreのversion historyページで、v0.12.1を見つけ、
その、tar.gzファイルをまずはdownloadします。
次に、
$ tar zxvf bitcoin-0.12.1-linux64.tar.gz
として、ファイルを解凍し、
$ cd bitcoin-0.12.1
$ cd bin/
$ ls
bitcoin-cli bitcoin-qt bitcoin-tx bitcoind test_bitcoin
$ ./bitcoind
とコマンド入力を進んでいきます。
最後の、 ./bitcoind を入力すると、 ~/.bitcoin というディレクトリが作成されます。
そして、 ~/.bitcoin/bitcoin.conf に適当な設定を記入し、
$ cd mynode
$ bitcore start
してあげると、別datadirを参照して localhost:3001/insight での表示を実現してくれます!!