目的
この記事では、ハッシュがどのようにブロックを結びつけ、トランザクションの正当性を証明するために使われるのかについて、詳しく説明します。
前提条件
概要
ブロックチェーンでブロックを連鎖させるためには、次のブロックとその前のブロックを明白に結びつける識別子が必要であり、これを実現する数値が「ハッシュ」と呼ばれるものです。ハッシュには、「次のハッシュ」と「前のハッシュ」があり、「次のハッシュ」は、それぞれ現在のブロックのナンス、トランザクション、前のハッシュを考慮に入れて、それらをすべてアルゴリズムに通して、データの蓄積を表す非常に長い数字を作成します。ハッシュはブロックのデータを複素数の形でまとめたもの、と考えることができます。現在のブロックの「前のハッシュ」は、前ブロックの「次のハッシュ」と同様となります。
これにより、あるブロックの概要 (次のハッシュ) が次のブロックの始まりとなり、「前のハッシュ」として書き込まれる仕組みとなり、この方式を使うことで、ブロックが書き込まれた後は、ブロックのどの部分にも変更を加えることが不可能となります。例えば、1つのトランザクションを+1.00から+1.01に変更するだけでも、現在のブロックの「次のハッシュ」は完全に変更され、次のブロックの「前のハッシュ」と一致しなくなります。ブロックチェーンはこの設計により、完全不変な状態を維持し、チェーンにアップロードする前にネットワークによりブロックの正当性が確認されることを可能にしています。ハッシュは、0x0000...のような特定の数字列で始まる「署名済み」とみなされる場合もあり、これを実現するためには、別の種類のナンスを計算し、指定された数列で始まる「次のハッシュ」を生成する必要があります。詳しくは、こちらの記事をご参照ください:ナンスとは