How Blockchain Works

MITが【blockchain.mit.edu】で公開している動画 “How Blockchain Works”(英語)を解説します。

Kanta Shimada
8 min readFeb 11, 2020

動画の中の講師は、MITメディアラボでブロックチェーンを教えているアンダース・ブラウンワース教授。Blockchain Demo というシミュレーションを用いて、ブロックチェーンを構成する重要な技術をピックアップし、1つずつ説明しています。

ブロックチェーンの概念のみを解説しているWebサイトや参考書と異なり、ビジュアルデモとともに一連の流れを追うことができるので、とても分かりやすい内容となっています。(元の動画はこちら)

今回は、この動画に少し私なりの説明を加えて “How Blockchain Works” について紹介していきたいと思います。

1. ハッシュ(暗号化技術)

まず、このセクションでは「データ」「ハッシュ」という2つの要素が出てきます。データとハッシュ値は対応しています。データ内に入力した情報に応じて、ハッシュにはランダムな文字列が反映されます。たとえデータ内に情報がなくても、たとえ入力情報が1文字でも100文字でも、それらに応じて出てくるハッシュ値の桁数は同じ長さです。

例えば、左のようにデータ内に何も入力しなかった場合、「データがない」という情報がハッシュに反映され、ハッシュ値は「e3b0…」となります。この時のハッシュ値はこの長さです。

続いて、データ内に「anders」と入力すると、「anders」という情報がハッシュに反映され、「19ea…」というハッシュ値が出てきます。値は異なりますが、長さは上記と同じです。

このようにデータに対応したハッシュ値が決まっており、回数やタイミングに関係なく、同じデータを入力すれば全く同じハッシュが出てくるのです。このデモでは、SHA256(しゃにごろ)というハッシュを使っていますが、使用するハッシュによって出てくる値の桁数は異なります。

ハッシュ値を出すためのハッシュ関数は不可逆的な一方向関数なので、出てきた値の結果を見るだけでは、データ内に入力された情報は分かりません。この暗号化技術がブロックチェーンの匿名性に繋がっています。

2. ブロック

上記のデータとハッシュの関係性を少し拡張したのがブロックです。ここでは、要素として「ブロック」「ナンス」が新たに加わります。ただ、「ブロック」「ナンス」「データ」に入力された情報がハッシュに反映されるという原則は変わりません。

また、このセクションでは「マイニング」という行為も発生します。

例えば、左のようにブロック#1・ナンス「72608」・データ「」という場合、これらの情報に対応するハッシュ値は「 0000…」になります。これは3つの要素がこの状態である時のみに出てくるハッシュ値になります。

試しにデータに「hi」と入力すると、データにある情報が変更されたことで、それに対応するハッシュ値は「8043…」になりました。これは元の値と異なるため無効と判断され、背景も緑から赤く変わります。

そこで登場するのが「ナンス」です。

ナンスの数字を変更することで、データ内に「hi」という情報を含みながら、ハッシュ値を「0000…」とすることが可能になります。

試しに、データ内を「hi」のままナンス値に「1」と入力してみると、出てくるハッシュ値は「327a…」となります。

続いて、ナンス値に「2」と入力してみると、ハッシュ値は「ffde…」になります。

このようにナンス値を変更しながら様々な値を模索していくと、どこかでハッシュ値が「0000…」になる時がきます。この一連の行為が、鉱山から宝を探し当てるほど困難なことから「マイニング」と名付けられました。

このデモでは「Mine」というボタンがあり、これを押すと自動的に「0000…」のハッシュ値を満たすナンス値が出てきます。データ内に「hi」という情報を含んだ場合、このハッシュ値を満たすナンス値は「59396」だったようです。

3. ブロックチェーン

前セクションのブロックがいくつも繋がったのがブロックチェーンです。そしてこのセクションで加わるのが、時間の要素です。

新たに加わった「Prev:」の欄には、1つ前のブロックに書かれているハッシュ値が入っています。ブロック#1のハッシュ値「000015…」はブロック#2のPrev:に、ブロック#2のハッシュ値「000012…」はブロック#3のPrev:に入るという訳です。

ではここで、ブロック#5のデータ内に「hi」と入力したらどうなるでしょうか?ひとつ前のセクションで説明した通り、ハッシュ値が変更され無効となり、ブロックの背景は赤色に変わります。

次に、ブロック#4のデータ内に「hi」と入力してみます。すると、#4と#5のブロックがいずれも無効になってしまいます。これは#4のハッシュ値が#5のPrev:に反映されているためです。

このように1つのブロックの情報が書き換えられると、それ以降のブロック全てが影響を受け無効になってしまうのです。これはたとえ該当ブロックのマイニングを行なっても、その次のブロックのPrev:に書かれているハッシュ値と異なるため、無効となったブロック全てのマイニングを行わない限り認められません。

4. P2P(Peer to Peer)・コンセンサスアルゴリズム

次に説明するのは、個々の端末(Peer)が全く同じブロックチェーンのコピーを持っているという状態です。この状態の下、それぞれが互いに信頼し合うことで成立するネットワークをP2Pといいます。

P2Pのネットワークには、ブロック・ナンス・データ・ハッシュ、全ての要素において全く同じ情報を持った端末(Peer A, B, C…)がいくつもあります。

ここで、1つの端末(Peer B)のデータを書き換えてみます。

ブロック#4のデータ内に「hi」と入力するとハッシュ値が変更され、ブロック#4と#5が無効になってしまいます。

すると、

この端末(Peer B)はこの状況を修正するためにマイニングを行います。その結果、背景は緑色に戻ります。

ここまでは前述の通りです。

しかし、このセクションでは、全ての端末(Peer)が同じ情報を持っていました。たとえ1つの端末(Peer B)が情報を書き換えてそれをマイニングしたとしても、ブロック#5を見ればその他の端末(Peer A, C)とハッシュ値が異なることは明らかです。そのため、データの変更が加えられた端末(Peer B)の情報は認められません。

このようにP2Pネットワーク上で多数決の原則に基づき、合意形成を行う仕組みを「コンセンサスアルゴリズム」といいます。そして、これらがブロックチェーンの透明性不変性(改ざん不可能)に繋がっています。

ここまでがブロックチェーンのコアに当たる部分です。基本的に上記の内容がブロックチェーンを語る上で必要な要素全てを網羅しています。

まさに “How Blockchain Works” です。

しかし、このままではあまり現実味がありません。動画では、「データ」の内容を「トランザクション」とした上で、ブロックチェーンを通した簡単な金融取引のモデルも紹介しています。

詳しくはMITのこちらのWebサイトをご覧ください。

--

--