收起
1分钟1小时1天1周1个月

以太坊伊斯坦布尔升级将提高gas上限,部分智能合约或受影响

这么做的理由很简单:随着以太坊网络规模的扩大,DApps使用的某些智能合约占用了大量计算能力,但支付的gas成本相对较低。

2019年9月8日 13:40 以太坊

来源/巴比特

在8月23日的以太坊核心开发者会议上,开发者Martin Holst Swende谈到了EIP 1884(以太坊改进方案)将会产生的影响,这个方案将会是以太坊第八次硬分叉的六大改进之一。

ethereum

他说:

“我们知道,理论上这将带来一些破坏。”

在两周前就EIP 1884进行讨论之后,核心开发者在今天决定将测试网硬分叉定在10月2日左右,但是他们并未公布相应的主网升级区块高度,以防出现更多意外。

具体来说,EIP 1884将提高gas成本。这么做的理由很简单:随着以太坊网络规模的扩大,DApps使用的某些智能合约占用了大量计算能力,但支付的gas成本相对较低。

根据Swende提交的这个EIP,这种现象引发了漏洞:

“它可能被用于攻击,通过低成本的操作填满区块,从而导致区块处理时间延长。”

Swende还说明了这项改进的实用性:

“定价过低的操作码会导致区块gas限制出错,同样的gas值可能导致区块处理时间产生重大差异……如果操作实现平衡,我们可以将最大化区块gas限制,并拥有更稳定的处理时间。”

因此,提高gas上限是有道理的。然而,问题在于,部分合约在编码过程中就已经设置好,需要gas成本保持不变。Swende指出这样的设置并非最佳选择。毕竟,在2016年底的Tangerine Whistle硬分叉(即the DAO硬分叉)当中,开发者将其中一个操作码的gas成本从50调整到了200。因此,智能合约开发者应该料到gas值可能再次上升。

Swende还指出,在EIP 1884部署之后,default 函数(智能合约用于转移以太坊的一种方法)也可能失败,使钱包失效,或者只允许低于一定限额的支付。

Parity Technologies的Wei Tang也参与了8月23日的会议。他很担心。他在会上以及随后的推文中都表示,开发者应该采取措施,避免在伊斯坦布尔(Istanbul)分叉之前被意外冻结合约。首先,他提出了向后兼容。

简单来说,向后兼容能够或多或少地以当前的gas成本保留当前合约,同时让新合约满足分叉后的标准。这是完全可行的。

“向后兼容性是以太坊以及虚拟机上的一个可实现特性。我们在伊斯坦布尔没有这样做的原因主要是由于时间限制。”

Tang说,治理问题已经花了很长时间,所以像EIP 1702这样更复杂的改进(其可实现向后兼容)已经被搁置。

组织核心开发者电话会议的Hudson Jameson随后在推特上写道:

“可以说,通过这个重大改变我们在某种程度上让人们能更好地准备更重要的变化。”

但Tang担心负面影响会更多。虽然他说伊斯坦布尔的EIP“大多是简单的”,但他担心对智能合约的影响。在会议上,他提到了2017年Parity多重签名钱包遭黑客攻击,Parity因此提出了通过硬分叉解锁50万ETH的想法,这50万ETH因合约被冻结而被锁在钱包里。

尽管安全问题一直是拖延伊斯坦布尔的部分原因,但Tang表示,不花时间实现向后兼容也有其风险,这可能会导致网络攻击。要做到这一点,可以开发不易受攻击的智能合约,然后提出修改gas上限的建议,使之失效。

“如果因此产生的影响并不明显,或者核心开发者坚信向后不兼容的更改是可以接受的。那么恶意实体就可能破坏网络,或窃取用户资金。”

在今天的会议上,EIP 1884的问题再次出现,开发者就这一方案达成了一定程度的共识。在Tang重申了他的观点之后,Swende同意开发者应该准备好面对所有意想不到的结果。

“我绝对认为如果我们把东西弄坏了,我们应该事后修好。但我确实认为,在大多数情况下都只是嫌麻烦,'这太难了,我们需要升级到一个新的合约' ——我不认为我们需要理会这种情况。我认为他们需要承受这种痛苦,并坚持下去,因为他们需要改变合约的模式。”