今回は、ブロックチェーンの仕組みを支えている特殊なデータ構造について解説します。※本連載では、アルタアップス株式会社代表取締役CEO 森川夢佑斗氏の著書『ブロックチェーン入門』(KKベストセラーズ)より一部を抜粋し、あらゆる産業にイノベーションをもたらすブロックチェーン技術の基本的な概要とその魅力について解説します。

データの安全性を確認できる「ハッシュ値」の仕組み

ブロックチェーンを支える3つの技術的な特徴として、ブロックチェーンの名前の由来でもある「特殊なデータ構造」と「公開鍵暗号方式」、そして「コンセンサスアルゴリズム」があります。

 

[図表1]ブロックチェーンの3つの技術的な特徴

 

最初にブロックチェーンの名前の由来ともなっている、「特殊なデータ構造」について説明していきます。

 

ブロックチェーンは、ビットコインの場合約10分毎の取引内容のデータをひとつのブロックとしてまとめ、それらを時系列順に並べたものであると説明しました。

 

もう少し詳しく、どのようなデータが入っているのか見ていきましょう。

 

おさらいですが、ブロックの中には、世界中で行われたビットコインの取引のデータ(2017年1月10日17時15分に、Aさんが、Bさんへ1BTC送金した、など)がそれぞれ入っています。そして、その前のブロックデータのハッシュ値、そしてナンスと呼ばれる数値が入っています。

 

まずここでハッシュ値について順を追って説明していきたいと思います。

 

皆さんご存じかもしれませんが、インターネット空間においてはテキストであっても画像であっても、すべてのデータは0と1の組み合わせで表現することができます。

 

つまり、あらゆるデータ(ファイル)は、ひとつの数値で表すことができます。例えば、「いぬ」の場合は「111000111000000110000100111000111000000110101100」となります(文字コードUTF–8の場合)、「ねこ」の場合は「111000111000000110101101111000111000000110010011」となります。これだとややこしいので、以下ではそれぞれ下4桁で表したいと思います。

 

いぬを「1100」、ねこを「0011」とします。

 

次にハッシュ値ですが、これはあるデータ(つまり数値)を、ハッシュ関数と呼ばれる関数で計算した結果を言います。

 

例えば、先ほどの「いぬ」に「5を掛ける」というハッシュ関数(実際はもっと複雑なものですが)を利用した場合、「5500」というハッシュ値に変換されます。ここでもとの数値が「1100」でハッシュ値が「5500」という数値となります。

 

ハッシュ値の特徴として、「ハッシュ値とハッシュ関数の内容がわかっていてもデータの特定が困難」ということがあります。

 

今の例ですと、簡単に「5を掛けている」とわかってしまうかもしれませんが、実際のハッシュ関数はもっと複雑なものです。例えば、ビットコインで利用されているハッシュ関数である「SHA-256」を利用して、「いぬ」のハッシュ値を求めると、「ac780dba391b7b189f56216d0db79c54492f36df4bc683447cfb8061ab645528」となります。

 

さすがにこの値から、もとのデータである「いぬ」を想像するのは難しいでしょう。

 

[図表2]ハッシュ値とは?

 

このハッシュ値は、データの完全性を確認するために利用されます。データの完全性とは、通信を行っている間で、データの改ざんが行われていないかを確認できるようにすることになります。

 

例えば、AさんからBさんに「ねこ」というテキストメッセージを送ったにも関わらず、途中で悪意のある者によって「ぬこ」に変更されてしまう可能性があります。

 

この際に、どのような方法で変更が起きたかを確認するかがポイントです。

 

ハッシュ値は、「異なるデータから同じハッシュ値が得られることは、ほとんどない」という特徴を持っています。

 

仮にもとのデータが改ざんされた場合は、そのデータをもとに計算されたハッシュ値も変わってしまいます。そのため、送られてきたデータのハッシュ値と同じかどうかを確認すれば改ざんがされたかを確認できます。

ブロックに入れたハッシュ値が相互に作用し連鎖する

ハッシュ値の性質については、ご理解いただけたでしょうか。

 

ブロックは取引データやその他のデータがまとまっているものですが、これもひとつの数値で表すことができ、それにハッシュ関数をかけることで、一意のハッシュ値を得ることができます。これが、前のブロックのハッシュ値です。

 

もし、仮に前のブロックに含まれるデータが、少しでも変更されるとハッシュ値自体も変わってしまいます。

 

ここで注目していただきたいのが、前のブロックのハッシュ値が、それぞれのブロックに入っており、入れ子の関係になっているところです。

 

したがって、これらの値は、ブロックの中身が変更されると、それに伴って値も変更されます。

 

つまり、前のブロックのデータが変更されると次のブロックに含まれているハッシュ値の値も変わってしまい、そのブロック自体のデータも変わるため、さらには次の次のブロックに含まれるハッシュ値も変わるということがご理解いただけるでしょうか。

 

このように、あるブロックのデータを変更するとその後のブロックすべてのハッシュ値が変わってしまうのです。それぞれのブロックのデータが、相互に作用し連鎖した構造となっているので、ブロックチェーンという名前の由来になったのです。

 

[図表3]ブロックチェーンのデータ構造(ブロックの中身)

ブロックチェーン入門

ブロックチェーン入門

森川 夢佑斗

KKベストセラーズ

ここ1年でブロックチェーン技術を取り巻く社会は、大きく変化しました。 連日、ニュースの見出しにブロックチェーンおよびビットコインという言葉が踊っています。しかし、その一方で、ブロックチェーンという言葉が独り歩き…

人気記事ランキング

  • デイリー
  • 週間
  • 月間

メルマガ会員登録者の
ご案内

メルマガ会員限定記事をお読みいただける他、新着記事の一覧をメールで配信。カメハメハ倶楽部主催の各種セミナー案内等、知的武装をし、行動するための情報を厳選してお届けします。

メルマガ登録
会員向けセミナーの一覧