在以太坊的底层技术架构中,“树”(Tree)结构扮演着至关重要的角色,它们如同数据的“骨架”,支撑着状态存储、交易验证和轻节点同步等核心功能,以太坊并非只有一种树,而是通过三种核心树结构协同工作,构建起高效、安全且可扩展的数据网络,本文将详细介绍这三种树:Merkle Patricia树(MPT)、Merkle树(MT) 和 Bloom过滤器树(Bloom Filter Tree),解析它们的原理、作用及在以太坊生态系统中的具体应用。
Merkle Patricia树(MPT):状态与存储的“动态索引器”
Merkle Patricia树(简称MPT)是以太坊中最核心、最复杂的树结构,它是以太坊世界状态(World State)、交易收据(Receipts)和账户存储(Storage)的底层存储引擎,顾名思义,MPT是Merkle树与Patricia Trie(前缀树)的结合体,兼具两者的优势:通过Patricia Trie的高效前缀压缩减少存储空间,通过Merkle树的数据完整性保障快速验证。
核心原理
- Patricia Trie(前缀树):一种压缩前缀树,通过共享公共前缀减少节点数量,特别适合存储键值对(如以太坊中的“账户地址→账户状态”),地址
0x123...和0x125...会共享前缀0x12,避免重复存储。 - Merkle树:将叶子节点(数据块)的哈希值两两组合,计算父节点的哈希值,逐层向上直到根节点(Root Hash),任何数据的修改都会导致根哈希变化,确保数据不可篡改。
MPT结合两者:以Patricia Trie的结构组织键值对,每个节点存储数据或子节点指针,并通过Merkle计算生成唯一的根哈希。
以太坊中的应用场景
- 世界状态(World State):以太坊的全局状态(账户余额、代码、nonce等)存储在一个顶级MPT中,根哈希记录在每个区块的头部,实现状态的快速同步和验证。
- 交易收据(Receipts):每笔交易的执行结果(日志、状态变更等)存储在另一个MPT中,轻节点可通过收据根哈希验证交易是否执行。
- 账户存储(Storage):每个智能合约的存储变量(如Solidity中的状态变量)存储在独立的MPT中,根哈希作为账户状态的一部分,实现合约数据的隔离管理。
核心优势
- 动态高效:支持动态增删改查,适合以太坊频繁变动的状态数据;
- 空间优化:通过前缀压缩减少存储节点,降低网络传输成本;
- 不可篡改:根哈希的唯一性确保数据完整性,任何修改都会被节点快速发现。
Merkle树(MT):交易与区块的“信任基石”
Merkle树(Merkle Tree,又称哈希树)是以太坊中最基础、最经典的树结构,主要用于交易数据的打包与验证,与MPT不同,Merkle树的结构更简单,专注于“数据完整性”而非“动态索引”,是区块链“不可篡改”特性的核心保障。
核心原理
Merkle树由“叶子节点”和“非叶子节点”组成:
- 叶子节点:存储单笔交易的哈希值(如
tx1_hash








