数据结构与编码

以太坊会产生、存储和传输大量的数据。

这些数据必须以标准且节约内存的方式格式化,以便任何人都能在相对普通的消费级硬件上运行节点。

为实现这一目的,以太坊协议栈中使用了一些特殊的数据结构。

数据结构

默克尔前缀树

默克尔前缀树是一种数据结构,将给定的键值对编码成具有确定性且经过加密验证的前缀树。

以太坊在其执行层中广泛运用这一数据结构。

详细了解默克尔前缀树

递归长度前缀

递归长度前缀 (RLP) 是一种在以太坊执行层中广泛使用的序列化方法。

详细了解递归长度前缀

简单序列化

简单序列化 (SSZ) 是一种序列化格式。它能够进行默克尔化,因而成为了以太坊共识层主要的序列化格式。

详细了解简单序列化

帕特里夏默克尔树

帕特里夏默克尔树提供经加密认证的数据结构,可用于存储所有 (key, value) 对。

帕特里夏默克尔树完全具有决定性,意味着可以保证具有相同 (key, value) 对的前缀树从第一个到最后一个字节完全相同。

这意味着他们有相同的根哈希值,从而提供强大的 O(log(n)) 级别的插入、查找和删除效率。

此外,与其他更复杂的基于比较的数据结构(如红黑树)相比,它们更容易理解和编码。

参考资料

https://ethereum.org/zh/developers/docs/data-structures-and-encoding/

https://ethereum.org/zh/developers/docs/data-structures-and-encoding/patricia-merkle-trie/