火星链 火星链
Ctrl+D收藏火星链
首页 > 波场 > 正文

NBS:以太坊阶段式同步:重构完全同步模式(Full Sync)

作者:

时间:1900/1/1 0:00:00

阶段式同步(staged sync)重构自 Go-Ethereum 的完全同步模式(full sync),以实现更好的性能。

阶段式同步需要进行大量读写操作。虽然我们的目标是能够在机械硬盘上同步节点,但是我们仍建议使用固态硬盘。

顾名思义,阶段式同步需要依次执行 10 个阶段。

Turbo-Geth 客户端会向每个对等节点了解该节点的 HEAD 区块(即最新区块),然后依次执行每个阶段、寻找本地 HEAD 区块和对等节点的 HEAD 区块之间缺失的区块。

第一个阶段(下载区块头)会设置本地 HEAD 区块。

各阶段会按顺序执行。在每个阶段执行期间,只有节点本地的状态达到目标状态,该阶段才会结束。

也就是说,在理想情况下(没有出现网络中断、应用没有重启等问题),每个阶段只需执行一次,即可完成初始同步。

最后一阶段结束后,整个同步流程会重新开始,寻找新的区块头下载。

V神:ZK-Rollups或成为以太坊主要Layer 2解决方案:8月8日消息,以太坊联合创始人Vitalik Buterin在ETHSeoul演讲时预测,ZK-Rollups将在以太坊Layer2扩容之战中击败Optimistic Rollups,比如用户不需要7天的等待期。Vitalik Buterin指出,ZK-Rollups在将资金移入和移出主网时速度更快,这可能会导致更广泛地采用。从现在起的10多年甚至更久,我预计Rollups基本上都将会是ZK。ZK-Rollups的EVM兼容性正在开发当中,Vitalik Buterin补充道,我们实际上已经能看到zk-EVM几乎准备好实现与以太坊交易一起进行扩容,这太棒了。(the block)[2022/8/9 12:10:54]

如果你在两个阶段之间重启应用,应用会从第一阶段开始重启。

如果你在某个阶段执行期间重启应用,应用会从当前阶段开始重启,以完成该阶段。

通过下方的饼状图,我们可以看出每个阶段的耗时占比(这些都是从完全同步中得出的数据)。虽然这些数据并不精确,但是足以作为参考。

以太坊L2网络总锁仓量为39

动态 | 以太坊DApp数量稳步增长 游戏类交易额下降70%:据链塔DApp数据分析,10月29日至11月4日,链塔DApp行业指数BDI以25结束,环比下降79%。

以太坊DApp总数为1091个,环比增长25个;一周交易额为9.71万ETH(约为1.39亿元),环比增长7.29%;一周平均日活跃用户数为11383,环比下降2.53%。

EOS DApp总数为146个,环比增加10个;一周交易额为5956万EOS(约为22.48亿元),环比增加20.06%;一周内平均日活跃用户数为81854,环比增长0.38%。

BDI指数降幅较大与以太坊上交易市场类、游戏类、竞猜类DApp交易额降幅较大有关,与10月29日相比,11月4日以太坊上交易市场类、游戏、竞猜类DApp交易额分别下降48%、69.51%、43.47%。[2018/11/5]

通过 ETL 进行预处理

在将数据插入数据库之前,一些阶段会使用我们的 ETL 框架根据键值对数据进行排序。

动态 | ConsenSys推出以太坊生态激励计划:据ambcrypto消息,区块链公司ConsenSys的首席营销官Amanda Gutterman最近在Twitter上发布该公司宣布Devcon4的拨款计划。Joseph Lubin宣布,如果他们在以太坊生态系统内开发的项目,如基础设施,可用性,互操作性,研究等,那么将获得50万美元的奖励。[2018/11/3]

这样就可以极大减少数据库写入放大(write amplification)的情况。

因此,当我们生成索引或者说哈希值化状态(Hashed State)时,我们会执行一个多步骤流程。

将处理过的数据写入位于数据目录的几个临时文件中;

然后使用一个堆栈(heap)把临时文件中的数据插入到数据库中,并且使按照能够最小化数据库写入放大现象的顺序插入数据。

这种优化有时会将写入速度提高几个数量级。

每个阶段都包含两个函数,分别是向前推进阶段的ExecFunc 和向后回退阶段的 UnwindFunc。

从理论上来说,部分阶段可以离线工作,但是当前版本并未实现这一功能。

阶段 1 :下载区块头

在这一阶段,我们会下载本地 HEAD 区块和对等节点的 HEAD 区块之间的所有区块头。

这一阶段是 CPU 密集型的,适合使用多核处理器,因为要验证区块头的工作量证明。

由于区块链重组,大多数回退都是在这一阶段开始的。

这一阶段会推动本地 HEAD 的指针(指向更新的区块)。

阶段 2 :区块哈希值

