ブロックチェーン入門:マークル・ルートとは

ブロックチェーンにおいてはそれぞれブロックが繋がっており、そのそれぞれのヘッダーがそれぞれポインターの役割をしてます。

それぞれのブロックにはそれぞれのトランザクションが入ってますね。

ビットコインクライアントのデータの場所を見るとめっちゃデータのあるダイレクトリがありますがそれです。

ヘッダーには以下が入ってます。

1.前のブロックのハッシュ

2.nonce

3.Merkle Root ハッシュ

新しいヘッダーはその一つ前のヘッダーにポインターしてます。

この1の前のブロックのハッシュが、その1つ前のブロックのヘッダー全部を指してるんですね。

なのでヘッダーが変われば、その上にある新しくいるブロックの「1:前のブロックのハッシュ」も変わってしまいます。

「3:Merkle Rootハッシュ」は、

ブロックに何かしらの変更があった時にその影響を受ける対象と思ってもらえばいいです。そしてMerkle Rootはトランザクションで構成されたハッシュ木の根であり、1ブロックに入っているトランザクション達の代表者です。

トランザクションはハッシュ木のアルゴリズムによって繋がれて行きます。繋ぎ方はダブルハッシュ何ですが、詳しくはリンクを参照してください。

ヘッダーに全てのトランザクションを入れたブロックをつなげますか?

そんなことしたら数が膨大です。重くなります。多すぎです。

なのでつなげまくってでた最終的な結果、Merkle Rootだけをヘッダーに入れ込みます。

要は

「全部のトランザクションいちいち確認できるかよw 代表者よんでこい! Merkle Rootだよ!んでそいつとノンスと前のハッシュ入れてブロック繋げろ!」

ってことです。

SPVは、この全部のトランザクションをチェックしなくてもいい、つまりヘッダーだけを検証しているので早いんですね。