mac OS High Sierra でBitcoin Coreをビルド


参考:

Bitcoinのエコシステムに加わりたいと思うなら避けては通れない(と勝手に思っている)Bitcoin Coreをビルドしてみようと思います。

ビットコインコアとは

ビットコインのリファレンスクライアント実装です。このクライアントはビットコインシステムのすべての機能が実装されています。

  • ウォレット
  • トランザクション認証エンジン(ブロックチェーンの全データを保持する機能)
  • peer-to-peerのビットコインネットワークノード

ビットコインコアを触ってみたいだけで、ビルドなんかに興味がないという方は下記サイトから.dmgをインストールし、簡単にインストールすることもできます。
ビットコインコア for mac

GitHubからclone

早速、GitHubからBitcoin Coreのソースコードをクローンします。
GitHubのBitcoinリポジトリはこちらです。

$ git clone https://github.com/bitcoin/bitcoin.git

お好きなブランチを使用してください。僕は現在最新のリリースタグを使うことにしました。

$ git checkout v0.17.0rc2

build-osx.mdを読む

ビルドしようとしている環境ごとにビルド説明書が丁寧に用意されています。
/doc/build-osx.mdが今回僕が読むべきドキュメントです。
以降はほぼbuild-osx.md様の仰せのとおりに動いただけです。

事前にインストールが必要なもの

build-osx.md曰く、以下のインストールが必要。
- homebrew
- そして、homebrewで一気にいろいろインストール

$ brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode
  • Berkeley DB 自身でビルドする場合はBerkeley DBの使用を推奨されている。 クローンしてきたbitcoinリポジトリのルートにて、
$ ./contrib/install_db4.sh .

このコマンドによってBerkeley DBのインストールが完了したメッセージと共に表示される下記のexport.configure文をメモしておく。

db4 build complete.

When compiling bitcoind, run `./configure` in the following way:

  export BDB_PREFIX='/Users/yuki/develop/bitcoin/db4'
  ./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include" ...

ビルド

いよいよビルド作業が始まります。

1. autogen.sh

autogen.shスクリプトにより、ビットコインコアをビルドしようとしている環境に合わせた各種設定ファイル等が自動的に生成されます。後述するconfigureファイルもこのスクリプトにより生成されます。
autogen.shスクリプトはプロジェクトルートにあるので、プロジェクトルートにて

$ ./autogen.sh

2. configureのオプション確認

configureにより、環境フレンドリなビルドスクリプトが生成されます。
ちなみに、./configure --helpでconfigureする際に指定可能な様々なオプションを確認することができます。

$ ./configure --help
...中略...

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/bitcoin]
  --htmldir=DIR           html documentation [DOCDIR]
...中略...

特にオプションを指定しなければビットコインコアは/usr/local/bin, /usr/local/lib etc にインストールされるようです。
その他、うんざりするほどたくさんのオプションを紹介してくれます。まだBitcoin Coreを触っていない初心者には、正直何を言っているのかさっぱりなオプションがほとんどなので、今回は見るだけ。

3. configure

特にオプションを指定しないには先述のとおりなので、autogen.sh時に言われたことだけやります。
言われたことだけとは言ったものの、コマンド末尾に...は入れません。これは、オプションつけたいならこれに続くよ的な意味です。

configure
$ export BDB_PREFIX='/Users/yuki/develop/bitcoin/db4' 
$ ./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include"

4. make + install

./configureで特にエラーもなかったのでmakeします。

$ make

しばらく時間がかかりますが、特にエラーが出なければビルド完了です。

$ sudo make install

により、インストールされ、bitcoindなどのコマンドがそのまま利用できるようになります。

$ which bitcoind
/usr/local/bin/bitcoind
$ which bitcoin-cli
/usr/local/bin/bitcoin-cli

5. チェック

一応推奨されてます。unit testが実行されます。

$ make check

テストが通ればビルド完了です!

今回特に触れませんでしたが、もし.appファイルをインストールしたい場合は.dmgを作るために

$ make deploy

することもできます。ただしこの場合は、configureする前にhonebrewlibrsvgをインストールしておく必要があります。

$ brew librsvg

まとめ

実際のところ、ごくごく普通のUNIX系OSにソースコードからビルドする手順そのものでした。
特に引っかかる箇所もなく非常にスムーズに完遂できてしまいました。

次回、Bitcoin Coreを動かしてみる の巻