post Image
Bitcoin Core を AWS で動かしてみる

Bitcoin Core を AWS で動かす

Bitcoin Core を動かしたい.
Mac でも動かすことが可能だが, 2017/09/12 現在で blockchain の size は 130 GB 程度あり, 自分の Mac では容量的な不安がある.

https://blockchain.info/ja/charts/blocks-size

そこで, 今回は AWS で動かしてみることにした.

Ubuntu Server を立てる

Bitcoin はほぼ無関係なので読み飛ばし推奨.

AMI として, Ubuntu Server 16.04 LTS を選択し, t2.medium で立てることとした. 現在 $0.047 / hour なので, だいたい月に 3700 円 ($33.84, 110 円 / $) かかる.
また, ストレージとして 300 GB 追加した.

https://aws.amazon.com/jp/ec2/pricing/on-demand/

なお, 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 に追加した公開鍵は以下でも参照できる.

https://github.com/sqrtxx.keys

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"
}

『 Bitcoin 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。