記事作成年月日等:2020年(令和2年)7月30日(木)
要 旨
今回は暗号資産ビットコイン(bitcoin, BTC)のブロックチェーン情報を全て保持するフルノード・アーカイブノード を立てる方法について記述します。
実行環境等
VPS:KAGOYAクラウド 12コア、4GB RAM, 800GB HDD 、料金:126円/日、3,520円/月
OS:CentOS7.8
操作端末:iMac
同期開始年月日等:2020年7月28日(火)20:00
同期完了年月日等:2020年7月29日(水)17:00
同期に要した時間:約21時間
同期完了時の使用ストレージ容量:314GB
実施確認年月日等:2020年(令和2年)7月28日(火)から2020年(令和2年)7月29日(水)
実施要領
KAGOYAクラウドは、sshキーを使用してログインするのでrootで実施した。
アップデートをする。
1 |
yum update |
BITNODES(https://bitnodes.io)のサイトに記述してある方法で実施した。
bitcoindをダウンロードして、自動的にビットコイン ブロックチェーン・ネットワークに同期させる。
1 |
curl https://bitnodes.io/install-full-node.sh | sh |
このコマンドを実行するとコメントが表示されbitcoind等がダウンロードされ、bitcoindが自動起動する。
自動起動が終了したら入力可能状態にターミナルが移行するので、次はコマンドを実行できるようにする。
1 |
install -m 0755 -o root -g root -t /usr/local/bin ~/bitcoin-core/bin/* |
これでコマンドが使用できるようになった。使用するコマンドは以下の通り。
start.sh:bitcoindを起動させる。
stop.sh:bitcoindを停止させる。
bitcoin-cli:bitcoindのAPIを使用することで、ビットコインの残高確認や送金ができる。
初期設定では保全のためウォレットが使用できないようになっているので、ウォレットを使用できるように有効にする。
~/bitcoin-core/.bitcoin/bitcoin.confを編集する。
1 |
vi ~/bitcoin-core/.bitcoin/bitcoin.conf |
12行目の"disablewallet=1"を"disablewallet=0"に数字を0に変更して保存してviを終了させる。
続いて他のノードからの問い合わせに答えられるように8333番ポートが開放されているか調べて閉鎖されているなら開放する。
Macのターミナルからnmapコマンドを使用してポートの開閉状態を確認する。
まずMacにHomebrewからnmapをインストールする。
1 |
brew install nmap |
インストールが完了したら、下のコマンドでサーバーのポートの開閉状態を調べる。
1 |
nmap <サーバーのIPアドレス> |
例:nmap 123.345.678.901
8333番ポートのstatusがopenになっていれば開放されている。もしcloseやfilterになっていれば、firewalld.serviceで開放する。
細部要領は私の記事「CentOS7でファイアウォールを設定等する方法」を参照してください。
引き続きウォレットを有効にする。
一度bitcoindを停止する。
1 |
stop.sh |
再度bitcoindを起動して、変更した設定を適用させてウォレットを有効にする。
1 |
start.sh |
ブロックチェーン ネットワークの同期状況を確認するコマンドは下のとおり。
1 |
tail -f ~/bitcoin-core/.bitcoin/debug.log |
このコマンドを使用すると、このログに書き込まれている状況の最新の状況がリアルタイムに確認できる。
この表示を終了させて、シェルに戻るには、Ctl + cを使用する。
毎日00時00分にアップデートを自動的に実施させる。
まずshの場所を確認する。
必要なwhichコマンドをインストールする。
1 |
yum install which |
shの場所をwhichコマンドを使用して調べる。
1 |
which sh |
/usr/bin/shが返される。
これを確認してから
/root/update.shファイルを作成する。
1 |
vi /root/update.sh |
新規作成されたファイルに以下を記述する。
1 2 3 |
# /usr/bin/sh cd /root yum update |
このファイルを実行ファイルにパーミッションを設定する。
1 |
chmod +x /root/update.sh |
/root/cron.confファイルを作成する。
1 |
vi /root/cron.conf |
新規作成したこのファイルに以下を記述して保存終了する。
1 |
0 0 * * * /root/update.sh |
自動実行させるために必要なcronieをインストールする。
1 |
yum install cronie |
crond.serviceを起動する。
1 |
systemctl start crond.service |
サーバーが再起動した時等にcrondが自動起動するように設定する。
1 |
systemctl enable crond.service |
crond.serviceの状態を確認する。
1 |
systemctl status crond.service |
activeと表示されるのを確認する。
crond.serviceが自動起動状態になっているのを確認する。
1 |
systemctl is-enabled crond.service |
enabledと表示されれば自動起動状態位なっている。
cron.confを登録する。
1 |
crontab cron.conf |
最後に登録されたか確認する。
1 |
crontab -l |
/root/cron.confのファイル内容が表示されていれば正常に登録完了です。
結 言
今回の環境で、ブロックチェーン ネットワークに最初から最新まで同期完了させるのに約21時間を要し、使用したストレージの容量は314GBでした。
この状態ではビットコインのフルノード・アーカイブノード を維持するのは今後さらに経費もかかり大変という印象を受けました。
また使い古しの個人のPC等で同期させるにはかなりの時間がかかるだろうと感じました。
しかし大変な分ビットコインの全取引記録を保持するフルノード・アーカイブノード の存在は、ブロックチェーンの信頼性確保のため重要な役割を果たしているものと認識しています。
以上今回は暗号資産ビットコイン(bitcoin, BTC)のブロックチェーン情報を全て保持するフルノード・アーカイブノード を立てる方法について記述しました。
最後までお読みいただき、ありがとうございました。
追記:この記事をご覧になり参考になったなら、ビットコインで寄付をいただけると助かります。
私のビットコインアドレス:bc1qm9rg06mmqv58qq50a02fx05qdmsaweapnt86lr