ビットコインのブロックには数千件の取引が含まれることがありますが、ブロックヘッダーはわずか80バイトです。これほど小さなデータだけでブロック内のすべての取引を「ロック」できるのは、マークルツリーのおかげです。

各$BTC ブロックのブロックヘッダーには、そのブロック内のすべての取引に対応するマークルルートが記録されています。現在 82,966.68(24時間で +1.36%)。

▍どんな木?

マークルツリーは、大量のデータを2つずつハッシュ化し、階層ごとに上へまとめていくツリー構造です。最下層には各取引のハッシュが並びます。隣り合う2つのハッシュを連結して再びハッシュ化すると、その上の層ができます。これを繰り返し、最後に残る1つのハッシュがマークルルートです。

この構造は、暗号学者ラルフ・マークル(Ralph Merkle)の名前にちなんで名付けられました。1970年代後半にはすでに提案されており、ブロックチェーンよりずっと前から存在しています。

▍なぜ改ざんできないのか

ビットコインのブロックヘッダーにはマークルルートが記録されています。ブロック内の取引が一つでも改ざんされると、そのハッシュが変わり、その変化は上へと伝わってマークルルートも変わります。ブロックハッシュも変わるため、後続のブロックと整合しなくなります。

つまり、ブロックヘッダーにあるこの一つのハッシュを確認するだけで、ブロック内のすべての取引を確認できるのです。

▍ライトウォレットはどうやって取引を検証するのか

ある取引が特定のブロックに含まれていることを証明するのに、ブロック全体は必要ありません。その取引からマークルルートまでの経路上にある、少数のハッシュだけで十分です。取引数が2倍になっても、必要なハッシュは一つ増えるだけです。数千件の取引があるブロックでも、十数個のハッシュで足ります。

ビットコインのホワイトペーパー第8節で説明されている簡易支払い検証(SPV)は、このように機能します。ライトクライアントはブロックヘッダーだけを保存し、ノードからマークルパスを一つ受け取れば、取引がブロックに取り込まれたことを確認できます。

▍準備金証明での活用

取引所の準備金証明にもマークルツリーが使われています。プラットフォームはすべてのユーザーの残高からマークルツリーを作成し、ルートハッシュを公開します。各ユーザーは自分の残高に対応するパスを受け取ることで、ほかの人の明細を公開せずに、自分の残高が計上されているかを検証できます。

▍最後に

マークルツリーの考え方はとてもシンプルです。短いルートハッシュ一つで、大量のデータを代表させます。この設計があるからこそ、スマートフォンのウォレットや準備金証明といった仕組みが実現できます。情報は複数の情報源を照らし合わせてから判断し、一人の話だけを鵜呑みにしないようにしましょう。

皆さんはどんな場面でこれを理解しましたか?