マークル木(マークルツリー)とは?ブロックチェーンの根幹技術の一つを徹底解説!

マークル木(Merkle Tree)は、ブロックチェーンの根幹を支える極めて重要なデータ構造です。
膨大な量のデータを効率的かつ安全に検証することを可能にし、ビットコインの初期から現代のLayer2ソリューションに至るまで、あらゆる場所で活用されています。
この記事では、マークル木の基本的な仕組みから、DeFiやNFTにおける具体的な活用事例、さらには次世代技術であるVerkle Treeとの比較まで、図解を交えながら体系的に解説します。
マークル木(マークルツリー)とは?カラーボールに例えて説明
カラーボールで理解するマークル木の核心コンセプト
マークル木の核心的な機能は、「要約」と「検証」の2つです。
と言っても、曖昧でよく分からないと思います。そこで、データをカラーボールに例えて説明しましょう。
今、皆さんの目の前にたくさんのカラーボールが転がっています。その色は赤や青、緑、黄色と色々あり、一つ一つに①、②、③・・・と番号が割り振られています。
さて、ここで一つ質問です。皆さんが、全てのカラーボールが元の状態のまま保全されていること、つまり壊れているところもなく色もそのままであることを確認しなければならないとしましょう。
さてどのように確認するでしょうか?
答えは単純です。
もともと①のボールは何色でどのくらいの大きさなのかを写真に撮って保存しておきます。
すべてのボールの写真を撮り、その写真と実際のボールを比較します。すべてが一致していることを確認すれば万事解決です。
しかし、この方法には一つ問題があります。ボールの数が多くなった時に非常に手間がかかるというものです。
10個くらいなら全然問題なくできます。100個でも根性で何とかなるでしょう。
しかし、カラーボールが1億個あったとしたら、確認の作業だけで一生が終わってしまいます。
そこで、ある賢い人が一つの機械を発明しました。その機械の名前は機械X。
その機械の中に何個でもいいのでカラーボールを入れると一つのカラーボールが出てきます。カラーボールはランダムに出てくるわけではなく、ある法則を満たします。
- 同じカラーボールを入れれば、常に同じカラーボールが出てくる。
- 出てきたカラーボールから、最初に入れたカラーボールを推測することはできない。
- 入れたカラーボールのうち一つでも欠損があったり、色が違ったりすると、全く異なるカラーボールが出てくる。
その機械に赤と青と緑の3つのカラーボールを入れて、結果黒のカラーボールが出てきたとしましょう。
法則1で言っていることは何時どんな状況でも、赤と青と緑のカラーボールを入れると絶対黒のカラーボールが出てくるということです。
{赤、青、緑}→{黒}となることを知っているのはあなた一人だけです。
その他の人は、黒のボールが出てきたからといって最初に何色のボールを何個入れたのかということを推測できません。これが法則2で言っていることです。
緑のボールを白のボールに変えたとしましょう。すると出てくるボールの色は藍色かもしれませんし、ネズミ色かもしれません。法則3で言っているのは、少なくともその色が黒となることは決してないということです。
一億個のカラーボールが目の前にあったとして、機械Xを用いた解決策を考えます。
まず2つ一組のペアを5000万ペア作ります。
そしてペアを機械Xの中に入れ5000万個の新たなカラーボールを生成します。
次には、2500万ペアを作り、機械Xを用いて2500万個の新たなボールを生成します。この操作をカラーボールの数が最後の1個になるまで続けます(総数が奇数だった場合、余ったボールの相方は自身のコピー、レプリカとします)。
最後のカラーボールをRと呼びましょう。
このRを写真に収めておきます。そして検証するときには1億個のボールに対して同じ操作(ペアを作り、機械Xに入れる)を行い、最後に出てきたボールとこの写真を見比べます。
この方法は最初に挙げた原始的な方法よりも圧倒的に手間が少なくすみます。
最後に確認するボールは一つだけでいいのですから。
なぜ、最後のボールだけを確認すればいいのでしょうか?
機械Xの性質3より、一億個のボールのうち一つでも色が違っていたり欠けていたりすると最後に出てくるボールはRと異なります。よって、最後のボールが写真と一致していれば、全部のボールが元の状態のままであると言えます。
最後にこの操作を図にしてまとめると木のような構造をしていることが分かります。それゆえ、このような方法を用いてできた構造をマークル木(マークルツリー)といいます(マークルはこの手法の発明者ラルフ・マークルに由来します)。
以上、マークル木を例えを用いて説明しました。カラーボールをデータに戻して考えます。
マークル木を用いることによって複数のデータを一つのデータにまとめることができます。
その最終的なデータの完備性を確かめれば、そのマークル木を構成するすべてのデータの完備性を確かめることができるのです。
重要なのは、データを要約する過程であり、マークル木では以下の操作が行われます。
- データの断片を2つ1組にする(断片の総数が奇数だった場合、最後の断片の相方は自分自身のコピー)。
- そのペアを組み合わせハッシュ関数という関数に通し、一つの値を出力する。
- 出力された値でまたペアを作り同じ操作を繰り返す。
この操作をデータの総数が一つになるまで続けます。
最終的に残ったデータのことをはマークルルート(マークル木の根っこ)と呼びます。
このマークルルートにデータの断片全ての情報が集約されており、マークルルートを確認することでそのマークルルートを構成するデータの完備性を確認することができます。
以下マークル木の参考図です。合わせてご覧ください。

