以太坊官方博客今日早间发布公告,鉴于社区发现君士坦丁堡硬分叉升级存在潜在安全漏洞,以太坊社区的主要利益相关者决定推迟这次硬分叉。以太坊主要客户端Parity和Geth均发布新的版本。下文是以太坊官方博客的译文,介绍了有关这次推迟的具体信息以及各方利益相关者需要采取的措施。译文如下:
(图片来源:unsplash)
以太坊核心开发者和以太坊安全社区注意到了由ChainSecurity于2019年1月15日发现的与君士坦丁堡硬分叉升级相关的潜在安全问题。我们正在调查所有潜在的漏洞,并将在这篇博客文章和各媒体渠道进行更新。
出于极大的谨慎立场,以太坊社区的主要利益相关者决定,最好的做法是推迟原定于在区块高度7080,000(北京时间大约2019年1月17日)实施的君士坦丁堡硬分叉升级。
这将要求所有运行节点的人(节点运营商、交易所、矿工、钱包服务等等)在区块高度7080,000之前更新到Geth或Parity客户端的新版本。区块高度7080,000将在本文发布后的大约32小时内达到,也就是大约美国太平洋时间1月16日晚上8点,或美国东部时间1月16日11点,或格林尼治时间1月17日凌晨4点。
你需要做什么
如果您只是与以太坊交互(不运行节点),你无需做任何事。
矿工、交易所和节点运营商:
当Geth和/或Parity客户端发布新版本之后(现已发布),进行更新。
Geth客户端:
- 更新到版本1.8.21或
- 降级到版本1.8.19或
- 仍旧使用版本1.8.20,但使用‘–override.constantinople=9999999’开关推迟君士坦丁堡分叉。
Parity客户端:
- 升级到2.2.7稳定版(推荐)
- 升级到2.3.0测试版
- 降级到2.2.4测试版(不推荐)
其他人
Ledger, Trezor, Safe-T, Parity Signer, WallEth, Paper Wallets, MyCrypto, MyEtherWallet 等钱包用户,以及其他没有通过同步和运行节点参与网络的用户或代币持有者:
- 无需做任何事
以太坊合约所有者:
- 无需做任何事
- 您可以选择检查潜在漏洞的分析并检查您的合约。
- 但是,您不需要做任何事情,因为引入此潜在漏洞的更改将不会被启用。
事件背景
这次漏洞的发现者ChainSecurity发布的文章中深入挖掘潜在的漏洞,以及如何检查智能合约的漏洞。简单地说:
“EIP-1283为SSTORE操作引入了更便宜的gas成本。一些智能合约(已经在链上了)可能会利用这种代码模式,这会使它们在君士坦丁堡升级之后容易遭受一种重入攻击。
只要不进行君士坦丁堡升级,这些智能合约就不会不堪一击。”
在状态更改操作之后使用transfer()或send()函数的合约增加了它们易受攻击的可能性,例如,在一种合约中,当交易双方共同接收资金,决定如何分割这些资金,并开始支付这些资金时,就容易遭受攻击。
推迟君士坦丁堡分叉的决定是如何做出的
安全研究人员,像ChainSecurity和TrailOfBits,对整个区块链进行(目前仍在进行)分析。虽然他们在自然环境下没有发现任何受到这个漏洞影响的情况。然而,仍存在一些合约可能受到影响的非零风险。
由于风险是非零的,而且确定风险所需的时间比计划中的君士坦丁堡升级之前的可用时间要长,因此出于极大的谨慎,决定推迟这次分叉。
参与讨论的各方包括但不限于:
- 安全研究人员
- 以太坊利益相关者
- 以太坊客户端开发者
- 智能合约所有者/ 开发者
- 钱包提供商
- 节点运营商
- dapp开发者
- 媒体