姗姗来迟的柏林硬分叉

PrincipCap
2021-04-16

2021年4月15日18:12分左右,柏林硬分叉在主网的12244000区块上正式激活。由于有79.44%的以太坊节点运行在Geth之上,开发人员担心一个严重的bug可能就会破坏以太坊,因此原定于2020年7月的柏林分叉延期至今。

这次升级主要引入了四个EIP:EIP-2565、EIP-2718,、EIP-2929、EIP-2930。其中EIP-2929和EIP-2930将会影响交易的gas成本计算。

我们先来了解一下目前的进展。

(数据截止4月16日 11:10)

目前全网算力已达510,142.45GH/s,平均出块时间13.3s,Gas均价104.00Gwei(Gwei=1e9 wei)。

(数据来源https://ethernodes.org/)

在过去24小时内,仍然有8.6%的节点(约144个)未支持升级以太坊柏林分叉。

在柏林硬分叉正式激活后不久,区块高度1244294出现共识错误,该块之后不同步。目前OpenEthereum团队和核心开发人员已经意识到OE客户端面临的同步问题,并且正在努力进行诊断和修复。

接下来我们来详细介绍引入的4个EIP:

01

EIP-2565:通过降低ModExp预编译的gas成本,使加密算法变得更实用,从而提高安全性,增加随机性(VDF)等。

该EIP主要是对之前的预编译机制EIP-198进行重新定价,因为发现它相对于其他预编译“定价过高”。具体做法是:

1. 修改“计算的复杂度”公式以更好地反映计算的复杂度,在模幂运算进行建模的时候应用了一个更好的近似值。而且在公式中考虑了使用二进制指数算法,因此回归线拟合程度更好。

2. 更改GQUADDIVISOR的值,使gas成本与执行成本保持一致

3. 设定最低gas成本以防止滥用

(https://eips.ethereum.org/EIPS/eip-2565)

02

EIP-2718:定义一个新的事务类型,以“信封”(envelope)的形式支持多种交易类型。

以太坊主网上线初期,仅支持带有字段 TO 和字段 Data 的一种事务类型。当我们想添加新的交易类型时,我们必须确保它们与其他所有交易向后兼容。在EIP-155中的“伪龙”(Spurious Dragon)硬分叉就是为了防止重放攻击(对同一交易信息重复利用并骗取相关数字货币,可以理解为,使用同一付款信息多次购买商品的过程)。

EIP-2718虽然无法解释EIP-155的复杂性问题,但是通过引入了“信封”事务类型,我们只需要确保现有交易的向后兼容性,以及确保交易类型之间不存在编号冲突。这有益于使新交易类型的添加变得更加简单,比如EIP-1559的实施。

(https://eips.ethereum.org/EIPS/eip-2718)

03

EIP-2929:增加状态访问操作码的 GAS 消耗。

该EIP增加了第一次调用的SLOAD、*CALL、BALANCE、EXT* 以及 SELFDESTRUCT的gas消耗。

例如,在此之前,*CALL的固定成本为700 gas,现在,如果slot是未访问的,则成本为2600 gas,如果已访问,则成本为100 gas。

SLOAD的固定成本是800 gas,现在,如果未访问存储slot,则成本为2100 gas,如果已访问,则成本为100 gas。这说明,如果slot在已被访问的列表里,那么一次SLOAD的成本就减少了2000 gas。

这意味着除了第一次调用需要支付较高的费用外,后续任意数量的调用都只需支付100 gas。

同样的,SSTORE的成本也发生了变动。

(https://eips.ethereum.org/EIPS/eip-2929)

04

EIP-2930:修复现有合约中的重大变更并缓解由 EIP-2929 所引发的部分 Gas 成本增长。

该EIP将添加一种新的事务类型,其中包括一个访问列表,你可以在预先声明那些地址和存储slot应视为是已被访问的,这样就可以减少操作码的成本。但是添加地址和存储密匙是需要支付gas的。其中每个存储密匙的成本为1900 gas。

比如,我们第一个使用的操作码是SLOAD,如果slot是未被访问的,则它需要花费2100 gas,但是如果我们声明这个地址应视为已被访问的,那么我们需要支付的成本就为100+1900=2000 gas,节省了100 gas。

(https://eips.ethereum.org/EIPS/eip-2930)

之后以太坊将于今年7月进行伦敦硬分叉EIP-1559的升级也将在伦敦硬分叉中上线,这次升级可能会使ETH成为一种通缩资产。

上海分叉将发生于今年10月,将引入4个EIP:

EIP-3074:允许「资助交易」等

EIP-2537:增加对 BLS-12381 曲线 (被信标链使用) 的支持

EIP-2327:对 Solidity 和 Optimism 团队有益

EIP-2935:对轻客户端和无状态客户端有帮助


免责声明:上述内容仅代表发帖人个人观点,不构成本平台的任何投资建议。

精彩评论

我们需要你的真知灼见来填补这片空白
发表看法