BitcoinCoreをインストールしてMainnetと同期をして見た
Odroidというシングルボードコンピューターを買ってきて、セットアップしたのでBitcoinCoreのインストール(ソースコードのmekeからやった)と、メインネットへ接続して同期したのでその辺りのことを書いておく。
Odroid-XU4とCloudShell 2の組み立てと初期設定までは下のブログで書いたよ。OSはUbuntu 18.04です。
事前準備
手順としてはGitからソースコードをゲットして、makeとインストールをするんだけど、別にソースコードからmakeしなくても公式からバイナリファイルを取得できます。
※プロバイダによるけど、bitcoin.orgへのアクセスが出来なかったりする
ということで、makeに必要なパッケージをインストールします。ちょっと多いので一括で記載。
# パッケージ・リストの更新
$ sudo apt-get update
# gccをインストール
$ sudo apt-get install build-essential automake pkg-config libevent-dev bsdmainutils
# OpenSSLをインストール
$ sudo apt-get install libtool autotools-dev autoconf
$ sudo apt-get install libssl-dev
# Boostをインストール
$ sudo apt-get install libboost-all-dev
# libdb4.8をインストール
$ sudo add-apt-repository ppa:bitcoin/bitcoin
$ sudo apt-get update
$ sudo apt-get install libdb4.8-dev
$ sudo apt-get install libdb4.8++-dev
# gitのインストール
$ sudo apt install git
これで必要な準備は完了。
ソースファイルのCloneとmakeの実行
クローン用のフォルダを作成してオーナーを変更する。
“/media/hdd”は好きなフォルダに読み替えてもらえばいい。オーナーを変更するのはコマンド実行時に、毎回 “sudo” コマンドを実行するのが煩わしいから。(odroidは僕の環境のユーザ)
$ sudo mkdir /media/hdd/src
$ sudo chown odroid:odroid/media/hdd/src
“src”は”sourceの略です。ソースファイル用のフォルダを作成したら、BitcoinCoreをクローンする。
$ cd /media/hdd/src
$ git clone https://github.com/bitcoin/bitcoin.git
クローンしたフォルダへ移動し、バージョンを確認する。gitのコマンドを知りたい場合は…ググってね!
$ cd bitcoin
$ git branch -r
origin/0.11
origin/0.12
origin/0.13
origin/0.14
origin/0.15
origin/0.16
origin/HEAD -> origin/master
origin/master
最新の安定バージョンが0.16なので0.16をチェックアウトする。
$ git checkout -b my0.16 origin/0.16
“my0.16″部分は好きな名称で構わない。
ソースがチェックアウトされたらmakeを実行する。
$ ./autogen.sh
$ ./configure --without-gui
$ make -j4
$ sudo make install
2行目の”configure”は、僕の環境ではGUIが不要なので設定したけど、GUIもインストールするなら実行しなくて良い。”make”のオプション”-j4″は並行実行するジョブ数。Odroidは4+4コアなので最初8ジョブで指定してみたけど、エラーで途中終了してしまうので、4ジョブにした。
“install”コマンドはbin系のフォルダへ移動するコマンドなので、”sudo”での実行が必要。
bitcoindを動かす
の前にセキュリティを向上させる
個人で単に試したいだけなので、そんなにきつくセキュリティ設定しなくてもいいんだけど、流石にP2Pで接続させることになるので、侵入経路はある程度潰しておきたいところ。
とりあえず最低限として以下を実施した。
confファイルの設定
confファイルがないと動かないので、bitcoindを動かす前にconfファイルを作成する。デフォルトでconfファイルを読み込みに行くのが、”~/.bitcoin”フォルダなので、”~/.bitcoin”フォルダを作成してconfファイルを配置する。
※confファイルの指定も可能なので必ずしも”~/.bitcoin”に作る必要はない
$ mkdir -p ~/.bitcoin
$ cd ~/.bitcoin
$ touch bitcoin.conf
中身空っぽでもファイルさえあれば動くっぽいw
コンフィグファイルの内容を簡易で作成できるBitcoin Core Config Generatorというページがあるので、ここで生成すると簡単に作れる。
ページ上部のプルダウンを変更することで、OS(Windows、Linux、Mac)の選択と、マイニングやテストネット等の用途を選択することができる。
とりあえず、僕の場合は指定のHDD上にデータを格納して欲しい以外は、特に指定する必要がなかったので、下のような簡易な内容でコンフィグファイルを作成した。
$ vim bitcoin.conf
# 以下を記述
# Generated by https://jlopp.github.io/bitcoin-core-config-generator/
# This config should be placed in following path:
# ~/.bitcoin/bitcoin.conf
# [core]
# Specify a non-default location to store blockchain and other data.
datadir=/media/hdd/.bitcoin
bitcoindを動かしてみる
ここまで設定すれば、あとは以下のコマンドで実行すれば、指定したフォルダ(/media/hdd/.bitcoin)にフルノード(チェーン?データ?用語が微妙にわからなかったw)がダウンロードされる。
※フォルダ指定がない場合のデフォルトでのダウンロード先は”~/.bitcoin”
$ bitcoind -daemon
実行中のログはデータフォルダ内の “debug.log” というファイルに出力されるので、状況が気になるならこのファイルを”tail”コマンドなどで監視すると良い…のだけど、Odroidだとメモリが少ないからかあまり監視をし過ぎると途中で “bitcoind” が異常終了(多分メモリ不足)してしまうので、動かしたらほおっておいたほうがよさそう…
監視用のコマンドはこんなのを実行していたけど、2時間ぐらい稼働すると必ず異常終了するので、最終的には何も監視しないことにしたw
# 30秒ごとにメモリの使用状況を表示する(メガバイト単位)
$ vmstat -tSM 30
# 30秒ごとに全てのCPU使用率を表示
$ mpstat -P ALL 30
# アプリケーションの稼働状況を監視
$ top
# ログの監視
$ tail -f /media/hdd/.bitcoin/debug.log
止めるときは以下のコマンドを実行すれば止まる。
$ bitcoin-cli stop
仕組みとしては”bitcoind”が実際にP2P処理を実行するモジュールで、”bitcoin-cli”は”bitcoind”へコマンドを送信する役割みたいなものだと思って貰えばいい。”bitcoind”は起動する時に指定するだけで、後のコマンド処理は全て”bitcoin-cli”経由で送ることになる。
その他のコマンドは Original Bitcoin client/API calls list で確認できる。
同期にかかった時間
2018/06/07 15:00 に bitcoin の同期を開始
2018/06/09 17:03 に現在のブロックに追いつく約50時間
追いついた時のブロック番号は526683
全体の容量は約183GiBCPU 8コア、メモリ 2G、SSD RAID 0 構成
— 杉山 幸雄 (@yukio_sugiyama) June 10, 2018
1分ごとにどこまで同期済みかを出力するシェルを組んでたので、そのデータを使って同期済みblock数のグラフを作って見た。「これ何かに似てるなー」と思ったんだけど、ビットコインの発行枚数のグラフと似てるね。
相関関係なんてないと思うけど、これはこれで面白い(。・ω・)ノ゙
ディスカッション
コメント一覧
まだ、コメントがありません