Bitcoin Core を AWS で動かす
Bitcoin Core を動かしたい.
Mac でも動かすことが可能だが, 2017/09/12 現在で blockchain の size は 130 GB 程度あり, 自分の Mac では容量的な不安がある.
そこで, 今回は AWS で動かしてみることにした.
Ubuntu Server を立てる
Bitcoin はほぼ無関係なので読み飛ばし推奨.
AMI として, Ubuntu Server 16.04 LTS
を選択し, t2.medium で立てることとした. 現在 $0.047 / hour なので, だいたい月に 3700 円 ($33.84, 110 円 / $) かかる.
また, ストレージとして 300 GB 追加した.
なお, Bitcoin core の推奨スペックは以下で確認できる.
Requirements And Warnings - Bitcoin Core
https://bitcoin.org/en/bitcoin-core/features/requirements
今回は pem ファイルを作り直したので, 移動させてパーミッションを変更する.
mv ~/Download/new.pem ~/.ssh/
chmod 400 ~/.ssh/new.pem
早速接続する.
ssh -i ~/.ssh/new.pem ubuntu@ec2-**-**-**-**.ap-northeast-1.compute.amazonaws.com
authorized_keys から pem を削除して, 自分の public key を追加する.
vi ~/.ssh/authorized_keys
自分が GitHub に追加した公開鍵は以下でも参照できる.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8GeeRUxOPn0H0lSeX50WxFhwYJ7+//ueVfns1vDBZyAwNDk8cx/gXo2nqNhGkuvOyMp0vetrHVtYxfuTR1vSNmjpYuNrxfGXTmSxbD8eXdY+6S+KQz2kG0Ly+vNVvQYWoElj1kYaFNKyr2bMfYX/XbULl6SWpuyTXmXwZqSRgjPZ4K0ZcxxqAvaEQxUXE2s2BbBzjvre7SZXj61XkrPlK3o/JIMecTU+n2F9yF6C/xcme8umV98+Qy7zHGqysGE1DRoxf7kAxkAiNCCes8INEQRz/67nQJSqpvVYKKx1jSzm8NVYfXB0VruHFqCa2v/8VTqbYVYhZsJzLoLDwry8P sqrtxx@gmail.com
追加したら, ローカルの ~/.ssh/config
にサーバー情報を載せる.
Host bitcoin
User ubuntu
Port 22
HostName **.**.**.**
IdentityFile ~/.ssh/id_rsa.github.com.sqrtxx
接続してみて成功したら authorized_keys
から
new.pem
のほうを削除する.
Bitcoin Core のインストール
以下に導入方法が載っている.
Running A Full Node - Bitcoin
https://bitcoin.org/en/full-node#linux-instructions
まずリポジトリを追加する.
sudo apt-add-repository ppa:bitcoin/bitcoin -y
apt-get
を更新する.
sudo apt-get update -y
GUI が必要な場合は bitcoin-qt
を入れる (今回は CUI オンリーなので入れない)
sudo apt-get install bitcoin-qt -y
Bitcoin Core デーモンを入れる.
sudo apt-get install bitcoind -y
Bitcoin Core デーモン
transaction の index のために, $HOME/.bitcoin/bitcoin.conf
を作成し, 以下を追加する.
txindex=1
以下のコマンドで Bitcoin Core デーモンプロセスが立ち上がる.
bitcoind -daemon
立ち上げると, Block を取得しだす.
以下のコマンドを叩くと, 取得状況を確認できる
$ bitcoin-cli getinfo
{
"version": 140200,
"protocolversion": 70015,
"walletversion": 130000,
"balance": 0.00000000,
"blocks": 960,
"timeoffset": 0,
"connections": 8,
"proxy": "",
"difficulty": 1,
"testnet": false,
"keypoololdest": 1505219747,
"keypoolsize": 100,
"paytxfee": 0.00000000,
"relayfee": 0.00001000,
"errors": ""
}
わりとすぐ取得開始する.
現在は約 48 万 Blocks 積み上がっており, Bitcoin Core 14.0 からはだいたい 6 時間程度で取得完了するらしい.
Bitcoin Core :: Bitcoin Core 0.14.0 Released with Performance Improvements
https://bitcoincore.org/en/2017/03/08/release-0.14.0/
以前の文献では数日程度と表現されており, Bitcoin Core 13.2 で 1 日と 12 時間程度かかっていたようだから, かなりの改善がされているようだ.
bitcoin-cli の基本的なコマンド
以下にクイックリファレンスがある.
Developer Reference - Bitcoin
https://bitcoin.org/en/developer-reference#rpc-quick-reference
現在の状況を確認する
$ bitcoin-cli getinfo
接続数を確認する
$ bitcoin-cli getconnectioncount
接続先を確認する
$ bitcoin-cli getpeerinfo
ブロックハッシュを取得する
$ bitcoin-cli getblockhash 0
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
ブロックの情報を取得する
$ bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
{
"hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
"confirmations": 235626,
"strippedsize": 285,
"size": 285,
"weight": 1140,
"height": 0,
"version": 1,
"versionHex": "00000001",
"merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
"tx": [
"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
],
"time": 1231006505,
"mediantime": 1231006505,
"nonce": 2083236893,
"bits": "1d00ffff",
"difficulty": 1,
"chainwork": "0000000000000000000000000000000000000000000000000000000100010001",
"nextblockhash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"
}