大石哲之 (著)『ビットコインはどのようにして動いているのか? ビザンチン将軍問題、ハッシュ関数、ブロックチェーン、PoWプロトコル』を読みました。
本書は2016年6月に購入して一読していたのですが、最近ぼくの中で、再度ビットコイン熱が湧いてきて、もう一度基礎からみっちり勉強したいと思うようになりました。
2017年はたくさんのアルトコインが投機的に扱われて、仮想通貨ブームが起きました。
現在は仮想通貨バブルは鎮静し、本来の仮想通貨の価値が広まっていく期待感があります。
ビットコインのシステムは2009年に動き出してから、一度もダウンしたり、改ざんされることなく、取引を記録し続けています。
ビットコインのシステムは、中央のない、自律して動くコンピュータネットワークの集合体です。
ぼくはこのシステムに美しさを感じます。
だから、もっとビットコインを深く勉強して、関わっていきたいと思いました。
ビットコインがどう動いているかについて本書から学んだことをまとめてみます。
ビザンチン将軍問題を解決した
ビザンチン将軍問題とは、コンピュータの分散ネットワーク(P2Pネットワークという)が、いかに正しい一つの合意を得るかを考える問題です。
ビザンチン帝国では、帝国を構成していた複数の将軍たちを管理する主体が存在せず、将軍間での合意形成が困難であったという物語に例えてこのような名称で呼ばれています。
嘘をつく将軍がいて合意ができないように、ネットワークの中に壊れたコンピュータがあったり、通信が切れたりすることで、合意ができなくなります。
ビットコインは、ブロックチェーンという仕組みに、プルーフオブワーク(PoW)というインセンティブを組み合わせることで、合理的に正しいデータが記録され続けることを可能にしました。
ハッシュ関数とは
ビットコインのブロックチェーンは、複数の取引をまとめたブロックというデータを、チェーン状に一方方向に伸ばしていき、ブロックとブロックの間を強固に関連付けることで、改ざんができないデータベースを構築しています。
ブロックを次のブロックに関連付けるときに、ハッシュ関数という関数を使います。
使われているハッシュ関数はSHA256といい、256という数字は2進法で256桁数を出力するという意味です。
通常は16進法で表記されます。
SHA256には以下の2つの特徴があります。
・一方向性
結果を計算するのは容易ですが、結果からの逆算が不可能です。
逆算するためには、一個一個総当たりで計算をしていくしかありません。
その確率は10の78乗分の1で、分母は地球上の全原子の数という天文学的な数字です。
そこに複数の文字列を入れると、64桁の16進法ハッシュ値が出力されます。
短い文字列であろうが、長い文字列であろうが、必ず64桁の数値が出力されます。
小文字を大文字に変えただけで、まったく違うハッシュ値が出力されます。
逆算不可能という理由が体感できます。
・衝突体制
1つのハッシュ値のもとになる代数は1つだけです。
異なる値を入れて、同じハッシュ値が得られることはありません。
マイニングとは
互いにハッシュ値で関連付けられたブロックチェーンのデータを1文字でも変えた場合、それ以降のハッシュ値がすべて変わってしまうので、現状に辻褄を合わせるためには、それ以降のハッシュ値をすべて計算し直さなせればなりません。
しかし、ハッシュ値の計算は前方向の場合は容易であり、あっという間に計算し直すことができてしまいます。
これをできないようにするための仕組みがProof of Workという、コンピュータバワーを要する計算です。
ハッシュ値の結果の先頭部分に0が複数個並ぶように、ブロックデータにnounceというパラメータを加えて、計算を行うというものです。
ハッシュ値は逆算ができないので、nounce値を総当たりで代入して、結果を見つけるという計算になります。
この結果を見つけることをマイニング(採掘)と呼びます。
10分程度でマイニングが完了するように難易度が設定されています。
1つのブロックのハッシュ値計算に10分もかかるということは、過去のデータを改ざんして、現在のハッシュ値に辻褄を合わせるのは事実的に不可能と言えます。
悪意のあるデータ改ざんを防ぐ経済的インセンティブ
マイニングに成功すると、自分のアドレスに新たなビットコインを送付することができます。
これが、電力を要する計算を行うインセンティブです。
もし、あるマイナーが全体の計算能力の51%以上のパワーを持った場合、そのマイナーが有利な、悪意のある二重支払いデータの入ったブロックをマイニングして、取引を正当にすることが可能になります。
ビットコインのブロックチェーンに、同時に複数のブロックが作られた場合、そのあとに続くブロックが長い方を採用するというルールがあるからです。
しかし、多くのマイナーが参加している現状では、51%のパワーを持つことが現実的に不可能であることと、仮に51%のパワーを持った場合でも、正当にマイニングをして新たなビットコインを得たほうが経済的メリットがあるという経済合理性によって、悪意のあるマイニングが起こらないような仕組みになっています。
(注)しかし、2018年中にいくつかの規模の小さいアルトコインで51%攻撃が行われました。
まとめ
ビットコインが動く仕組みについて、再度学び直しました。
ハッシュ関数の一方向の計算しかできないという特徴を用いて、計算競争を行うことで、P2Pの合意を達成できているということがとても興味深いいです。
また2009年から今まで、一度もデータが改ざんされずに動き続けているビットコインのブロックチェーンはすごいと感じました。