关于以太坊:ethereumj代码走读之Repository快照功能

96次阅读

共计 433 个字符,预计需要花费 2 分钟才能阅读完成。

ethereum 有个 replayBlock 性能,就是将块放到指定的世界状态中,从新执行一次,获取执行后果。
这个性能依赖于可能取得指定块高时的世界状态,具体就是依据块 hash 获取块所在的 Repository 快照。

这个性能是依赖于世界状态的存储形式,具体来说就是账户的状态的存储形式。账户以叶子节点的模式存储在 merklePatriciaTree(MPT)中,每个账户有个地址作为节点 key,账户详情作为 value,所有的账户节点形成一个 MPT。MPT 的 root 每笔交易执行完后,账户发生变化,从新结构一个节点。这个节点所在整条 TreePath 也将从新结构,这条 TreePath(新)与原来的 MPT 连贯,复用没有批改的数据,并生成新的 stateRoot(这部分要依据参考中图了解)。

旧的所有状态保留,通过旧的 stateRoot 找到原来的 MPT,因而能够实现结尾所说的依据块 hash 找到对应的世界状态。

参考:

  • https://ethfans.org/toya/arti…
正文完
 0