Bitcoinのtestnetに接続するため、githubからBitcoinのソースコードをダウンロードします。
$ git clone https://github.com/bitcoin/bitcoin.git
$ cd bitcoin
ビルドする前に、README.mdやINSTALL.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用の設定ファイルを作ります。
testnet=1
maxconnections=4
port=18333
daemon=1
server=1
rpcuser=username
rpcpassword=password
rpcallowip=127.0.0.1
rpcport=18332
testnet=1とすることでtestnetに接続することを明示します。portやrpcportのポート番号は、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