代码走读(第一篇)---ethereumj之Repository快照功能

这是《代码走读》的第一篇,这个系列用于记录阅读一些项目源码的过程。

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

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

旧的所有状态保留,通过旧的stateRoot找到原来的MPT,因此可以实现开头所说的根据块hash找到对应的世界状态。

参考:

9 声望
1 粉丝
0 条评论
推荐阅读
《底层到底做了什么》--- mybatis-plus的一次select调用过程
使用mybatis-plus创建db mapper,只需要写一个接口继承BaseMapper,比如示例中的EntityMapper。 {代码...} 本文将解释在底层一次select调用是怎么完成。 主要包括以下几个部分:核心类及包容器初始化Mapper bean初...

一句话阅读 266

从0系列(第一篇)---NFT平台的底层关系及注册流程
nft的价值不在现实世界而在区块链和虚拟世界。nft的平台,功能在nft内容审核,替内容创造者生成区块链上证明也就是nft,价值在在流量,流量带来的信用凭证。

一句话1阅读 2.4k

4EVERLAND | AWS月度明星计划(一月):新年最好的开始
MSP I 的最后一个月,即 MSP I January,现在可以申请了!我们很高兴看到本月将有哪些项目脱颖而出!在 MSP I 的最后一个月,4EVERLAND 将与我们的合作伙伴一起努力,努力得出一个好的结论。

4EVERLAND社区阅读 545

封面图
EIP1559与传统Gas定价模型转账逻辑
传统的gas定价模型(Txn Type===0) {代码...} 伦敦硬分叉EIP1559(Txn Type===2) {代码...} 外部签名 {代码...}

米花儿团儿阅读 436

使用 4EVERLAND 将您的 Damus 配置文件存储到 IPFS/Arweave
挑战Twitter的去中心化社交应用Damus已登陆App Store。它是第一个使用名为Nostr的开放式去中心化社交网络协议的移动应用程序,该协议由 Twitter 联合创始人 Jack Dorsey 资助,该协议基于加密密钥对。Damus 的出...

4EVERLAND社区阅读 328

封面图
劳动分工
比如一个以狩猎或者游牧为生的部落中,某一个人可以比其他人更快速熟练地制造弓箭,而他经常用制造的弓箭和同伴换取鹿肉,最后发现,相比于自己狩猎,这种交换的方式自己获得的利益更大。

zxl20070701阅读 311

9 声望
1 粉丝
宣传栏