ハッシュ関数
機械Xは現実の何に対応しているのかここで確認しておきます。
操作2のところで、ハッシュ関数という耳慣れない単語がでてきました。このハッシュ関数なるものが機械Xに当たります。ハッシュ関数の説明をしましょう。
ハッシュ関数とはあるデータが与えられたときにそのデータを代表するような値を返す関数のことで、要約関数とも呼ばれます。また、ハッシュ関数を通して得られた値のことをハッシュ値といいます。得られたハッシュ値でペアを作り、再びハッシュ関数を通すことによって最終的にマークルルートを得ます(難しく言うと再帰的にハッシュ関数を適応するということです)。
マークルツリーで用いられているハッシュ関数は特に暗号学的ハッシュ関数と呼ばれ、通常のハッシュ関数に暗号学的な性質を加えたものです。
その暗号数理的性質は以下の通りです。
- 同じハッシュ値を持つようなデータを作成することはできない。
- ハッシュ値から元のデータを推測することはできない。
- 同じハッシュ値を持つようなデータのペアを作ることはできない。
上記の性質は以下の行為を不可能にしています。
例えば、Hさんがデータを改ざんしようとしたとしましょう。Hさんは周りの人達にバレないように改ざんしなければなりません。つまり、ハッシュ値を変えないようにデータを変えようとするということです。しかし、性質1によりこの行為は不可能です。
次にHさんが元のデータの中身を見るために、マークルルートから本来のデータを復元しようとしたとしましょう。しかし、性質2によりこの行為は不可能です。ハッシュ値から元のデータを推測することは実質不可能だからです。
前述したように、マークルルートを検証することによってデータの完備性を検証することができます。これはハッシュ関数が上記のような性質を持っているからです。
SHA(Secure Hash Algorithm)
最もメジャーなハッシュ関数の一つです。SHAの中にも種類があり、SHA1やSHA2などがあります。SHA1はセキュリティの面で問題があり現在は使われていません。セキュリティ面での問題とは、一定以上の計算能力を費やすと前述の暗号数理的性質を満たさなくなるということです。
例えば、異なるデータから同じハッシュ値が得られてしまったり、ハッシュ値から元のデータを類推することができてしまったりということです。
現在主に使われている関数はSHA2というハッシュ関数です。
ビットコインのアドレス発行の際に使われているハッシュ関数はSHA256です。
マークルルート
マークルルートは、再帰的にハッシュ関数を適応することにより得られるただ一つのハッシュ値です。
この値を検証することによって、データの完備性を確認することができます。例えの中で、最後に出てきたボールRがこれに該当します。
ビットコインでは、元となるデータはトランザクションです。AからBに1BTC送るというトランザクションのBをCに変えた場合、それによってマークルルートが変わり、データに何かしらの変化が加えられたことが即座に分かります。
ところで、マークルルートは一体どこに保存されるのでしょうか?答えは、ブロックヘッダーという場所に保存されています。具体的なことは、「マークル木とブロックチェーン」「マークル木とビットコイン」で説明しますが、このブロックヘッダーのハッシュ値が次のブロックにパラメータとして入ることが、ブロックチェーンの非改竄性の観点から非常に重要です。
マークル木の用途
マークル木の用途には大きく以下の二つがあります。
データの要約と検証です。
データの要約
マークル木を使うことによって、多くのデータを一つのハッシュ値に要約することができます。要約する、つまりマークルルートを求めることでデータ全てを扱う必要がなくなります。
ハッシュ関数には、「どんなに大きなデータを関数に通しても、出てくるデータは常に一定の大きさである」という重要な特徴があります。この特徴を利用することで、膨大なデータを1つのデータにまとめることができます。
データの検証
これがマークル木の最も大きな役割です。データが欠損していたり、データが改ざんされていることをハッシュ値を見ることで一瞬で検知できるのです。全データが元のままであることを知るためには、最後のハッシュ値だけを見ればいいということです。
例えの中で、勘のいい方は気づかれたかもしれません。もしカラーボールが元のままであることだけを確認したいのであれば、一番初めに1億個すべてを機械Xの中に入れてしまうのが一番いいのではないかと。
確かにその通りです。そのほうが圧倒的に処理は少なくて済みます。しかしながら、問題点は最後に得られたボールがRと異なる場合、どのボールに問題があるのかが分からないという点です。これを解決するためにペアを作っているのです。
さて、実際にデータに破損があった時どのデータに問題があるのかどう調べればよいでしょうか?
カラーボールの例えを用いて説明しましょう。1番の番号が割り振られたボール(以降①と呼びます)の色が変えられたとしましょう。1億個のボールの中から①だけに問題があることを検出します。
まず初めに、マークルルートを確認します。①が変わっているので、マークルルートも当然変わっています。
次にその直前の枝(マークルルートを構成する2つのカラーボール)を確認します。
①だけに変化が加えられているのであれば、①が含まれている枝の方のボールは変化しており、一方のボールは変化していないはずです。この操作で変化が加えられたボールを含む枝を判別することができました。
この操作を①のボールにたどり着くまで続けます。これがマークル木を用いた、破損ボール検出の方法です。
さて、この方法を用いると一体どれくらい操作が少なくて済むのでしょうか?
マークル木を用いない場合、当然一つ一つボールを確認していくしか方法はありません。1億個のボールの中から①のボールを見つけ出すために何回試行が必要かを計算します。1回の試行で1個のボールを確認できるとします。
計算すると、期待値(①のボールを引くまでの試行回数の期待値)は約5千万回です。平均して5千万回ボールを引けば①のボールを引き当てられます。
マークル木を用いた場合はどうでしょうか。答えだけ先に示します。log2(100000000)+1です。約27~28回です。
この違いは一目瞭然でしょう。マークル木はそれほど強力な手法なのです。
マークル木の発明
マークル木は、今から40年以上も前の1979年に、暗号技術の分野で著名なラルフ・マークル(Ralph Merkle)によって発明されました 。彼は、現代のインターネットセキュリティの基礎である公開鍵暗号方式の共同開発者としても知られています。
マークルのスタンフォード大学での博士論文「Secrecy, Authentication, And Public Key Systems」の中で、この革新的なデータ構造の概念が初めて提示されました。ブロックチェーンという概念が存在するずっと前に考案されたこの技術が、後のデジタル通貨やWeb3の基盤を築くことになるとは、当時は誰も想像していなかったでしょう。
驚くべきことに、マークル木が発明された当初の目的は、ブロックチェーンのためではありませんでした。その目的は、「ランポート署名(Lamport Signature)」という一回限りの電子署名を効率的に処理することでした 。
ランポート署名は、将来登場するかもしれない量子コンピュータによる解読にも耐えうるとされる強力な署名方式ですが、「1つの鍵で1つの署名しかできない」という大きな制約がありました。ラルフ・マークルは、多数のランポート署名を1つのマークル木で管理し、マークルルートを公開鍵として使うことで、効率的に複数のメッセージに署名する「マークル署名方式」を考案しました 。この先見性のある発明は、現在でも量子耐性暗号の研究分野で注目されています。
ランポート署名について詳しく知りたい方は以下のリンクをクリックして下さい。

