北京时间 1 月 18 日晚 22:00 点,包括 Vitalik Buterin、Martin Holste Swende、Afri Schoedon 以及 Peter Szilagyi 在内的以太坊核心开发者举行电话会议,讨论君士坦丁堡硬分叉事项。
根据以太坊开发者 Péter Szilágyi 所言,君士坦丁堡硬分叉将被推迟六周,在第 7280000 个区块上进行,具体时间为北京时间 2 月 27 日 16:56;另外值得注意的是,本次分叉将是“双分叉”。
以太坊双分叉
“我们会在以太坊主网(mainnet)上进行君士坦丁堡硬分叉以及君士坦丁堡修正性(ConstantinopleFix )分叉,并在已经实行君士坦丁堡硬分叉的测试网(testnet)上,进行君士坦丁堡修正性分叉,这就是所谓的双分叉。”以太坊 Geth 客户与安全主管 Martin Holst Swende 向 Odaily星球日报表示。
以太坊一直以来有两种网络——主网以及测试网。所谓的测试网是用来模拟主网的行为,功效与主网相同,因此开发者可以在测试网上开发和测试自己的智能合约、发币等等,作为上链前的环境评估。反之,当主网对以太坊协议进行任何重大改变时,其测试主要在这些测试网络上完成。
以太坊最常见的 3 种测试网分别是:Ropsten、Kovan、Rinkeby。此前 Ropsten 和 Rinkby 测试网都已进行君士坦丁堡硬分叉,但由于 EIP-1283 提案存在 “重入攻击”的漏洞,因此必须进行修正。要是回滚区块,势必造成测试网与主网不同步的情况,并且加大了开发难度。
(图片来自 BlockX实验室)
因此,在昨晚的电话会议上,Peter Szilagyi 提议以太坊进行“双分叉”:即先进行既定的君士坦丁堡分叉,再对其进行修正,增加一个禁用项,移除有问题的 EIP—1283 提案。
“君士坦丁堡修正性分叉的唯一功能就是禁用 EIP—1283。”Martin Holst Swende 向 Odaily星球日报解释说,“但是,双分叉在主网上会应用在同一个区块上,而在测试网上会应用在另一个区块上。”如下图所示:
(图片来自 BlockX实验室)
EIP 1283 基于 Johnson 撰写的 EIP 1087,调整了 SSTORE opcode 的计价方式,主要通过为数据存储变更引入更公平的定价方法,使智能合约开发者受益。但 1 月 16 日凌晨,智能合约审计公司 ChainSecurity 发布了一份报告,报告指出 EIP 1283 存在漏洞,该漏洞可能导致“重入攻击”——攻击相关合约、修改用户余额或其他关键变量。
其他问题汇总
新的分叉会不会再出问题?出了问题又该如何处理?Peter Szilagyi 在以太坊核心开发者社群中表示,他们已经设计了备用方案 D;但如果计划 D 再次出错,他们还没设计副本的副本。”至于计划D的具体内容,Peter Szilagyi 并未透露。
Martin Holst Swende 则认为不可能再次出错,如果再次出错,社区还是会召开电话会议的。
(图片来自以太坊核心开发者社群)
由于双分叉提议是 Peter Szilagyi 提出的,因此不少社区成员称呼这次分叉为“ Peter’s fork”。
社区成员 Martin Holst Swende 告诉 Odaily 星球日报,他则认为不应该再叫“硬分叉”,因为硬分叉听起来像是社区推翻共识,重新设计规则,并且硬分叉也会被一些不法分子利用,发行新币,因此建议使用“网络升级”。
对此,Martin Holst Swende 则认为,自己作为技术人员,并不在意叫什么名字。“当然,名字你们可以随便取,这不是重点。”
对于存在漏洞的 EIP-1283 提案,Martin Holst Swende 表示社区已经提出了5、6种解决方案,但目前开发者还没想好用哪种方案,因此只能将其剔除。“我们还没决定现在更倾向哪一种(解决方案),没有什么好着急的。”
在 Martin 看来,最着急的应该是解决难度炸弹问题,而这需要尽快启动君士坦丁堡分叉。由于长时间激活了难度炸弹,以太坊目前网络阻塞时间比既定的“冰河期”增加了 9%,尽管对普通的用户来说影响并不明显。
(Odily星球日报注:难度炸弹(Difficulty bomb)是一个术语,指的是随着挖矿难度增加,在以太坊块链上挖一个新区块所需的时间会随之增加。这最终会导致以太坊无矿可挖,无利可图。不同版本的以太坊区块链正在采取各种措施来规避这个问题。
在昨天的电话会议上,Vitalik Buterin 提议尽快升级网络,避免难度炸弹带来更深的影响。“我们预估在六周内,网络堵塞会从‘冰河期’再向上挪动两步,届时出块时间达到 20-21 秒。如果我们更积极一点,比如 3 周,那么我们就可以避免这个问题。”
后记
以太坊原定于在第 708000 个进行君士坦丁堡硬分叉,但由于 EIP-1283 提案存在“重入攻击”漏洞,后被推迟。在过去的三天时间里,众多的开发者们为了修复这个漏洞,在核心开发者社群展开讨论,建言献策。目前关于分叉具体工程事项都只是建议,并未被最终确定。
“我们是开源的,虽然很多人说我们效率低下,但我很喜欢这种氛围。”Martin Holste Swende 如是说。
本文来源:星球日报
作者:秦晓峰