Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
21
Help us understand the problem. What is going on with this article?
@Naomasa

bitcoindをdockerで環境構築する

More than 3 years have 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を叩いて確認するのが確実です。

21
Help us understand the problem. What is going on with this article?
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
Naomasa
渋谷で働いているブロックチェーンエンジニアです。 ブロックチェーンとデータ分析を仕事にしています。 ブログも書いています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
21
Help us understand the problem. What is going on with this article?