2016.03.31
ブロックチェーン技術の幕開け
こんにちは、次世代システム研究室のN.O.です。
先日部内の研究発表会でブロックチェーンについての発表を行いましたので内容を共有したいと思います。
私の受け持ちとしてブロックチェーンの概要、またブロックチェーンを語るには欠かせないその発祥となったBitcoinについての説明を行いました。スライドのタイトルには「その未来」とありますが、未来の部分は今回は省略させていただきます。今後、別の機会で発表したいと思います。
イメージしやすいようにブロックチェーンを簡単な図にしたものです。
ブロックの中にトランザクションがこのように複数入ってます。
そこにブロックのヘッダとして前のブロックのヘッダのhashやnonce、マークルルートといったものが入ってます。
これらが一つになってブロックを成し、それらが鎖のように連なっていきます。
おおよそこのような形です。
ブロックのヘッダにはマークル木によって全てのトランザクションから得られるhash(=マークルルート)が入りますのでトランザクションが変わるとヘッダに含まれるマークルルートも変わりますので、結果ブロックヘッダのhashも変わることになります。nonceはProof of Workでは必須ですが、必ずしもブロックチェーンに必要という訳ではありません。
Bitcoinアドレスは公開鍵から生成され、公開鍵は秘密鍵から生成されます。
秘密鍵は256bitのランダムな数値です。
公開鍵は楕円曲線上のスカラー倍算をつかって秘密鍵から生成されます。
Bitcoinアドレスは公開鍵からハッシュ関数、符号化を経て生成されます。
トランザクションには複数のinputとoutputが入っています。トランザクションのhashをキーに前のトランザクションさかのぼっていくことができ、そのBTCの生成取引(coinbase)までたどることも可能です。
hash値は数です。一定の数=difficulty target以下のhash値になるブロックがブロックチェーンに追加できます
difficulty target以下のhash値を得るのは容易ではないですが、検証はhashを1回計算して突合すればよく、簡単です。
hashを変えるには少しデータが変われば良いので、そこでnonceを調整して何回もhashを計算していきます。
nonceは32bitです。hashは時刻によっても変わりますが、現在のdifficulty targetですと1秒でnonceをすべて使い切ってもまだ足りないため、マイナーはcoinbaseトランザクションの中にextra nonceを作成してマイニングしています。
みごとにdifficulty target以下のブロックを生成したマイナーはP2Pにブロックを流します。
Bitcoin Networkに参加しているノードがブロックを検証し、問題なければブロックチェーンに追加して別のノードに転送します。
ブロックを作ったマイナーは報酬を受け取ります(coinbase+fee)
P2PのネットワークにはノードのIP、トランザクションやブロックなどが伝播していきます。
新しいノードがBitcoinネットワークに参加するには他のノードに接続する必要があります。
新しいノードが他のノードをみつけるにはDNSを利用します。digでAレコードを引くとランダムにIPが帰ってくる様子が確認できます。
dig seed.bitcoin.sipa.be @8.8.8.8
まとめ
Bitcoinはいまや世界中の人々が利用するデジタル通貨に成長しましたが、そのブロックチェーン技術を応用したさまざまなフォークが多数出てきており、今後も楽しみな分野です。またBitcoinを支える技術に興味を持たれましたらMastering Bitcoinという素晴らしい書籍がありますのでぜひご覧になってください。
有志の方によって翻訳されたPDFもあります
当研究室SAによる書評です。こちらも良くまとまっていますのでおすすめです。
次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD