Whimlog

寝るまでが一日

MacにBitcoin をインストールする

導入

ブロックチェーンの勉強がてら、Bitcoin をインストールしたのでその記録を残しておきます。 MacBook Pro 2015, OS は High Sierra 10.13 で行いました。

公式のドキュメントはココにあります。

10/23 追記
brew install bitcoin で一発ではいります

準備

OS X command line tools が必要なのでインストールしてない場合は以下を実行する。

$ xcode-select --install

依存ライブラリは以下で入る

$ brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config protobuf python3 qt libevent

リポジトリを以下から取得し移動

$ git clone https://github.com/bitcoin/bitcoin.git
$ cd /path/to/bitcoin
$ git checkout vv0.15.0rc3 (17/10/13 時点の最新版

ビルドする

以下の手順でコンパイルする。./configure --help でオプションが表示できます。 ステップ3 はマシンスペックにもよりますが、30分くらいかかると思います。

  1. autogen.sh でOSや依存ライブラリのチェックを行っている
  2. ./configure でビルドスクリプトを生成する・
  3. makeコンパイルを実行する
  4. sudo make install でシステムのインストール先に配置
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

確認

which コマンドでバイナリの配置を確認します。 これでインストールは終わりです。

$ which bitcoind
/usr/local/bin/bitcoind

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

作業中の出来事

make 時に error: no matching function for call to 'upnpDiscover' がでました。 原因は Bitcoin のバージョンが古かったためなので、最新版で実行することで解決できます。

~/w/g/b/bitcoin ❯❯❯ make                                                                                                                                            tags/v0.9.5rc2^0
Making all in src
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in .
  CXX      addrman.o
  CXX      alert.o
  CXX      bloom.o
  CXX      checkpoints.o
  CXX      coins.o
  CXX      init.o
  CXX      keystore.o
  CXX      leveldbwrapper.o
  CXX      main.o
  CXX      miner.o
  CXX      net.o
net.cpp:1066:15: error: no matching function for call to 'upnpDiscover'
    devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, &error);
              ^~~~~~~~~~~~
/usr/local/include/miniupnpc/miniupnpc.h:62:1: note: candidate function not viable: requires 7 arguments, but 6 were provided
upnpDiscover(int delay, const char * multicastif,
^
1 error generated.
make[3]: *** [net.o] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

以下はコンパイル中の Warning集
特に調査してないです。

  CXX      libbitcoinconsensus_la-utilstrencodings.lo
gcc -I. -g -O2 -Wall -Wextra -Wno-unused-function -c src/gen_context.c -o gen_context.o
gcc gen_context.o -o gen_context
./gen_context
  CC       src/libsecp256k1_la-secp256k1.lo
  CCLD     libsecp256k1.la
  CXXLD    libbitcoinconsensus.la
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
  CXX      bitcoind-bitcoind.o
bitcoind.cpp:153:17: warning: 'daemon' is deprecated: first deprecated in macOS 10.5 - Use posix_spawn APIs instead. [-Wdeprecated-declarations]
            if (daemon(1, 0)) { // don't chdir (1), do close FDs (0)
                ^
/usr/include/stdlib.h:293:6: note: 'daemon' has been explicitly marked deprecated here
int      daemon(int, int) __DARWIN_1050(daemon) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_0, __MAC_10_5, __IPHONE_2_0, __IPHONE_2_0, "Use posix_spawn APIs instead.") __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
         ^
1 warning generated.
  CXX      leveldb/util/leveldb_libleveldb_a-logging.o
leveldb/util/logging.cc:58:40: warning: comparison of integers of different signs: 'const int' and 'unsigned long long' [-Wsign-compare]
          (v == kMaxUint64/10 && delta > kMaxUint64%10)) {
                                 ~~~~~ ^ ~~~~~~~~~~~~~
1 warning generated.
  CXX      qt/qt_libbitcoinqt_a-notificator.o
qt/notificator.cpp:66:27: warning: 'LSGetApplicationForInfo' is deprecated: first deprecated in macOS 10.10 - Use LSCopyDefaultApplicationURLForContentType instead. [-Wdeprecated-declarations]
        OSStatus status = LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator, CFSTR("growlTicket"), kLSRolesAll, 0, &cfurl);
                          ^
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfoDeprecated.h:633:1: note: 'LSGetApplicationForInfo' has been explicitly marked deprecated here
LSGetApplicationForInfo(
^
1 warning generated.

まとめ

ドキュメントの通りにやれば40分くらいで Bitcoin がインストールできます。 実際に実行するのも書けたら書きます😇