お手軽にVPSでBitcoinフルノードを立ち上げる方法


はじめに

testnetで手っ取り早くVPSでビットコインのフルノードの立ち上げ方をまとめてみました。フルノードを立ち上げて何に使うかですが私は今はLightning Networkの一つであるc-lightningを動かして遊んでます。

ブロックチェーンを触ってで感じるのはトランザクションがマイニングされないと確定しないこと。マイニングは定期的に実施されてるが確定まで時間がかかること。キャンセルという概念がないこと。あたりでしょうか。触って感じて慣れていきましょう。

全体の流れ

  • VPSの選択
  • OSの選択
  • bitcoindのインストール
  • bitcoin.confの設定
  • その他の設定
  • トランザクションデータの同期
  • ビットコインの入手方法

VPSの選択

トランザクションデータを保存するためストレージ容量が多少必要なので安くてそこそこストレージ容量が選択でき、Ubuntuが選択できるサービスを選択しました。

カゴヤのOpenVZ 
現時点(2018/03)で200GBあればmainnet(本番環境),testnet(テスト環境)どちらでも使えます。メモリも1GBあれば動かすことは十分出来ます。
https://www.kagoya.jp/cloud/vps/price/#price2

一番安いHDDモデルを選択。

OSの選択

Ubuntuがエラーなくインストールできるようです。CentOS、Debianだとエラーが出て自分のスキル不足で対処できなかったけどUbuntuだと問題なくサクッと出来ました。

bitcoindのインストール

インスタンス作成時にダウンロードしたログイン用認証キーのパスを指定してssh接続します。rootでログインしているので必要に応じてユーザー作成してください。

ssh -i ログイン用認証キーのパス/認証キーファイル名.key root@IPアドレス

接続したら以下を実行してインストールします。デフォルトで入ってないcurlコマンドのインストールも実施します。

$ apt-get update
$ apt-get upgrade
$ apt-get install curl
$ curl https://bitnodes.earn.com/install-full-node.sh | sh

以下のメッセージが出てインストール完了となります。2018/06/23時点ではbitcoindはVer 0.16.0がインストールされます。

If this your first install, Bitcoin Core may take several hours to download a full copy of the blockchain.

Installation completed!

bitcoin.conf設定

bitcoindが起動時に読み込む設定ファイルです。これを環境に合うよう~/.bitcoin/bitcoin.confを編集します。

bitcoin.confのデフォルト設定

listen=1
bind=0.0.0.0
port=8333
maxconnections=64
upnp=1

dbcache=64
par=2
checkblocks=24
checklevel=0

disablewallet=1

rpcbind=127.0.0.1
rpcport=8332
rpcallowip=127.0.0.1

今回はtestnetに接続する設定にします。デフォルト設定を削除して以下のみ記述してください。

listen=1
testnet=1
maxconnections=16
maxmempool=100

細かい設定をしたい場合はbitcoin.confの自動作成サイトを参考にしてみてください。
https://jlopp.github.io/bitcoin-core-config-generator/

その他設定

portの設定

testnetなのでportは18333が使えるようにします。mainnetの場合は8333になります。
ufwコマンドもインストール。

$ apt-get install ufw
$ ufw allow 18333
$ ufw enable
$ ufw reload
$ ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
18333                      ALLOW       Anywhere
18333 (v6)                 ALLOW       Anywhere (v6)

PATHの設定

PATH設定してbitcoind,bitcoin-cliを使いやすくします。
~/.profileに記述

PATH="$PATH:/root/bitcoin-core/bin"

PATHを有効にする。

$ source ~/.profile

トランザクションデータ同期

bitcoindの起動
testnetで3~4時間、mainnetだと1日弱トランザクションデータの同期にかかるので同期されるまでしばらく待ちます。

$ bitcoind -daemon

ブロックの現状確認
エクスプローラのブロック高と比較して同期が終わってるか確認してください。

testnet用エクスプローラ
https://test-insight.bitpay.com/

bitcoin-cli getblockchaininfoで現在の状況を確認してください。

$ bitcoin-cli getinfo
{
  "deprecation-warning": "WARNING: getinfo is deprecated and will be fully removed in 0.16. Projects should transition to using getblockchaininfo, getnetworkinfo, and getwalletinfo before upgrading to 0.16",
  "version": 150100,
  "protocolversion": 70015,
  "walletversion": 139900,
  "balance": 3.79987325,
  "blocks": 1287262,
  "timeoffset": 0,
  "connections": 14,
  "proxy": "",
  "difficulty": 1,
  "testnet": true,
  "keypoololdest": 1518262030,
  "keypoolsize": 2000,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": "Warning: unknown new rules activated (versionbit 28)"
}

bitcoindの終了

$ bitcoin-cli stop

今回のVPSは最低限のリソースで設定しているのでインストールが終わったらVPSサーバーを再起動すると限られたリソースで構築してるのでリソースが開放されて安定するようです。再起動後はBitcoinCoreを再度起動させてVPSのコンソールでリソースの状況を確認してみてください。

ビットコインの入手方法

最初にビットコインアドレスを取得します。

$ bitcoin-cli getnewaddress
2MwXnASptwmqs9Y1b7jbkuaRM3g16S6eJ3D

次にtestnet用に無料でビットコインを発行してくれるサイトで取得します。
https://testnet.manu.backend.hamburg/faucet

取得したビットコインアドレスを入力してGive me some coinsボタンをクリックします。

トランザクションID(TX ID)が表示されるのでマイニングされ確定するまで待ちます。

マイニングされるとtestnet用エクスプローラで0.65BTC入手できたことが確認できます。

念のためウォレットの残高を確認すると0.65BTCになってます。

$ bitcoin-cli getbalance
0.65000000