Bitcoin
Ubuntu14.04
testnet

Bitcoinのtestnetに接続する

 Bitcoinのtestnetに接続するため、githubからBitcoinのソースコードをダウンロードします。

$ git clone https://github.com/bitcoin/bitcoin.git
$ cd bitcoin

 ビルドする前に、README.mdINSTALL.mdをよく確認します。これらに直接ビルド方法が載ってなくても、どこかに何か書いてあるはずなのでよく読みます。

 どうやらINSTALL.md によると、doc/build-*.md に環境ごとのビルド方法が記載されている様です。今回はUbuntu14.04なのでdoc/build-unix.md を参照します。まずはドキュメントにあるように、依存関係のあるパッケージをインストールしておきます。

$ sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
$ sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev

For Ubuntu only: db4.8 packages are available here. You can add the repository and install using the following commands:

 さらに上記で示されているようにBerkeleyDB4.8をインストールします。これはPPA

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:bitcoin/bitcoin
$ sudo apt-get update
$ sudo apt-get install libdb4.8-dev libdb4.8++-dev

そしていよいよ本体のビルドに入ります。

$ ./autogen.sh

 ここで次は ./configure を実行するのですが、システム環境汚染を避けるためインストール先をホームディレクトリ以下に指定します。その際、--prefix オプションを使って絶対パスで指定します。

$ ./configure --prefix=/home/username/bitcoin-binary
$ make
$ make install

 make install./configureの時に--prefixオプションで指定したディレクトリにインストールされます。

$ cd /home/username
$ mkdir .bitcoin
$ vi .bitcoin/bitcoin.conf

 ~/.bitcoin/bitcoin.confにtestnet用の設定ファイルを作ります。

.bitcoin/bitcoin.conf
testnet=1
maxconnections=4
port=18333

daemon=1
server=1
rpcuser=username
rpcpassword=password
rpcallowip=127.0.0.1
rpcport=18332

 testnet=1とすることでtestnetに接続することを明示します。portrpcportのポート番号は、mainnetではそれぞれ8333と8332となりますが、あくまで慣例的なものであって、ポート番号だけ変えれば良いというわけではありません。

$ cd /home/username/bitcoin-binary/bin
$ ./bitcoind

 Bitcoinデーモンを起動し、いよいよ世間を賑わすBitcoinの、testnetへの参加です。デーモンを起動したら別の端末でログインするなどして次に進みます。

$ ./bitcoin-cli getblockchaininfo
{
  "chain": "test",
  "blocks": 175406,
  :
  (略)

 ちゃんとtestnetに接続できているか確認してみましょう。
 mainnetに接続していた場合はchainの値が"main"になります。今回はtestnet目当てなので"test"が正常です。まだBitcoinデーモンを起動したばかりなので、getblockchaininfoを呼び出すたびにblocksの値が増えて行くのが確認できます。

$ ./bitcoin-cli stop

 先ほど起動したBitcoinデーモンを停止するには上記の様にRPCクライアントから停止命令を送ります。終了までに少し時間を取る場合がありますが、慌ててbitcoindをkillしないでください。時間を掛けてダウンロードしたブロックチェーンが壊れるかもしれません。

 ところでRPCクライアントであるbitcoin-cliのパラメータについてですが公式APIコールリストに一覧がありますのでそちらをご参照下さい。


 無事、testnetに接続できたので、Bitcoin(testnet)の受け取りアドレスを作ります。

$ ./bitcoin-cli getnewaddress test
2NE9htPKFUKu4c6CMW2A96rPVrguhBiwtuY

 この様にtestnet用のアドレスは頭文字がmainnetとは異なります。1や3がmainnetとなります。今回はtestという名前の口座(アカウント)名で作りました。何も指定しないと無名口座になります。

$ ./bitcoin-cli getbalance test
0.00000000

残高0。作ったばかりなので当然ですね。そこでBitcoin testnet3 faucetでtestnet上のBitcoinを貰いに行きます。

$ ./bitcoin-cli getbalance test
1.77600132

上記のサイトでBitcoinを分けてもらいました。testnetと言えど
BLOCKCYPHERでBitcoinの流れがしっかりと記録されていることが確認できます。


Bitcoin: 1PGrE58W6921iVNTMFPAQGBsiHTx7WmdY2