从区块头中抽取出一个从区块哈希值映射成区块号(blockHash -> blockNumber)的索引表,以支持更快速的查找功能,并让同步过程对机械硬盘更为友好。

阶段 3 :下载区块体

在这一阶段,我们会将上一阶段已下载区块头的区块体也下载下来。

这一阶段需要保持良好的联网连接。绝大多数数据都在这一阶段下载。

阶段 4 :复原发送者

这一阶段会复原出并存储每个已下载区块中的每笔交易的发送者。

这一阶段同样是 CPU 密集型的,适合使用多核处理器。

这一阶段不需要联网。

阶段 5 :执行区块

在这一阶段,我们会执行之前下载的所有区块中的每一笔交易。

需要注意的一点是,在执行区块的过程中,我们不会验证根哈希,甚至不会创建默克尔树。

这一阶段是单线程的,无需联网,需占用大量磁盘空间。如果区块执行失败,可以回退该阶段。

阶段 6 :计算状态根

这一阶段会构建默克尔树,并验证当前状态的根哈希。

这一阶段也会构建中间哈希值(Intermediate Hashes),并将它们存储到数据库中。

如果之前没有存储任何中间哈希值(这种情况可能在第一个初始同步期间发生),这一阶段会构建出完整的默克尔树及其根哈希。

如果数据库中没有中间哈希值,这一阶段就会利用区块的历史记录来弄清楚哪些哈希值已经过时,哪些哈希值是最新的,然后使用最新的哈希值来构建部分默克尔树,只重构过时的哈希值。

如果根哈希无法匹配,就会向后回退一个区块。

阶段 7 :生成哈希值化状态

在执行期间,Turbo-Geth 使用无格式状态存储(Plain state storage)。

无格式状态(Plain State):在标准状态(我们称之为 “哈希值化状态”)中,账户和存储项的地址是 keccak256(address) ,但是在一般状态中,二者的地址就是 address 。

尽管如此,为了确保一些 API 能够正常运作并与其它客户端保持兼容,我们也会生成哈希值化状态。

如果哈希值化状态不是空值,我们会查看历史记录变更集(History ChangeSet),并且只更新已更改的项。

这个阶段不需要联网。

阶段 8、9、10 :生成索引

同步期间会生成 3 个索引。

这 3 个索引可能会被禁用,因为所有 API 都不使用它们。

交易查询索引

该索引表由从交易哈希值到区块号的映射构成。

账户历史索引

该索引存储了从账户地址到区块列表(在这些区块中,该账户的状态有了更改)的映射。

存储历史索引

该索引存储了从存储项地址到区块列表(其中,该存储项在一定程度上有了更改)的映射。

在这一阶段,我们会启动交易池或更新其状态。例如,如果我们已下载的区块中包含了某些交易,就把这些交易从交易池中移除。

在回退时,我们会将被回退的区块中的交易重新添加到交易池中。

原文链接:

https://github.com/ledgerwatch/turbo-geth/tree/master/eth/stagedsync

作者: Alex Sharov

翻译&校对: 闵敏 & 阿剑

标签:BSPSTANBS以太坊bspt币未来前景BitStationnbs币未来价格以太坊币怎么挖矿

波场热门资讯
比特币:金色趋势丨以史鉴今 BTC将迎来月线级别主升浪?

比特币的VWAP指标是成交量加权平均价格,是实现价格(MVRV)的替代工具,用于确定市场为每个单位支付的平均价格.

1900/1/1 0:00:00
DEF:金色观察 | DeFi圈地运动波及CEX 它还能走多远?

DeFi热仍在继续。截至发稿时,根据Debank数据显示,DeFi 总锁仓量达128.08亿美元,上线仅7天的Sushiswap锁仓量已达15.14亿美元.

1900/1/1 0:00:00
比特币:比特币最近的下跌并非没有一线希望

过去几天,比特币的价格波动越来越大。然而,尽管最近有所下跌,比特币仍然能够保持在1万美元的关键关口之上.

1900/1/1 0:00:00
区块链:金色观察丨福布斯:加密钱包数据显示比特币处于“牛犊”阶段

金色财经 区块链8月26日讯? 自从七月底上涨之后,比特币在八月份似乎并没有太多惊艳表现。在过去的几周时间里,比特币价格一直在反复尝试突破12000美元阻力位,目前价格区间基本上停留在11800.

1900/1/1 0:00:00
RAN:给通知书盖上“信任戳” 蚂蚁链联合EMS溯源高校录取通知书

开学在即,各大高校的录取通知书已经陆续投递到考生手中。为了避免录取通知书造假或者冒名顶替等问题发生,中国邮政EMS开始尝试用区块链的新技术解决信任难题.

1900/1/1 0:00:00
BTC:8.29晚间行情:高抛低吸 踩准节奏

文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当.

1900/1/1 0:00:00