加上 EIP-2930,不会对任何合约流程造成破坏 并且能够在不造成破坏的前提下进一步调整 gas 成本 2021 年 4 月 15 日,这两个 EIP 都在 Berlin 升级中被激活了。 开发工作Peter 在 2019 年 10 月提出的解决方案是「动态状态快照」 (dynamic state snapshots)。 快照是用于以平面格式存储以太坊状态的辅助数据结构,在 Geth 节点的实时操作期间,可以完全在线构建。快照的好处在于充当状态访问的加速结构:
快照的缺点在于原始帐户和存储数据实际上是重复的。对于主网来说这意味着将占用额外的 25GB SSD 空间。 动态快照的概念从 2019 年中就已经发轫,起初的目的主要是推动快照同步的实现。当时 Geth 团队在忙于许多「大项目」。
然而,最终决定将快照的优先级排到最前,将其他项目暂时搁置。这为后来的 snap/1 同步算法奠定了基础,并于 2020 年 3 月合并。 随着「动态快照」功能的发布,我们有了一些喘息的空间。如果以太坊网络受到攻击,那将是痛苦的,是的,但是至少有可能通知用户启用快照。完整生成快照将花费大量时间,并且当时尚无法同步快照,但是网络至少可以继续运行。 总结2021 年的三月到四月,snap/1 协议在 geth 客户端中实现了,使得通过新的基于快照的算法进行同步成为可能。虽然仍不是默认的同步模式,但这是很重要的一个步骤,使快照不仅可用作攻击防护措施,并且对于用户来说也是一项重要优化。 在协议方面,柏林升级于 2021 年 4 月完成。 以下是在我们的 AWS 监控环境中制定的一些基准:
大致的数据显示柏林升级能够将攻击的效率降低 5 倍,快照能够将其降低 10 倍,总计将影响降低了 50 倍。 我们估计目前在主网 (15M gas),对于未使用快照的 geth 节点来说,有可能创建执行时间在 2.5-3 秒的区块。对于非快照节点来说,随着状态增长这个数字会持续恶化。 (责任编辑:admin) |