Help us understand the problem. What is going on with this article?

bitcoindをdockerで環境構築する

More than 1 year has passed since last update.

この記事では、Mac OS Sierra 10.12.4を使っています。

ビットコインのclient/APIであるbitcoindをdockerで環境構築した時の情報をまとめました。

1.docker hubからbitcoindのdockerfileを取得

今回はbitcoindで検索して最もpullの多い、kylemanna/bitcoindを使わせてもらいました。
https://hub.docker.com/r/kylemanna/bitcoind/

設定ファイルを変えたかったため、docker pullはせずにgithubのリポジトリからgit cloneしました。

git clone https://github.com/kylemanna/docker-bitcoind

2.bitcoindの実行オプション修正(任意)

cloneが完了したら、binフォルダにあるbtc_initを修正して、txindex=1を書き込みます。
txindexはダウンロードするbitcoinにインデックスを振るかどうかのオプションです。
インデックスがなければ、transactionの取得が使えませんので、設定しておきます。
※ダウンロード後にreindexでインデックスを振ることもできます

btc_init
cat <<EOF > $HOME/.bitcoin/bitcoin.conf
disablewallet=${DISABLEWALLET:-1}
printtoconsole=${PRINTTOCONSOLE:-1}
rpcuser=${RPCUSER:-bitcoinrpc}
rpcpassword=${RPCPASSWORD:-```dd if=/dev/urandom bs=33 count=1 2>/dev/null | base64```}
txindex=1 

bitcoin.confの作成をしているところにtxindex=1を追加します。
bitcoindはbitcoin.confの設定を見て動きます。

3.dockerのイメージをビルド

dockerfileのある場所で、imageをビルド。

docker build -t bitcoin .

4.ビルドしたイメージのコンテナを作成

bitcoindは全ブロックデータをダウンロードしようとします。
2017/6/6現在、約470000ブロックが存在しており、全てダウンロードすると40GB以上は容量を食ってしまいます。

そのため、-vオプションで、ホスト上のどこかにボリュームをマウントしておくことをお勧めします。私は、bitcoin-dataというフォルダを$HOME配下に作り実行しました。

docker run -v $HOME/bitcoin-data:/bitcoin --name=bitcoind-node -d \
     -p 8333:8333 \
     -p 127.0.0.1:8332:8332 \
     bitcoin

docker psでコンテナができていることを確認します。

docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                               NAMES
3f57b8b4ea28        bitcoin             "docker-entrypoint..."   27 minutes ago      Up 27 minutes       127.0.0.1:8332->8332/tcp, 0.0.0.0:8333->8333/tcp, 18332-18333/tcp   bitcoind-node

docker logsでビットコインのダウンロードも進んでいることを確認します。

docker logs --tail 100 bitcoind-node
2017-06-06 14:58:31 UpdateTip: new best=00000000003c40a610d51694b09cad43067fd097ac31d856a2e1b3920f4eaf6d height=76981 version=0x00000001 log2_work=53.6344 tx=108889 date='2010-08-29 02:57:51' progress=0.000480 cache=18.6MiB(86410tx)
2017-06-06 14:58:31 UpdateTip: new best=0000000000633aea8e81a332774908abcf638051b6fabaa9836c09351458b507 height=76982 version=0x00000001 log2_work=53.634676 tx=108890 date='2010-08-29 03:00:54' progress=0.000480 cache=18.6MiB(86411tx)

5.bitcoin-cliの動作確認

bashでコンテナの中に入って、bitcoin-cliのコマンドを叩いて返ってきたらOK!
あとはダウンロード完了を待ちます。(途中でダウンロードをやめたい場合は、bitcoin-cli setnetworkactive falseで中止できます。

bashでコンテナに入る

docker exec -i -t bitcoind-node bash

bitcoin-cliのコマンドを叩いて動作確認

bitcoin-cli getbestblockhash
000000000000021f8cc6b31d78e4ecc462c10925f15ea7e2b8fa16e8132d9712

bitcoin-cliのコマンド一覧wiki
※コマンドはよく更新されるのでhelpを叩いて確認するのが確実です。

Naomasa
渋谷で働いているブロックチェーンエンジニアです。 ブロックチェーンとデータ分析を仕事にしています。 ブログも書いています。
https://www.blockchainengineer.tokyo/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした