4.Proof of Workとブロックの改ざん対策
前述した、計算しないことには新規ブロックを追加できないという仕組みは、Proof of Workと呼ばれており、1997年にAdam Back氏が、HashcashのDoS攻撃対策として考案したものです。
ブロックを追加するためには、条件を成立させる以外に方法が無く、改ざんや嘘のデータが格納されたブロックを追加するにも、計算をする必要があるわけです。
学術的にはProof of Workの弱点を指摘する研究発表も存在しますが、理論上は、稼働している計算機資源の51%を上回らない限り、改ざんを成功させることは困難であるとされています。
例えば、下図のブロックN-3の時点で、あるノードが、改ざんデータが含まれたブロックの新規追加を試みたとします。
しかし、改ざんしようとしているノードよりもネットワークに所属しているノードが多いため、当然新規ブロック追加に必要な計算は先に終わって、次々とブロック追加が進んでしまいます。
ブロックチェーンネットワークではもっとも長いブロックチェーンが正しいと判断されるため、改ざんデータを含むブロックを追加しようとしたら、もっとも長いブロックチェーンを超えるだけの計算量が必要となるのです。
また、現在はProof of Workを採用したものが圧倒的に多いのですが、ゼロ知識証明を利用したProof of stakeなども考案されています。
5.ハッシュ木によるブロック内データの改ざん検知と検証の仕組み
ハッシュ木は、ファイルシステムのZFSや、Gitなどのソースコード管理システムでも使われている馴染みの深いもので、その名前の通りツリー構造にハッシュ値を格納して高速に探索や改ざん検知ができます。
下図のように、データはデータ自身の改ざん検知用のハッシュを生成し、これをハッシュ木に格納します。例えば、図のTX2のデータが改ざんされた場合、TX1とTX2のハッシュ1は異なる結果になり、当然Rootのハッシュも異なる結果になり、改ざんが判明します。
ハッシュ木によるブロック内データの改ざん検知と検証
また、Rootのハッシュのデータと、必要最低限のツリーデータがあれば、あるデータがブロックに含まれていること改ざんされていないことが検証できます。