見出し画像

ブロックチェーン入門_#8:ブロックチェーン技術「ハッシュチェーン」 - 順序をはっきりさせる

ブロックチェーンの要素技術の一つで、トランザクションの時間的な順序関係を表すのに役立つ「ハッシュチェーン」とは何でしょうか。概要と特徴を解説します。


ブロックチェーンの基本構造

■ブロックとは? トランザクションとは?

ブロックチェーンはその名の通り、ブロックのチェーン(連鎖)の構造を持ちます。ブロックは送金等の処理(トランザクション)の指示となるデータを複数まとめたものです。ブロックチェーンではそうしたデータのことも簡単に「トランザクション」と呼びます。

トランザクションは「分割できないひとかたまりの処理(アトミックな処理)」です。送金を例にすると、AさんからBさんに送金する処理は、Aさんの残高を減らし、その分だけBさんの残高を増やすことになります。これが途中で止まってしまうと全体の金額がおかしくなってしまいます。そのため、トランザクションは「実行される」か「実行されない」かのどちらかであり、その中間は存在しない必要があります。

■ハッシュチェーンとは? ジェネシスブロックとは?

各ブロックは、直前のブロックの暗号学的ダイジェストを含んでいます。

先頭のブロックは「ジェネシスブロック」とも呼ばれ、直前のブロックがないため、ブロックのダイジェストを含んでいません。

ジェネシスブロックを先頭としてブロックが連なり(チェーンを形成し)、2番目以降の各々のブロックが直前のブロックのダイジェストを格納していることでブロックのチェーンが表現されているというのが、ブロックチェーンの基本構造です。この構造は、ダイジェストが「ハッシュ」とも呼ばれることから「ハッシュチェーン」と呼ばれることがあります。

ブロックには、ジェネシスブロックを0として1ずつ増える番号が付いています。なお、番号自体はブロックに格納されておらず、ブロックの並びから計算して求めます。このブロック番号のことを「ブロック高」と呼ぶことがあります(ブロックが積み上がっていくイメージです)。同様に、チェーンの末端のことを「ヘッド(頭)」と呼ぶことがあります。

ハッシュチェーンの役割

■ブロックやトランザクションを順序づける

ハッシュチェーンには、ブロックがどの順序で作成されたかを明確にする役割があります。前のブロックが作られないと、そのブロックのダイジェストを計算して次のブロックに格納することができません。これにより、ブロックの順序が明らかに定まります。

ハッシュチェーンの構造のおかげで、トランザクションの前後関係がブロックごとに明確になります。一方で、同一のブロックに格納されているトランザクション同士の間の前後関係は、因果関係がない限り、一概には言えません。

■ブロックの順序を皆が認めるための構造

ハッシュチェーンの構造があるおかげで、例えばチェーンの末端のブロックにデジタル署名をすると、チェーン全体に署名したことと同じ意味になります。その後、チェーンのどこであっても、少しでもデータが改変されると、以降のブロックのダイジェストを順々に書き換えていく必要があり、最後のブロックの内容も変わります。そのため、署名が検証できなくなることで、変更があったと分かります。

署名しないまでも、ハッシュチェーンの末端に更にブロックをつなげることは、それまでの順序を肯定したことだと捉えることができます。例えば、Bitcoin(ビットコイン)ではブロックに対する署名はありません。

ハッシュチェーンだけではできないこと

■ハッシュチェーン自体に耐改ざん性はない

しかし、ハッシュチェーンだけではブロックチェーンの耐改ざん性は確保できません。なぜなら、データを改ざんした人は、そこから先のブロックのダイジェストを再計算してブロックをつなぎ直せば、改ざんの跡が残らないようにブロックチェーンのデータを改変できるからです。

仮に100万個のブロックがつながっていたとして、1個のブロックのダイジェストを計算してブロックをつなぎ直す処理に10万分の1秒かかったとします。すると、全体を矛盾なく書き換えるのに10秒しかかかりません。10秒で改ざんできるものに耐改ざん性があるとは到底言えません。

それでは、ブロックチェーンではどのようにして耐改ざん性を実現しているのでしょうか。次の単元「ブロックチェーン技術「プルーフ・オブ・ワーク」 - 改ざんを防ぐ」で解説します。


Web3ポケットキャンパスはスマホアプリでも学習ができます。
アプリではnote版にはない「クイズ」と「学習履歴」の機能もあり、
よりWeb3学習を楽しく続けられます。

ぜひご利用ください
▼スマホアプリインストールはこちら

この記事が気に入ったらサポートをしてみませんか?