はじめに
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
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