Bitcoin開発環境を構築する
最近、話題のBitcoinを勉強しようと思い、自分のローカルPCにビットコインを動かせる環境を構築することにしました。
私もまだまだBitcoinや他の仮想通貨について勉強中ですが、ソースコードを読む上で参考になれば幸いです。
実行環境
OSX 10.13 High Sierra
Github Desktop
Xcode 9.2
→コマンドラインツールのインストールが必要です。
Homebrew 1.4.1
1. ソースコードのClone
まずはBitcoinのソースコードをCloneします。
GithubのBitcoinページにアクセスします。
https://github.com/bitcoin/bitcoin
「Clone or download」>「Open in Desktop」をクリックします。
Github Desktopが立ち上がり、自分のローカルでソースを保存したいディレクトリを選択します。
ソースコードのCloneが開始されます。
Cloneされたことを確認します。
/bitcoin/doc/build-osx.mdに公式の環境構築手順が記載されているので、
その内容にしたがって環境を構築していきます。
2. ソースビルド準備
前提となるパッケージをインストールします。
brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config protobuf python3 qt libevent
ディスクイメージ(.dmg)の作成用に「librsvg」パッケージをインストールします。
このパッケージについては任意のため、インストールしなくても、この後の手順を実行できます。
brew install librsvg
3. ソースビルド
ビットコインのソースコードを配置したディレクトリに移動します。
cd bitcoin
シェルスクリプト「autogen」を実行して、ソースのビルドします。
./autogen.sh
シェルスクリプト「configure」を実行して、ソースコードのコンパイル前に、インストール対象のチェックします。
./configure
makeコマンドを実行して、コンパイルをします。
make
4. make時のエラー
すると下記のようなエラーが発生。
Making all in src
CXX rpc/libbitcoin_server_a-blockchain.o
g++: warning: couldn't understand kern.osversion '17.3.0
rpc/blockchain.cpp:1622:1: error: converting to 'std::vector<std::basic_string<char> >' from initializer list would use explicit constructor 'std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::basic_string<char> >]'
};
^
Googleで調べてみるとMacの場合、Xcode以外のgccが入っているとどうやらエラーになるらしい。
下記のコマンドでHomebrewのインストールパッケージを調べる
brew list
gcc49が入っていたので、アンインストール
brew uninstall gcc49
5. make再実行
再度、makeコマンドを実行
make
ビルド完了です! ちなみにmakeコマンドが終わるまで40分ほどかかりました。
単体テストを実行して問題ないことを確認します。
make check
ビットコインのデーモンを起動して動作を確認…で問題が。
`./src/bitcoind`
↑のコマンドが終わらない。公式サイトを見てみると「我慢が必要です」とのこと。
我慢をしたくないのと、65GBのデータをローカルに落としてくるのは、嫌なので
現在、なんとかする方法を模索中です…
(2018/01/20追記:テストネットに接続することでこの問題を解決しました↓)
========2018/01/20追記========
6. テストネットへの接続設定
ビットコインの本番ネットワークではなく、開発用のテストネットに接続するように
設定ファイルを作成します。
このテストネットでのビットコインは現実では価値を持たないテスト用のものとなります。
下記の場所にテストネットに接続するようための「bitcoin.conf」を作成し、配置します。
cd /$HOME/Library/Application\ Support/Bitcoin/
記載する内容は下記の通りです。
「rpcuser」、「rpcpassword」については、任意のものを設定できます。
rpcuser=user
rpcpassword=pass
server=1
txindex=1
# Allow connections outsite localhost?
# rpcallowip=192.168.1.*
rpcport=18332
testnet=1
7. ブロックチェーンの同期
bitcoind -reindexを実行して、テストネットのブロックチェーンの同期を開始します。
cd /$HOME/Git/bitcoin
./src/bitcoind -reindex
実行した結果、テストネット用のブロックチェーンとはいえ、同期に
118時間(途中ネットが切れたりした分もありますが…)ほど時間がかかりました。
何かが間違えているのではないかという思いが常に頭にあったので
下記の通りtailで、ログを監視しながらコマンドを実行しましたが、きちんと同期がされていました。
tail -f /$HOME/Library/Application\ Support/Bitcoin/testnet3/debug.log
下記のイメージは、「debug.log」のブロックチェーン同期中のログの抜粋です。
8. bitcoindの起動と停止
bitcoindを起動します。
./src/bitcoind -daemon
bitcoindが正常に起動できたことを確認するため、ブロックチェーンの情報を表示するコマンドを実行します。
./src/bitcoin-cli getblockchaininfo
テストネット用のブロックチェーンの情報が取得できています。
取得できる情報については下記のリンク参照。
例えばテストネットのブロックチェーンサイズは、「12.7GB」ほどだと分かります。
(2018年1月現在)
http://bitcoin.clock-up.jp/contents/block/blockinfo
bitcoindを停止します。
./src/bitcoin-cli stop
bitcoindを停止させました。
bitcoin開発環境は一旦、これで構築完了です。
あとはブロックチェーンの仕組みや実際の決済について、引き続き勉強していく予定です。
Author And Source
この問題について(Bitcoin開発環境を構築する), 我々は、より多くの情報をここで見つけました https://qiita.com/MasatoKawakami/items/b577300023051ae878e5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .