下一次升级(柏林升级)在望,为此我们要安排一个网络升级流程。在经过几次头脑风暴后,EIPIP团队就如何改进网络升级流程提出了几点建议。我希望这篇文章所分享的信息能够对EIP作者乃至整个社区都有用。让我们来了解一下新流程是怎么样的,以及为什么要调整自以太坊
区块链诞生以来就沿用至今的网络升级流程。
什么是网络升级?
网络升级是将新功能添加到以太坊协议上的方式。通常来说,这些升级功能旨在为网络带来可扩展性、更好的用户体验和更高的安全性。每个新功能在EIP(以太坊改进提议)中都有详细描述。当网络中的所有节点都同意激活新功能时,就会在特定区块高度发生网络升级。由于以太坊是去中心化的,而且没人可以强迫其他人升级节点,如果网络中的部分参与者决定不激活升级程序,就会停止与已激活升级程序的节点通信,导致网络中出现分叉。
为什么要改变网络升级流程?
过去,网络升级流程都与EIP标准化流程相互关联。核心EIP要与标准化流程一起部署在主网上。
共识冲突
以太坊是一个开源社区项目。若想将核心提议部署到主网上,必须先获得社区和核心客户端(以太坊节点)的同意。一旦以太坊核心客户端开发者和社区都接受了某个EIP,这个EIP将包括到下一次网络升级中。
当以太坊开发者在准备伊斯坦布尔升级时,社区在EIP1057(可编程工作量证明ProgPow)上没有达成共识。这个提议得到了部分人的支持,但是也遭到了很多人的强烈反对。最终,以太坊客户端之间未能达成共识。
虽然这个提议没有纳入网络升级,但它确实通过了EIP标准化流程。这就凸显了将EIP标准化和网络升级流程分离的重要性。
核心EIP数量剧增
早期,网络升级流程运行良好,总的EIP数量也相对较少。过去几年来,由于以太坊区块链的贡献者人数剧增,关于如何改进网络的EIP数量也成倍增长。这就增加了复杂性,也在如何针对网络升级EIP设计一个正式流程的问题上引发了讨论。
透明度
随着以太坊区块链的采用率提高,很多贡献者联合起来提交关于网络升级的EIP来强化以太坊网络。每个客户端都要付出极大的努力来实现EIP中所提议的改进。考虑到实现每个EIP需要耗费的工时,并非所有EIP都可以纳入下一次升级。不了解流程可能会引起混乱。因此,我们必须更新文档来增加升级流程的透明度。
新版网络升级流程
现行网络升级流程是EIPIP团队经过多次头脑风暴并与以太坊开发者和整个社区不断交流后得出的结果。
现行网络升级流程已经正式与EIP标准化流程分离。但是,上图也包括了不同阶段的EIP推荐状态。EIP流程大致分为三个阶段,以显示EIP在下一次升级前的状态。
考虑纳入
考虑纳入(Consider for Inclusion,CFI)指的是一个提议有望纳入下一次网络升级的第一阶段。有人建议让提议的作者或支持者在Eth1.0规范库中创建一个议题,以便进行官宣。
Devnet阶段
在这一阶段,客户端开发者会对提议进行讨论,并达成共识来推进Devnet(开发者测试网)的实现。这是专为客户端开发者而设计的,其它社区成员也可以使用。但是,该测试网有可能没有预先通知就会关闭,因此不建议用来测试dApp。当前的Devnet是YOLO测试网。现行版本是YOLO2.0,包含了有望引入下一次网络升级的提议。