上級者用語を調べる
マークルツリーとは
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 5 分
結論
マークルツリーは、たくさんの取引をハッシュで段階的にまとめ、最後の1つの値(マークルルート)に圧縮する構造です。ブロック全体をダウンロードしなくても、特定の取引がそのブロックに含まれることを少ないデータで検証できます。スマホの軽量ウォレットが成り立つのは、この仕組みのおかげです。
要点
- 多数の取引を1つのハッシュ値に集約する木構造
- ブロックヘッダにはマークルルートだけが入る
- 1件の取引の存在を対数個のハッシュで証明できる
- 取引を1つ書き換えるとルートが必ず変わる
定義
データをハッシュ化し、2つずつ組にしてさらにハッシュ化する操作を繰り返して、頂点に1つの代表値を作る木構造。頂点の値をマークルルートと呼ぶ。
ビットコインのブロックには数千件の取引が入ることがあります。これを1件ずつハッシュ化し、隣り合う2つをつないでさらにハッシュ化する、という操作を上に向かって繰り返すと、最後に1つの値が残ります。これがマークルルートで、ブロックヘッダに記録されるのはこの32バイトだけです。
ある取引がブロックに含まれることを証明したいとき、必要なのは経路上の兄弟ハッシュだけです。取引が1000件あっても10個程度のハッシュで足り、ルートと一致すれば含まれていると確認できます。軽量ウォレットはブロックヘッダとこの証明だけを受け取り、取引本体をすべて持たずに着金を確認します。
ハッシュ関数の性質上、取引の金額や宛先を1バイトでも変えると、その上の層がすべて変わり、最終的にマークルルートが変わります。ルートはブロックヘッダに入り、ヘッダのハッシュは次のブロックから参照されているため、過去の取引を差し替えるとそれ以降のブロックがすべて破綻します。
注意点
- · マークル証明が示すのは「そのブロックに含まれること」だけで、そのブロックが正しい鎖の上にあるかは別に確認が必要
- · 軽量ウォレットはブロック内の全ルールを検証していないため、フルノードほどの独立検証はできない