过去几个月来,以太坊核心开发者正在忙于 “伦敦” 升级,即 4 月上线的柏林升级之后的下一次升级。虽然激活的时间尚未确定,但是 “伦敦” 升级中包含的 EIP 已经确定。根据 “伦敦” 升级规范,这些 EIP 分别是:
EIP-1559:ETH 1.0 链的费用市场改革
EIP-3198:BASEFEE 操作码
EIP-3529:降低 gas 退款
EIP-3541:拒绝以 0xEF 字节码开头的新合约
EIP-3554:难度炸弹推迟至 2021 年 12 月 1 日
我们来详细看一下每个 EIP!
EIP 1559:ETH 1.0 链的费用市场改革
EIP 1559 是最受瞩目的以太坊变革之一,也是 “伦敦” 升级即将引入的最大改革。EIP 1559 将在区块中引入 “基础费用”,基础费用会追踪以太坊网络的 gas 价格(gas 价格取决于用户对区块空间的需求)。这意味着,钱包和用户将更容易准确地预估交易费。另外,EIP 1559 增加了一种新的交易类型,让用户可以指定其愿意支付的最高费用,及其愿意支付给矿工的最高费用。用户指定的最高费用与(基础费用 + 矿工小费)之间的差额将被退还给用户(译者注:假设有差额的话)。最后,EIP 1559 会销毁部分交易费,以太坊社区有很多人都认为这是对以太坊网络经济机制的一大重要改进。EIP 1559 的运作方式、优点和影响是一篇文章远远无法涵盖的。点击此处,可查看关于 EIP 1559 的全部材料。点击此处,可观看 《带你看 EIP》系列视频中关于 EIP 1559 的部分。
EIP 3198:BASEFEE 操作码
EIP 3198 是 EIP 1559 的配套 EIP。这个 EIP 只添加了操作码 BASEFEE。这个操作码会返回其所在区块的基础费用的值。这样一来,智能合约就能在链上访问该值,这有助于提交欺诈证明和创建免信任的 gas 价格衍生品。关于该提案的完整介绍,请观看《Ratan Rai Sur 带你看 EIP 3198:BASEFEE 操作码》。
EIP 3529:降低 gas 退款
“伦敦” 升级引入的另一大重要变革是取消了 SELFDESTRUCT 操作码的 gas 退款,并降低了 SSTORE 操作码的 gas 退款。虽然 gas 退款最初是为了激励开发者在可能的情况下清除状态,但是实际上在 Gas Token 出现后,gas 退款反而导致状态规模增加。用户可以在 gas 价格较低时铸造 Gas Token,然后在 gas 价格较高时将其销毁,获得退款。除此之外,gas 退款也会导致区块执行时间发生变化。在 “伦敦” 升级之前,最高 50% 的 gas 退款可以用来在同一区块中执行进一步计算。这就意味着,区块大小最高可达 gas 上限的 1.5 倍。EIP 3529 会将 “执行退款” 从 50% 降至最低 20%。这一变革可以在一定程度上抵消 EIP 1559 造成的区块大小差异( 1559 让区块的 gas 使用量最多可达当前 gas 上限的两倍)。
EIP 3541:拒绝以 0xEF 字节码开头的新合约
EIP 3541 是一个简单的变化,为 EIP 3540 的 EVM 改进提议奠定了基础。一旦 EIP 3541 实行,以 0xEF 字节码开头的新合约将无法部署。已有合约不会受到影响。“伦敦” 升级启动后,字节码最短序列以 0xEF 开头、但又与现存合约的起始序列不符的合约部署将会被回滚,以确定兼容 EIP-3540 语义的合约。请注意:EIP 3540 需要另外部署网络升级。另外还需要注意的是,如果 EIP 3540 没有部署,EIP 3541 也可以用来保留起始字节,以便用于其它方案。
EIP 3554:难度炸弹推迟至 2021 年 12 月 1 日
EIP 3554 将推迟难度炸弹(又称冰河期)。难度炸弹/冰河期是以太坊引入的一种机制,在以太坊网络向权益证明过渡时 “冻结” 挖矿。鉴于以太坊网络还没有准备好过渡到权益证明,我们需要推迟难度炸弹的引爆时间。此前就已推迟过三次,分别在大都会(EIP-649)、君士坦丁堡(EIP-1234)和缪尔冰川(EIP-2384)期间。虽然之前几次都推迟了很久,但是这次核心开发人员只将难度炸弹推迟至 2021 年 12 月。届时,以太坊网络要么成功过渡至权益证明,要么再进行一次升级。以上就是 “伦敦” 升级引入的所有变革。测试网区块以及相关客户端发布版本很快会在以太坊基金会的博客上公布。