以太坊核心开发者会议更新:柏林升级、伦敦升级、上海升级
本系列文章旨在总结核心协议开发的进展,以便以太坊社区更好地理解与消化。“AllCoreDevs 更新” 系列可以说是“核心开发者会议视频&文字记录” 以及我的推特总结的姐妹篇。
希望我的总结可以将核心开发者们正在讨论的问题分享给以太坊社区更广泛的人群中,因此更多人可以了解以太坊社区正在发生什么;并对其进行反馈;甚至贡献自己的解决方案。
摘要
柏林硬分叉已在测试网中上线:是时候在测试网上开始应用和钱包的开发了!
伦敦硬分叉在准备阶段:EIP-1559 实现正在进行中,并且为了赶在 7 月或 8 月的最后期限前完成升级,升级的范围很窄。
上海硬分叉的升级重点仍在讨论中:要么就是核心开发者们将他们的精力都集中到 eth1->eth2 合并的工作中,要么就是当合并原型制作之后,部署那些呼声比较高的 EIP
柏林升级
柏林升级内容已经在所有主要测试网部署,并且将在 4 月 14 日,区块高度 12,244,000 上线主网。此次升级将提高以太坊的安全性,并为伦敦升级中的 EIP-1559 部署做好准备。如果读者正在运行一个节点并且还没更新客户端版本,尽快去更新!至于客户端更新的版本,《以太坊柏林升级公告》内有公布。
在安全方面,访问以太坊状态的操作码的 gas 费与其计算成本相比价格过低了,而 EIP-2929 可以解决该问题。利用操作码 gas 费过低这一点,恶意参与者可以创建重复调用这些操作码的区块,而这些区块的处理速度比普通区块慢几个数量级。EIP-2929 通过提供 gas 成本约 3 倍来缓解这一问题。还有客户端方面,改进了数据库管理。比如 Geth 客户端的快照数据库格式也有助于更有效地处理状态访问较多的区块。
然而为了减轻 EIP-2929 对用户的负面影响,柏林升级引进了与其配套的 EIP-2930。它允许用户在提交交易时指定一个“访问列表”,以使用低于 2929 规定的 gas 费。这其中 gas 费的计算方法有些复杂,但是,从高层次来看,如果客户端提前知道交易将涉及状态的哪一部分,他们就可以预加载,对这些访问收取更少的 gas 费。我鼓励大家参考这个 EIP 进行精确的计算。
对于想要体验生成“访问清单”功能的应用和钱包开发者,Geth 客户端很快就会上线相关的工具了? 可以点击这里查看开发进程:
https://github.com/ethereum/go-ethereum/pull/22550 。更广泛地说,如果你是一名应用或钱包开发者,现在是时候在测试网上测试柏林升级的内容了!
关于 EIP-1559,柏林在两个方面提供帮助。首先,EIP-2929 解决了 EIP-1559 的最大风险:DoS 攻击会在比现在大两倍的区块上进行。这是客户端开发者们反对 EIP-1559 的首个原因,并且每次在核心开发者会议中讨论 1559 时都会讨论到这个问题。换句话说,如果没有 2929,我们就不能稳妥地上线 1559。
第二,柏林通过 EIP-2718 在协议级别引进了对多种交易类型的支持。EIP-2930 引进的“访问清单”创建功能需要一种新的交易类型,因此 EIP-2718 提供了一个全面的框架以支持多种交易类型。这意味着,在柏林中实现 2718 和 2930 允许客户端团队提前做架构基础工作,为支持 1559 类型的交易做好准备。
最后,大家对柏林升级还有一个忧虑,担心 EIP-2929 将提高 DeFi 交易的成本。然而 EIP-2930 的引进会抵消掉一部分 (并不会抵消全部)。防止这类型交易 gas 费提高的明显解决方案就是提高区块 gas limit。
不过,这样做总是有好有坏:提高区块容量会加速状态增长,这导致节点与网络同步更加困难。另一方面,不提高区块 gas limit 就会提高网络用户的交易成本 (支付昂贵的 gas 费)。或许这样是一个比较公正的折中方案:引入 2929 降低 DoS 的风险,然后缓慢地提高区块容量,直到 2929 所提高的 gas 费被逐渐抵消。
伦敦升级
随着柏林硬分叉即将上线主网,核心开发者现正专注于下一个网络升级:伦敦。此次升级有点特殊,由于难度炸弹将发生在 8 月份,因此伦敦升级必须在这之前部署。也就是说,在前一个升级部署之前就要开始下一个升级 (伦敦) 的开发与更新,核心开发者们还是首次遇到这样的情况。
伦敦升级会于主网部署大家翘盼已久的 EIP-1559。如果读者对该 EIP 比较陌生,我整理了一个资源列表,并且将过去一年的开发过程文档化。
(译者注:ECN 归档了 1559 更新 的译文)
光是这个 EIP 对以太坊带来的改变就比柏林升级所有 EIP 加起来要大。而且实现和测试时间都比以往升级的时间短,因此核心开发者正试图缩小伦敦升级的范围,以便按时完成。到目前为止,伦敦升级仅包括 EIP-1559 和 EIP-3238 (提议推迟难度炸弹至 2022 年第二季度)。等到 1559 的实现与测试结束之后,核心开发者们将处于一个更主动的位置,到那时再决定还要加哪些 EIP。
上海升级
由于伦敦的升级范围被刻意缩小了,核心开发者们已经开始对上海升级进行高层次的规划。我们有以下两种主要的可能性:
首先,我们可以实现那些不可能在伦敦部署的 EIP,如:
EIP-3074:允许“资助交易”等
EIP-2537:增加对 BLS-12381 曲线 (被信标链使用) 的支持
EIP-2327:对 Solidity 和 Optimism 团队有益
EIP-2935:对轻客户端和无状态客户端有帮助
或者,社区越来越关注共识 (eth2) 与应用 (eth1) 层之间的合并,简单来说就是合并™️。Eth2 规范库里已经收录了“简化合并规范”提案的 PR,并且非常接近于客户端团队应该能够制作的原型。
尽管合并规范可能比较简单,但为了能够让应用层的客户端能够将信标链作为它们的共识引擎,仍然有几个工程问题需要解决。让两边的客户端开发者关注这些问题是我们发现和解决问题的方式。
客户端团队仍需要更好地消化这些规范,并开始构建原型,然后他们才能决定我们是否已经准备好将所有的精力都转向合并工作上,或者在所有人参与之前是否需要一个小的工作小组来完成更多的工作。为了加速这一进程,来自应用和共识层的客户端将在 Scaling Ethereum 黑客松期间开发最新规范的原型。
扩容以太坊黑客松活动的结束时间刚好与伦敦和 Altair 升级 (将在 6 月进行) 大部分工作完成的时间相吻合。这意味着原型应及时准备好,以便于我们做出关于上海升级的决定。?
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场