"Mastering Bitcoin"によりビットコインの基礎中の基礎を学んだので、次にブロックチェーンをより実践的に触ってみたいと思い、以下の書籍を購入した。
ブロックチェーン・プログラミング 仮想通貨入門 (KS情報科学専門書)
- 作者: 山崎重一郎,安土茂亨,田中俊太郎
- 出版社/メーカー: 講談社
- 発売日: 2017/08/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 目次
ツールの導入
bitcoin-cli というツールを使うため、ビルドを行った。Ubuntu 16.04 LTSを使用している。
まずは必要なパッケージの導入だ。これをさぼると、例えばGUI版のインストールが行われない。
$ sudo add-apt-repository ppa:bitcoin/bitcoin
$ sudo apt update
$ sudo apt-get install -y libdb4.8-dev libdb4.8++-dev
$ sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev
$ sudo apt-get install libboost-all-dev
$ sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
$ sudo apt-get install libqrencode-dev autoconf openssl libssl-dev libevent-dev
$ sudo apt-get install libminiupnpc-dev
次に、GitHubから bitcoin ツールのダウンロードとビルドを行う。
$ clone https://github.com/bitcoin/bitcoin.git $ cd bitcoin/ $ git checkout v0.16.0 $ ./autogen.sh $ ./configure $ make -j4 $ sudo make install
設定ファイル bitcoin.conf の記述
Bitcoinには2つのネットワークがあるらしい。
- testnet : 開発や実験のためのネットワーク。testnetで取引されるビットコインには価値がない。
- mainnet : 実際に送金を行うことができるネットワーク。mainnet で取引できるビットコインには価値がある。
怖いので、もちろん testnet を使用する。以下のような設定ファイル bitcoin.conf
を作成し、 ${HOME}/.bitcoin/
に配置した。
testnet=3 # use testnet txindex=1 # make index, reference transaction ID server=1 # accept command rest=1 # enable REST interface rpcuser=ユーザ名 # JSON RPC username rpcpassword='パスワード' # JSON RPC password rpcport=18332 # JSON PRC port number (testnet)
次に、bitcoin-cliを使って情報を取得してみる。書籍では、bitcoin-cli getinfo
を使っているが、今回使用した v0.16.0 ではコマンド名が変わっている。
$ bitcoin-cli getinfo error code: -32601 error message: getinfo This call was removed in version 0.16.0. Use the appropriate fields from: - getblockchaininfo: blocks, difficulty, chain - getnetworkinfo: version, protocolversion, timeoffset, connections, proxy, relayfee, warnings - getwalletinfo: balance, keypoololdest, keypoolsize, paytxfee, unlocked_until, walletversion bitcoin-cli has the option -getinfo to collect and format these in the old format.
例えば、bitcoin-cli getblockchaininfo
を実行してみる。
$ bitcoin-cli getblockchaininfo { "chain": "test", "blocks": 0, "headers": 418000, "bestblockhash": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "difficulty": 1, "mediantime": 1296688602, "verificationprogress": 5.536704525417526e-08, "initialblockdownload": true, "chainwork": "0000000000000000000000000000000000000000000000000000000100010001", "size_on_disk": 293, "pruned": false, "softforks": [ { "id": "bip34", "version": 2, "reject": { "status": false } }, { "id": "bip66", "version": 3, ...
ネットワークノードの接続状態を確認してみる。8ノードと接続され、安定している。
$ bitcoin-cli getconnectioncount
8