原定于 2 月 27 日进行的君士坦丁堡硬分叉被曝再出新「漏洞」,是否会继续延迟分叉呢?
原文标题:《以太坊被曝再出新「漏洞」?》
据 trustnodes 消息,距离以太坊君士坦丁堡硬分叉还有两周时间,以太坊被曝出再次发现新「漏洞」。
以太坊基金会 (EF) 的开发人员 Jason Carver 表示,一个名为 Create2 的新功能可以允许开发人员替换自毁的智能合约,从而更改规则,存在盗币风险。
Create2 是通过 EIP 1014 引入的新功能,被称为「Skinny CREATE2」,旨在通过允许「确定性部署」来更好地促进以太坊上的脱链交易,在部署过程中,它允许开发人员更改代码并重新部署到同一地址。)
Carver 说 :
在君士坦丁堡之前,你可以构建一个无害的合约,一个交易可能有两种结果:合约产生,交易代币;合约自毁,浪费一些 Gas。然而在君士坦丁堡之后,选项现在可以变成了:合约产生,交易代币;合约自毁,浪费一些 Gas;合约替换,所有已被合约批准的 ERC20 代币可能会被盗…在君士坦丁堡之前,合约自毁(Selfdestruct)风险性并不大,因为自毁的合约只能消失。现在它可以带着代码返回再次创建,这些代码可以转移所有已批准的所有代币。
EF 的另一名开发人员 Martin Holst Swende 表示 :
如果有人验证了来源,他就应该注意到 Selfdestruct (没有适当的不活跃期),并避免与之交互(防止被盗)。
正在进行以太坊 1x 升级工作的 Alexey Akhunov 说:
我刚刚得出的结论是,EOA 帐户(普通 eth 地址)回收与临时的重放保护 (将 EOA 的 nonce 重置为 0) 相结合,将使 CREATE2 进一步扩展到 EOA 帐户,使 EOA 账户面临更大风险……也许 CREATE2 应该被修改为永远不允许重复 nonces,类似于其他的重放保护方案,比如将新创建的契约的 nonce 分配给 TOTAL_TXS,这样至少可以消除超出预期功能的连锁效应。
在区块链硬分叉之时会存在重放攻击的风险,攻击者在其中一条链上发起的交易,去到另一条链上重新广播,可能也会得到确认,这就是「重放攻击」。「重放保护」是分叉后在两条链之间加了一重保护,比如在 A 链上进行一笔交易,那么 B 链上重复的交易会被判为无效。
Martin Holst Swende 上周在 Twitter 上进行了一项调查,有多少人会意识到君士坦丁堡硬分叉后代码更改,结果表明,76% 的人并不会意识到这个问题。这也意味着,除非是技术性很强的开发者,非开发人员可能知道这种自毁技巧的机会可能很小。
不过,摆在开发者面前的一个问题是,这些具有自毁功能的智能合约可能会诱使盗币犯罪,他们必须考虑将其全部删除、修改;即使他们想保持原样,也要教育用户,让人们知道某些智能合约不是一成不变的,而是可以随意更改的,他们的钱可能会被盗。
只是,用户教育的成本会很高。Carver 说:「有很多方法可以避免进行‘社会攻击’(social attacks),但大多数都需要用户教育,这无疑会落后于君士坦丁堡自身的升级。」
君士坦丁堡硬分叉是否会因为上述原因而推迟?Parity 开发者 Afri Schoedon 表示并不会推迟。ChainSecurity 首席运营官 Matthias Egli 则表示,这不是一个「安全漏洞」,而是「一个极端案例」,一旦变更生效,以太坊的开发人员应该警惕。他补充说,在 EIP 1283 之外的其他四个 EIP 最初设定包含在君士坦丁堡之内,在 2 月 27 日的硬分叉之前会继续接受审计师的审计。
目前以太坊难度炸弹已经爆炸,etherchain 数据显示,以太坊出块时间为 20.4 秒,三周后,将会到达 30-40 秒;日内挖矿收益也从 20000 个降至 13000 个 ETH (出块时间延长,出块少,所以收益下降),预计未来三周将再次下降 2000-3000 个 ETH。