現在のEthereumでは、
Merkle Treesを作成するためには、
次に、複数(基本的には2個)のLeaf Nodeをまとめた上で再度ハッシュ化を行います。
このようにして作成したLeaf Node、Branch Node、Root Hashの集合体がMerkle Treesと呼ばれるデータ構造です。「Trees」
Merkle Treesの利点のひとつとして、
Ethereumに用いられている「Merkle Patricia Trie」は、Merkle Treesに用いられているLeaf Node、Branch Nodeの2種類のNodeに加えて「NULL」「
Ethereumは合計で4つのMerkle Patricia Trieを利用しています。それぞれの名称と、
- State Trie
- アドレスごとのETH残高やトランザクション数、
スマートコントラクトコードやstorageRoot( 後述するStorage TrieのRoot Hash)が保存されたMerkle Patricia Trie
- アドレスごとのETH残高やトランザクション数、
- Transaction Trie
- トランザクションに関するデータ(送信元や送信先、ガス代など)
が保存されたMerkle Patricia Trie
- トランザクションに関するデータ(送信元や送信先、ガス代など)
- Receipts Trie
- トランザクションの実行に関する詳細データ(
イベントログや実行ステータスなど)が保存されたMerkle Patricia Trie
- トランザクションの実行に関する詳細データ(
- Storage Trie
- スマートコントラクトのデータが保存されたMerkle Patricia Trie
ここまではMerkle Patricia Trieの仕組みや利点について解説してきましたが、
ブロック生成者以外のクライアントがステートを持たずに検証を行
Leaf Nodeの検証に必要となる情報は、Merkle Treesにおいて「Proof」と呼ばれています。
しかし前述したように、Merkle Patricia TrieはBranch Nodeで16個のNodeをまとめてハッシュ化するような仕様
このような欠点から、Merkle Patricia TrieのままではProofをブロック内に含めることができな
ここで必要となるのがVerkle Treesです。Leaf Nodeの検証に必要となる情報は、Verkle Treesにおいて「Witness」と呼ばれており、
今回はVerkle Treesを解説する前に、前提となるMerkle Patricia Trieの仕組みや利点、そして欠点について説明しました。
過去のイーサリアム技術解説
アカウント・アブストラクション(AA)特集
・ウォレットのUXを向上させる、Account Abstractionとその近況(第1回)
・ウォレットのUXを向上させる、Account Abstractionとその近況(第2回)
・ウォレットのUXを向上させる、Account Abstractionとその近況(第3回)
・ウォレットのUXを向上させる、Account Abstractionとその近況(第4回)
ダンクシャーディング特集
・レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第1回)
・レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第2回)
・レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第3回)
ステートレスクライアント特集
・Ethereumにおける真の分散化を目指す、ステートレスクライアントとVerkle Trees(第1回)