LoginSignup
2
2

More than 5 years have passed since last update.

bitcoreの起動いろは

Last updated at Posted at 2016-12-09

動作環境

ハードウェア

  • 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
と入力すれば、すぐに

insight.PNG

このような画面を確認することができると思います。
ただ、latest transactionsなどのデータは、データが完全に同期し終えないと表示されないっぽいので、
ちゃんと動いているか確認したい場合には、Blocksなどの画面から遷移していって、

bitcore.png

上記のようなページを見ることをおススメします。

また、起動の際に

$ 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 での表示を実現してくれます!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2