マークル木とブロックチェーン
マークル木自体がどんな仕組みなのか理解できたでしょう。
ここからは、ブロックチェーンの中でどのようにブロックチェーンが使われているのか見ていきます。
ハッシュチェーン
いかなる取引においても取引の時間的な前後関係は非常に重要です。
どの取引が先に行われたのかによって、その取引が有効となったり、無効となったりします。インターネット上でどのように時間を参照するのでしょうか?
中央集権的な構造の場合、時間はサーバーから受信します。
UNIX標準時刻とも言われ、この時間を参照して取引の前後関係を定義します。
一方で、分散的な構造の場合、各々が好きなところから時間を参照します。日本にいる人が日本サーバーで見て12時だとしても、イギリスにいる人はイギリスサーバーで見ると3時と言うことになります。つまり、絶対的な時間を定義することができないのです。
そうなると、相対的に定義するしかありません。時間は一切関係なく、ただどの取引がどの取引よりも先に存在するのかを定義するのです。
ここでハッシュ関数を使います。「ハッシュ関数」のところで説明したように、ハッシュ関数では出力値から入力値を類推することはできません。つまり、入力値は出力値以前に存在しているということになります。
上図を見るとわかるように、データ0はデータ1よりも以前に存在し、データ1はデータ2よりも以前に存在します。これで取引の前後関係を定義することができました。
ハッシュ関数を用いてできる上図の構造は一般的にハッシュチェーンと呼ばれます。
ハッシュチェーンからブロックチェーンへ
相対的な時間を定義することができました。しかしまだ問題があります。このネットワークに参加するすべての人間が最新のデータを見れるのかという問題です。
ハッシュチェーンの状態だと、コンピュータの処理能力によってある人は最新のデータを参照できるのですが、ある人はそこに追いつくことができません。
これを解決するものがマークル木です。
マークル木によってデータは要約され、各人が参照するデータの量は圧倒的に減ります。一つのマークル木に含まれるデータはすべて同時刻のモノとして扱われます。またマークル木を使うことで破損データの検出をすることもできます。
このようなハッシュチェーンにマークル木が加わった構造がブロックチェーンの原型と言うことができるでしょう。
マークル木とビットコイン
今度はビットコインを見ていきます。
ビットコインの中で、マークル木はどのように利用されているのでしょうか。
マークル木とSPV(軽量ノード)
ネットワークを構成する要素のことをノードと言います。ノードの中でもいくつか種類があります。分け方によって変わるのですが、今回は参照できるデータの量によって分類します。
1つ目はフルノードです。フルノードは今までのすべての取引情報を保持しており検証することができます。フルノードになるためにはそれだけ多くのデータ容量が必要となるので、簡単にフルノードになることはできません。
それでは、取引の検証をするノードが少なくなってしまいます。
そこで出てくるのが軽量(SPV)ノードというノードです。軽量ノードはブロックヘッダの情報だけを参照できます。「マークルルート」のところで説明したように、ブロックヘッダに中にはマークルルートが含まれています。
SPVノードはマークルルートだけを参照してデータの検証を行います。
しかし、どのデータに問題があるのかまでは特定することができません。
その部分の情報はフルノードに要求します。つまり、SPVノードの検証はフルノードの検証に依存しているのです。
しかし、SPVノードには簡単になることができるので検証するノードがそれだけ増えます。するとネットワークの信頼性がそれだけ増すことと同義です。すべてはマークル木という要約技術があるおかげです。
Web3の世界を動かす!マークル木の実用事例集
マークル木の応用は、ビットコインに留まりません。
現代のWeb3エコシステムでは、DeFi、NFT、Layer2など、あらゆる分野でその力が活用されています。
ケーススタディ①:DeFiの歴史を変えた「Uniswapのエアドロップ」
2020年9月、大手分散型取引所(DEX)のUniswapは、ガバナンストークンであるUNIを約25万のアドレスに一斉配布(エアドロップ)しました。
この大規模な配布を効率的かつ低コストで実現したのが、マークル木を用いた「マークルエアドロップ」です。
従来の方法では、配布者が全てのアドレスに対してガス代を負担する必要があり、コストが膨大になっていました。
しかし、マークルエアドロップでは、配布対象のアドレスリストからマークルルートを生成し、そのルートのみをスマートコントラクトに記録します。
トークンを受け取るユーザーは、自分自身でガス代を支払い、自分のアドレスがリストに含まれている証明としてマークルプルーフを提示することで、トークンを請求します。
この画期的な手法は、その後の多くのDeFiプロジェクトにおける標準的なエアドロップ方式となりました。
ケーススタディ②:NFTブームの裏側「ホワイトリストと限定ミント」
人気のNFTプロジェクトでは、特定のユーザー(初期からの貢献者など)に優先的なミント(発行)権を与える「ホワイトリスト」が広く採用されています。
実はこのホワイトリスト管理にも、マークル木が活躍しています。
数万件にも及ぶホワイトリストのアドレスを全てオンチェーン(ブロックチェーン上)に記録すると、膨大なガス代がかかります。
そこで、Uniswapのエアドロップと同様に、ホワイトリストのアドレスからマークルルートを生成し、それのみをNFTのコントラクトに保存します。
ユーザーはミント時に、自分のアドレスがリストに含まれていることを示すマークルプルーフを提示することで、ミント権を証明します。これにより、BOTによる買い占めを防ぎつつ、公平かつ効率的な限定販売が可能になります。AzukiやMoonbirdsといった多くの有名プロジェクトで、この手法が採用されています。
ケーススタディ3:Ethereumスケーラビリティの鍵「Layer2 ロールアップ」
イーサリアムのスケーラビリティ問題を解決する切り札として期待されているのが、「Layer2 ロールアップ」技術です。
OptimismやArbitrumといったOptimistic Rollupでは、マークル木がその中核を担っています。一方、zkSyncやPolygon zkEVMなどのZK-Rollupでは、マークル木に加えて、より効率的なベクトルコミットメントやKZGコミットメントといった暗号技術も活用されています。
ロールアップは、大量のトランザクションをオフチェーン(Layer2)で高速に処理し、その結果の要約データだけをイーサリアム本体(Layer1)に報告します。Optimistic Rollupでは、この「要約データ」として、Layer2の全ての状態変化をまとめたマークルルート(State Root)が使用されます。
Layer1は、このルートを検証するだけで、Layer2で行われた数千のトランザクションの正当性を間接的に承認できます。マークル木のおかげで、イーサリアムはセキュリティを損なうことなく、処理能力を大幅に向上させることができるのです。
マークル木の進化と未来 ― Verkle Treeとゼロ知識証明
次世代のデータ構造「Verkle Tree」とは?
マークル木の進化は止まりません。現在、イーサリアムの次期アップグレードでは、「Verkle Tree(バークル木)」という新しいデータ構造の導入が検討されています。
Verkle Treeの最大の特徴は、マークル木と比較して「プルーフサイズが劇的に小さい」ことです。
マークル木のプルーフサイズはデータの数に応じて対数的に増加しますが、Verkle Treeでは、木の幅を大きくしつつ、ベクトルコミットメント(Pedersen CommitmentやKZG Commitment)という新しい暗号技術を用いることで、プルーフサイズを大幅に削減できます。
研究によると、Verkle TreeはMerkle Treeと比較して、プルーフサイズを6〜8分の1、場合によっては20〜30分の1にまで削減できるとされています。この技術革新により、ノードの検証負荷がさらに軽減され、より分散化されたネットワークの実現が期待されています。
| 項目 | Merkle Tree | Verkle Tree |
|---|---|---|
| プルーフサイズ | O(log n) × 32バイト | 大幅に削減(6〜30分の1) |
| 検証コスト | 中程度 | 低い |
| 主な用途 | トランザクション検証 | ステート検証(ステートレスクライアント) |
| 使用技術 | ハッシュ関数 | ベクトルコミットメント |
プライバシー技術の核心「ゼロ知識証明(ZKP)」との関係
近年、プライバシー保護とスケーラビリティを両立する技術として注目されている「ゼロ知識証明(ZK-SNARKs/STARKs)」においても、マークル木は重要な役割を果たしています。
ゼロ知識証明とは、「ある計算内容を一切明かすことなく、その計算結果が正しいということだけを証明する」技術です。特にZK-STARKsでは、FRI(Fast Reed-Solomon IOP of Proximity)と呼ばれるプロトコルにおいて、マークル木が中核的な役割を担っています。
具体的には、証明者は多項式の評価値(Reed-Solomon符号語)をマークル木に格納し、そのマークルルートを検証者に送信してコミットメントを行います。
検証者は、多項式の次数が主張通りに低いかを確認するために、ランダムに選んだ位置の値とその認証パス(マークルプルーフ)を要求します。
証明者は要求された部分のみのマークルプルーフを提示することで、全てのデータを公開することなく、多項式の性質を証明できます。マークル木の「少ない情報で検証できる」という特性が、ゼロ知識証明の効率性とプライバシー保護能力を支えているのです。
マークルツリー(マークル木) まとめ
- マークル木はデータを要約・検証するための技術
- マークル木ではハッシュ関数という関数が使われている
- マークル木はSPVノードによる検証で利用される
以上、マークル木の説明でした。データの要約・検証に役立つ非常に興味深い技術だったと思います。
「ブロックチェーンはすごい!」と巷でよく言われていますが、ブロックチェーンはそれ単独で生まれ来たわけではありません。インターネット技術、自律分散システム、暗号技術などそれらがすべて組み合わさってできた技術の総体です。マークル木はあくまでそのうちの一つの要素技術であり、ブロックチェーンを本気で学ぼうとしたら他にも学ぶことが多々あると思います。
以上、大事な点をまとめました。
このような長い記事を読んでいただきありがとうございました。
