03-ETH-状态树

状态

数据结构

  • addr –>state

余额证明

  • 所有账户的哈希表。
  • 构造默克尔树。
  • 余额只是一种状态。
  • 根据哈希值流程验证即可证明,因为根哈希是一定的在某个时间。

哈希表

构造默克尔树

不排序

  • 默克尔书不唯一。

排序

  • 代价太大,新建账户的代价太大。

trie(检索树)

  • 输入不管,结果相同。
  • 更新局部性比较强。
  • 存储有点浪费。

PT压缩检索树

  • 访问效率增加。
  • 新增加点,节点可能需要扩展。
  • 数据稀疏的时候压缩效果好。
  • 以太坊地址足够稀疏,160位。

MPT(默克尔压缩检索树)

  • 哈希代替指针。
  • 进行压缩。
  • 可以证明账户不存在性。

MMPT(修改的默克尔压缩检索树)

  • 以哈希值存储。
  • 根哈希的值存储在块头节点。
  • 合约账户的信息存储也是小的MMPT。
  • 大部分的节点时共享的。

状态树的历史记录的保存

  • 可能需要状态退回。
  • 维护历史记录。
  • 为了支持回滚。

区块头数据结构

  • root:账户状态树的根哈希。
  • TxHash:
  • ReciptHash:

块身的结构

RLP(Recursive Length Profix)

  • 序列化value的值。
  • 只支持字符数组。

03-ETH-状态树
https://prelearn-code.github.io/2024/07/25/BlockChain/ETH/03-ETH-状态树/
作者
prelearn
发布于
2024年7月25日
更新于
2024年8月8日
许可协议