ブロックチェーンはどうやって繋がってるのか

ブロックチェーンとは何かシリーズです。

ブロックチェーンは、複数のブロックが連なっていて、その繋ぎ方が上手いため、特に古いデータの改ざんが非常に困難、あるいは事実上不可能な状態を作り出せます。

以下、ビットコインを例に説明します。

ブロックの簡単な構造

ブロックは、大きくヘッダ部とボディー部に別れています。ボディー部にはトランザクション情報、すなわち、コインを誰から誰に幾ら送付したかに関する情報が記録されています。この情報を如何に改ざんされない状態で持ち続けることができるのか、というのが重要な課題です。

ブロックのヘッダは一つ前のブロックのハッシュ値を持っている

次に、ヘッダ部について、ここがポイントです。

ヘッダ部には、一つ前のブロックのハッシュ値が格納されています。

ハッシュ値とは、以前解説したように、入力データを要約した値です。入力データが少しでも変わると、ハッシュ値は非常に大きく変化します。すなわち、前のブロックが少しでも変わると、自ブロックのヘッダの値が大きく変化します。

この、自ブロックが前ブロックの影響を受けているというのが、大切なポイントです。

ある位置のブロックに変更があったら、そのブロックのハッシュ値も変わります。よって次のブロックのヘッダが変わります。するとそのブロックも全体のデータが変更される訳ですから、その次のブロックも・・・という具合に、最新のブロックまで影響が及びます。

つまり、100個まえのブロックにあるトランザクションを改ざんしようとしたら、そこから最新に至るまでの99個のブロックを再生成しないと、チェーンに矛盾が生じてしまいます。

このことから、ブロックは古くなれば古くなるほど、改ざんが困難になる、つまり信頼性が高くなると考えることができます。これは地層に例えられることがあります。地表は風や雨の影響で変化しやすいですが、深くなればなるほどその姿は保持され、固まってゆきます。

以上より、ブロックは前のブロックのハッシュ値によって繋がっている、と言えます。

ブロックのハッシュ値にはとても計算量を要する

ブロックのデータをただハッシュするだけであれば、計算は一瞬で完了します。すると、誰もが改ざんしたブロックチェーンを容易に作ることができてしまい、そこに記録されているトランザクションが信頼できません。

そこで、ビットコインの仕組みでは、ハッシュ値の計算をするにはするのですが、ある条件を満たすようなハッシュ値をみつけるという計算をします。これは目の数が数億とか、数千億とかあるサイコロを、そのなかの1つの目がでるまで振り続ける行為に似ています。

計算の難易度(サイコロの目の数)は、ハッシュ値がおおよそ10分間に1回見つかるようになるよう、自動で調整されます。ビットコインネットワーク参加者がほどほどの計算能力しか持たないのであれば、ほどほどの難易度になり、高い計算能力を持っていたら、そのぶん難易度も上がります。

報酬

ハッシュ値を見つけた者には、コインによる報酬が与えられます。このコインは造幣局が五百円玉を新規発行するように、ビットコインネットワークで新たに発行されたコインです。この報酬目当てに、マイナー(マイニングをする人たち)は莫大な計算量をつぎ込みます。

ちなみに、ハッシュ値をみつけたことにして、不正なブロックを生成したとしても、他のノードによる検証で、そのブロックは拒絶されてしまいます。マイナーたちは下手なことをするよりも、定められたルールに従っているほうが経済合理性が高いため、ネットワークが安定して維持されやすいといえます。