作者 | Pooja Ranjan
译者 | 核子可乐
继缪尔冰川硬分叉(Muir Glacier)之后,面向以太坊 1.0 链的升级提案柏林(Berlin)硬分叉如约而
至。
2021 年 4 月 15 日(星期四)下午 6:12 分左右,柏林硬分叉在主网的 12244000 区块上正式激活。近一周以太坊全网算力均值为502.37 TH/s,平均出块时间13秒。目前已有74.6%的客户端准备就绪。
据悉,因 Geth 客户端的过于集中化的问题,本预期在 2020 年 7 月上线的柏林硬分叉一路延期至今。与早期以太坊网络升级略有不同,此轮升级不需要在 Meta EIP 中进行跟踪。柏林硬分叉之后,其他升级工作均将在 eth1.0-specs repo 当中进行。
柏林硬分叉中包含哪些变更?
此次柏林硬分叉主要优化以太坊的主网性能、优化合约,涵盖 Gas 效率、以太坊虚拟机 (EVM) 读取代码方式的更新,以及防止拒绝服务 (DDOS) 攻击等。在部署到主网以前,此次升级会先在 Ropsten、Goerli 和 Rinkeby 测试网上运行。
具体操作中,柏林硬分叉将以下四个 EIP 引入以太坊网络。
EIP-2565:降低 ModExp 预编译合约成本
https://eips.ethereum.org/EIPS/eip-2565
该项提案主要是对先前用于模块化乘幂的预编译机制 EIP-198 进行重新定价。EIP-198 是一项专门用于模块化幂去处的函数,引入了多种加密算法以支持 RSA 签名验证。EIP-2565 将降低 gas 成本,使其与其他操作的执行成本保持一致。
PEEPanEIP-2565 发布的 gas 定价图表
EIP-2718: 增加交易类型
https://eips.ethereum.org/EIPS/eip-2718
这项提案将引入一种新的交易类型,能够以“信封”(Envelope)形式轻松支持多种交易类型。
当初在以太坊首次登陆主网时,仅支持一种交易类型,其字段为“To”(交易执行的位置)与“Data”(交易中所包含的一切数据)。以太坊客户端采取同步行动,且必须保证各方在完全相同的时间内执行完全相同的变更。因此,如果“To”字段为 0,则所有客户端就必须将“Data”字段解释为合约部署并以特定方式立即执行。
一段时间以来,用户对于交易类型的需求不断发展。这方面趋势最早在 EIP-155 — 对简单重播攻击的保护 中有所体现。但客户当时并不同意引入新的交易类型,而是更倾向于以差异化方式解释该字段。EIP-155 中的“伪龙(Spurious Dragon)”硬分叉是一项共识变更硬分叉,要求所有客户就该字段的解释达成共识。
此次 EIP-2718 的发布无法直接解释 EIP-155 的复杂性问题,但有助于阻止未来更多复杂性因素的引入,同时也让新型交易类型(例如 EIP-1559 式交易)的添加变得更加轻松易行。
EIP-2929: 增加状态访问操作码的 GAS 消耗
https://eips.ethereum.org/EIPS/eip-2929
这项提案关注的是在交易中首次使用 SLOAD,CALL, BALANCE, EXT与 SELFDESTRUCT 时,存在的 Gas 成本增加问题。
例如,首次执行会令 CALL 系列函数的 gas 成本由 700 大幅增加至 2600,SLOAD 系列函数则增加至 2100。但对于各个地址或存储槽位,这种高额费用只会产生一次。这意味着除首次调用之外,交易中任意数量的后续调用都仅耗费 100 gas。
之所以上调首次调用的 Gas 成本,是为了缓解以太坊中的最大 DoS 攻击向量。这种设计也有助于在无状态以太坊环境下限制必要的见证人规模。目前,Merkle 证明所需要的见证人数量要远大于验证特定区块链的必要数量,以太坊正在寻求新的规模控制方法。
虽然 EIP-2929 还无法彻底解决证人数量问题,但至少控制住了过高的 Gas 成本。另外,EIP-2929 还能降低预编译的调用成本,消除预编译访问所产生的额外 700 gas 开销。
EIP-2930: 可选访问列表
https://eips.ethereum.org/EIPS/eip-2930
此项提案的主要目标是修复现有合约中的重大变更并缓解由 EIP-2929 所引发的部分 Gas 成本增长。此提案将添加一种交易类型,其中包含交易操作打算访问的目标列表(即地址与存储键列表)。通过指定访问列表,客户可以更轻松地处理交易,更安全地降低 Gas 成本。
EIP 管理与治理方面迎来哪些变更?
“缪尔冰川”是一项独立的升级提案,也是当初在链上发布 Ice Age 功能时的必要网络要求。为了趁早与其他提案一同部署,以太坊团队在 2020 年 1 月将“缪尔冰川”部署在了主网之上。
为了设计出更好的网络升级流程,EIP 编辑、EIP 作者、客户端开发者、ECH 以及其他社区成员组成了 EIP 改进流程(EIPIP)小组。以太坊 Cat Herders 还组织了一轮项目关键安装调查,希望了解以太坊客户群体中的多样性现状。
此外,客户端开发者将持续研究不同建议,不断改善网络性能与安全性,并为后续升级打下坚实的基础。由于升级周期较为平缓,我们可以充分利用这段时间为下一次的“伦敦(London)”升级添加更多新功能。
节点运营者或矿工需要下载以太坊客户端的最新版本,目前可升级的 Eth1.0 客户端包括:
Geth —Gemini Sigma (v1.10.1)
OpenEthereum —OpenEthereum v3.2.0
Nethermind —v1.10.31
Besu —21.1.2.
注:如果您在以太坊公链上使用 Besu,则必须升级至 21.1.2。此版本包含所有受支持的测试网与以太坊主网 Berlin 激活区块。
相关链接:
https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80