做网站之前的前期公司简介模板免费word简易
2026/4/16 19:47:23 网站建设 项目流程
做网站之前的前期,公司简介模板免费word简易,wordpress主页布局,南昌企业网站建设北京大学肖臻老师《区块链技术与应用》公开课第 15 讲的主题是**“以太坊的状态树” (The State Tree)**。 这一讲深入到了以太坊的底层数据结构#xff0c;解释了以太坊是如何在区块头中存储“全网状态”的。这节课是理解以太坊“世界计算机”本质的关键#xff0c;因为它解…北京大学肖臻老师《区块链技术与应用》公开课第 15 讲的主题是**“以太坊的状态树” (The State Tree)**。这一讲深入到了以太坊的底层数据结构解释了以太坊是如何在区块头中存储“全网状态”的。这节课是理解以太坊“世界计算机”本质的关键因为它解决了**“如何高效存储和验证海量账户状态”**的难题。以下是本课内容的结构化详细总结一、 核心问题如何存储状态在上一讲中我们知道以太坊采用账户模型 (Account-based)系统需要维护一个巨大的映射MappingAddr State (Balance, Nonce, CodeHash, StorageRoot)我们需要一种数据结构来存储这个映射并满足以下苛刻要求高效查找与更新状态随着每个区块都在变化必须能快速修改。Merkle Proof 支持轻节点需要能验证某个账户的余额而不需要下载全网状态。持久化与历史溯源需要能回滚到任意一个历史区块的状态。二、 方案演进推导 (Evolution of Data Structures)肖老师按照“提出方案 - 发现问题 - 改进方案”的逻辑进行了推导1. 哈希表 (Hash Table)思路直接用哈希表存状态。缺陷虽然查找快但在构建 Merkle Proof 时非常困难。如果把所有账户哈希成一个根每次修改一个账户都要重新计算整个哈希树效率极低。2. 直观的 Merkle Tree思路将所有账户数据排序后构建一个标准的 Merkle Tree。缺陷插入代价大如果有新账户创建插入到数组中间会导致后面的数据全部移动整棵树大部分都要重构。非确定性如果没有严格排序包含相同数据的树可能有不同的 Root Hash。3. Trie (前缀树/字典树)思路使用账户地址Address作为路径一位一位地向下查找。优点局部更新修改一个账户只影响该分支的哈希值不影响其他分支。有序性无论插入顺序如何只要数据集合相同构建出的 Trie 结构是唯一的Determinism。缺陷效率低以太坊地址是 160 位40 个 16 进制字符会导致树的高度非常高40 层。稀疏绝大多数路径是空的浪费存储空间。4. Patricia Trie (压缩前缀树)改进如果某个节点只有一条路径比如 “app” 下面只有 “apple”就将路径压缩合并。效果降低了树的高度提高了效率。三、 终极方案Merkle Patricia Trie (MPT)以太坊最终采用的是MPT结合了 Merkle Tree 的加密验证功能和 Patricia Trie 的路径压缩功能。1. 三种节点类型为了实现压缩和分支MPT 设计了三种特殊的节点结构Leaf Node (叶子节点)表示路径的终点。包含[剩余路径, 账户值]。Extension Node (扩展节点)用于路径压缩就像高速公路。包含[共享路径, 下一个节点的哈希]。Branch Node (分支节点)用于分岔就像十字路口。包含[0-F (16个分支), Value]。因为以太坊使用 16 进制所以每个节点最多有 16 个孩子。2. 状态存储逻辑Key账户地址的哈希值Sha3(Address)。为什么不直接用 Address为了防止黑客构造特定地址让树变得极度不平衡DoS 攻击。Value账户状态的 RLP 编码Balance, Nonce…。数据库虽然逻辑上是一棵树但物理上这些节点都是以Key-Value对的形式存储在 LevelDB 中的。四、 状态树的特性 (Properties)1. 根哈希 (Root Hash)每个区块头里包含一个Root字段。这个 Root 是当前时刻全网所有账户状态构建出的 MPT 的根哈希。防篡改只要状态有一丝变化Root 就会彻底改变。轻节点验证轻节点只存 Block Header可以通过向全节点请求 Merkle path 来验证某个账户的余额。2. 状态共享 (Data Sharing)问题每个区块都生成一个新的 MPT数据量会不会爆炸机制不会。因为大部分账户在两个相邻区块之间是不发生变化的。新区块的 MPT 只是新建了那些“发生变化”的节点分支未变化的部分直接指向前一个区块的旧节点。这使得以太坊的状态历史像一个“增量文件系统”。五、 代码树与存储树 (Code Storage Trie)除了全局的状态树 (State Trie)每个账户内部还有两个重要的属性CodeHash如果账户是合约代码本身是只读的。代码被存储在数据库中账户里只存代码的哈希。StorageRoot如果合约里有变量比如mapping (address uint) balance这些变量会构成另一棵 MPT称为存储树 (Storage Trie)。这个树的根哈希保存在账户状态里。 核心逻辑图解 (MPT 结构)为了让你直观理解 MPT 如何运作请看下图MPT优势路径前缀: A路径前缀: 3路径: 1路径: 5Block Header: State RootBranch Node: 分岔口Extension Node: 共享路径 BCLeaf Node: 终点Branch Node: 分岔口Leaf Node: 账户 ALeaf Node: 账户 B逻辑上有序密码学安全路径压缩高效 总结第 15 讲的核心在于理解MPT (Merkle Patricia Trie)。它是以太坊的“脊梁”完美平衡了效率查找快、安全可验证和存储成本数据共享。所有的交易执行、状态变更最终都体现为这就这棵巨大的 MPT 树上的节点更新。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询