ビットコインネットワークに参加するには?【Bitcoin開発入門編】

bitcoin
  1. 導入: Blockchain技術が広がる見解と開発者の入門
  2. 情報の取り方をまとめる
  3. 環境設定を行う
  4. ウォレットを起動する
  5. 今後の方針

1. Blockchain技術の広がりと開発入門

世界中でBlockchain技術に注目が集まっています。Blockchainが技術的に、これまでにないコンセプトを提案し、実現されているからでしょう。ITの歴史を調べてみると、IT業界はハードウエアとソフトウエアの両面で、とても急速に発展していることがわかります。

駆け足で見ていくと、1950年代に企業に大型コンピュータが導入されたことを皮切りに、1970年代にはPCが普及し、1990年代の後半には世界中のコンピュータがインターネットで結ばれました。今年は2017年です。これだけ便利に思われるIT技術も、広く使われるようになってからまだ60年ほどの歴史しかないことに驚きます。

今でこそ、何か調べたいことがあれば、インターネットで検索すれば目的の情報がすぐに見つかるようになりました。しかし、インターネットが普及する以前は、このようなことが当たり前になることなど想像できる人はとても少なかったはずです。

2009年1月、インターネットのプロトコル上に、これまでにない新たなレイヤーが公開されました。ブロックチェーンの誕生です。この新たな技術を、紐解きながらブログに書き溜めていきます。

2. 情報の取り方をまとめる

今回の目的は、Blockchainの開発に入門するところまでとします。取得したソースコードをコンパイルして、生成した実行ファイルを起動するまでを行います。これは、様々な暗号通貨、さらに機能を拡張したBlockchain2.0などに技術的な目線を広げていく第1歩として、まずは世界中の取引量が最大のBitcoinで見ていきます (*1)。

BitcoinのソースコードばGithubで公開され、誰でもすぐにダウンロードして中身を変更することができます。

まずは情報の取り方です。最新の情報は開発元のWebサイトやブログ、PRで公開されるので、ここでは基本的なWebサイトをおさえておきます。この1年の間にBlockchain技術に関する多くの書籍が出版されました。書籍で学ぶのが好みであれば書籍を探すのも良いでしょう。1年前までと比べて状況がだいぶ変わったことを実感します。

コアコミュニティのWebサイト:
https://bitcoin.org/ja/

開発ドキュメント: 開発を行うために必要な情報が整理されています。
https://bitcoin.org/en/developer-documentation

ソースコード: 現在開発中のソースコード
– Bitcoin Core(https://github.com/bitcoin/bitcoin

また、Bitconの取引の状況を確認する方法もおさえておきます。

Block Explorer: アドレスに紐づく取引と、その取引の状態を確認できます。
https://blockexplorer.com/

マーケット情報: 為替市場の規模などの情報を確認できます。
https://coinmarketcap.com/

3. 環境設定を行う

Githubのbitcoin/bitcoinがC++で書かれているので、C++でビルドする環境を作ります。
ビルドの手順は、Githubのbitcoin/bitcoinにある ”doc/build-osx.md” に書かれているので参考にします。

はじめに、開発環境を整えます。

今回の私は、後述の「既存の環境」の状態からスタートしました。そこで不足しているツールをインストールして、ソースコードのダウンロードに移っていきました。この記事を読んでいる方々は各々が個別の状態からスタートするので、不足しているツールをインストールしてください。

既存の環境を確認する

  • 機種: Macbook Pro (Early 2015)
  • OS: OS X El Capitan (v10.11.6)
  • 既存の開発環境: HomeBrew, Bash, Source Tree

開発環境をインストールする

– autoconf, automake, berkeley-db4, libtool, boost, miniupnpc, openssl, pkg-config, protobuf, qt5, libevent

最新のソースコードをダウンロードする

Githubに自分のアカウントでログインし、bitcoin/bitcoin を検索する。bitcoin/bitcoin のソースコードをcloneする
タグのリストから最新版のタグ名を確認する。最新版のタグ名を指定してソースコードをcheckoutする。

ソースコードからビルド

  1. ソースコードをcheckoutしたディレクトリへ移動する。
  2. シェルでautogen.shを実行する。
  3. シェルでconfigureを実行する。
  4. シェルでmakeを実行する。

Bitcoinのソースコードのcheckoutからウォレットのビルドまで、2時間ほどで完了しました。最新版のソースコードを使いましたがコンパイルエラーやリンクエラーが起こることはありませんでした (v0.13.2)。時間がかかったのは、ツールのインストールやソースコードのcheckoutに関する箇所です。

4. ウォレットを起動する

今回ビルドしたBitcoin QTはフルノード型のウォレットです。そのためウォレットを初めて起動する時に、ビットコインのブロックチェーンとの同期が始まります。ブロックチェーンを全て保持するためにストレージに65GB以上の空き容量が必要です(*2)

画面表示

ウォレットを起動するとWindowが開き、ウォレットの画面が表示されました。ブロックチェーンの同期中は残高と取引履歴に警告マークが表示されています。この同期が完了するまでに丸3日間かかりました。同期が完了すると残高と取引履歴の警告表示が消えて利用できるようになりました。

データ

メニューの “Help > Debug Window” でデバッグ用の様々な情報を確認することができます。特に、ウォレットファイルが作成されたディレクトリも記載されています。このウォレットファイルから、管理している情報やウォレットの復元などを調べていくことができそうです。

5. 今後の方針

今回、ソースコードからウォレットをビルドするところまでを実施しました。これを基礎に、今後は複数の観点からの紐解きを行ってきます。例えば下記のようなことをしていきます。

Bitcoinのプロトコルを紐解く
– トランザクション、ブロックのデータ形式を見る
– ネットワークトラフィックを計測する

Bitcoinのアプリケーションを紐解く
– ウォレットを複製する
– ウォレットを暗号化する
– 別の型のウォレットをビルドする
– 型別のウォレットを比較する
– 他のプログラムから任意の取引を機械的に行う

などを行っていきます。
(参考資料)

コアコミュニティのWebサイト: https://bitcoin.org/ja/
ソースコード: 現在開発中のソースコード https://github.com/bitcoin/bitcoin
*1 Crypto Currency Market Capitalizations https://coinmarketcap.com/ を参照 (2017年1月現在)
*2 Bitcoin Core のWebサイト https://bitcoin.org/ja/download の記載を参照 (2017年1月現在)

この記事をシェアする:
About 石黒 友啓 1 Article
ブロックチェーンやビットコインを扱ったアプリケーション開発を行うSE。