この記事では、Mac OS Sierra 10.12.6を使っています。
Bitcoinのsegwit2xの取りやめ、ビッグブロックの再評価などでBitcoin Cashが非常に盛り上がっていますね。Bitcoin Cashのマイニングをしたい方向けにBitcoin Cashのノード構築をdockerで行います。
Dockerによる仮想通貨のノード構築シリーズはこちらです。
Dockerfileの作成(ダウンロード)
Bitcoin CashのDockerfileですが、最新バージョンにピタリと合うものがなかったので、先人のDockerfileをフォークして改造させていただきました。 作成したDockerfileの中身と解説はこちらです。 こちらのgithubを参考にさせていただきました。
#ubuntu:17.10をベースにする FROM ubuntu:17.10 #apt-add-repositoryコマンドをインストールするためにsoftware-properties-commonをインストールする RUN apt-get update && \ apt-get install -y software-properties-common #bitcoincashのリポジトリを追加 #libstdc7のリポジトリを追加 RUN add-apt-repository ppa:bitcoin-abc/ppa && \ add-apt-repository -y ppa:ubuntu-toolchain-r/test #bitcoincashのdeamon,libstdc7を追加 RUN apt-get update && \ apt-get install -y libstdc++-7-dev bitcoind #デフォルトのVOLUMEマウント先 VOLUME ["/opt/bitcoinabc"] #デフォルトのポートエクスポート先 EXPOSE 8332 8333 18332 18333 #コンテナの実行コマンド CMD ["/usr/bin/bitcoind", "--conf=/opt/bitcoinabc/bitcoind.conf", "--printtoconsole"]
今回作成したDockerfileはこちらのgithubリポジトリに公開しています。 手っ取り早くダウンロードするには、以下cloneコマンドを実行してください。
git clone https://github.com/naomasabit/bitcoincash-docker
Dockerのイメージをビルド
Dockerfileを配置したディレクトリで、以下コマンドを実行してdockerイメージをビルドします。
docker build -t bch-node . #bch-nodeという名前でdockerイメージを作成
うまくできていれば、docker imagesコマンドで存在を確認できます。
docker images REPOSITORY TAG IMAGE ID CREATED SIZE bch-node latest 67369fb84fa9 25 minutes ago 312MB
ビルドしたイメージのコンテナを作成
docker run コマンドでイメージのコンテナを作成します。
各オプションの説明
--name引数:コンテナの名称をつける。「--name=bitcoincash-docker」はbitcoincash-dockerという名称をつける。
-dオプション:バックグラウンドで動かす
-vオプション:ホスト上にvolumeをマウント(ダウンロードする大量のトランザクションなどをコンテナ外に出しておくことができまう) 「-v $HOME/bitcoincash-docker/bch-data:/opt/bitcoincash」はホストの「$HOME/bitcoincash-docker/bch-data」にコンテナ内の「/opt/bitcoincash」をマウントします。
- -pオプション:エクスポートするポート番号を設定します。 「-p 127.0.0.1:18332:18332」は18332ポートをエクスポートします。
docker run --name=bitcoincash-docker \ -v $HOME/bitcoincash-docker/bch-data:/opt/bitcoincash \ -p 127.0.0.1:18332:18332 bch-node
docker psでコンテナができていることを確認します。
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01e8c2eb01e2 bch-node "/usr/bin/bitcoind..." 30 seconds ago Up 29 seconds 8332-8333/tcp, 18333/tcp, 127.0.0.1:18332->18332/tcp bitcoincash-docker
docker logsでビットコインキャッシュのダウンロードも進んでいることを確認します。
docker logs bitcoincash-docker 2017-11-14 13:03:47 Bitcoin ABC version v0.16.1.0-unk 2017-11-14 13:03:47 InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1 2017-11-14 13:03:47 Assuming ancestors of block 00000000000000000553279251628c470a5b51de3bbbf336b20853025ffbf270 have valid signatures. 2017-11-14 13:03:47 Default data directory /root/.bitcoin 2017-11-14 13:03:47 Using data directory /root/.bitcoin 2017-11-14 13:03:47 Using config file /opt/bitcoinabc/bitcoind.conf 2017-11-14 13:03:47 Using at most 125 automatic connections (1048576 file descriptors available) 2017-11-14 13:03:47 Using 32 MiB out of 32 requested for signature cache, able to store 1048576 elements 2017-11-14 13:03:47 Using 32 MiB out of 32 requested for script execution cache, able to store 1048576 elements 2017-11-14 13:03:47 Using 2 threads for script verification 2017-11-14 13:03:47 scheduler thread start .... 2017-11-14 13:03:56 peer 0 uses CASH magic in its headers 2017-11-14 13:03:56 Pre-allocating up to position 0x100000 in rev00000.dat 2017-11-14 13:03:56 UpdateTip: new best=00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 height=1 version=0x00000001 log2_work=33.000022 tx=2 date='2009-01-09 02:54:25' progress=0.000000 cache=0.0MiB(1txo) 2017-11-14 13:03:56 UpdateTip: new best=000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd height=2 version=0x00000001 log2_work=33.584985 tx=3 date='2009-01-09 02:55:44' progress=0.000000 cache=0.0MiB(2txo) 2017-11-14 13:03:56 UpdateTip: new best=0000000082b5015589a3fdf2d4baff403e6f0be035a5d9742c1cae6295464449 height=3 version=0x00000001 log2_work=34.000022 tx=4 date='2009-01-09 03:02
これでノード構築ができました!
bitcoin-cliの動作確認
bitcoinと同じようにbashでコンテナの中に入って、bitcoin-cliのコマンドを叩いてみます。
bashでコンテナに入ります。
docker exec -i -t bitcoincash-docker bash
bitcoin-cli getbestblockhash 000000000000015d7cc1a6e2098d9a3b35999d3d29547ff09955fef1f9451411
ダウンロードしてきている最新のブロックのハッシュ値が取れることを確認できました。
※ bitcoin-cliのコマンドはhelpで確認できます。
参考にしたサイト
bitcoinABC(bitcoincashの開発チームのパッケージ公開箇所
https://launchpad.net/~bitcoin-abc/+archive/ubuntu/ppa
bitcoincashのver0.15用Dockerfile