摘要: 新流程是怎么样的?我们为何要作出调整?
下一次升级(柏林升级)在望,为此我们要安排一个网络升级流程。在经过几次头脑风暴后,EIPIP 团队就如何改进网络升级流程提出了几点建议。我希望这篇文章所分享的信息能够对 EIP 作者乃至整个社区都有用。让我们来了解一下新流程是怎么样的,以及为什么要调整自以太坊区块链诞生以来就沿用至今的网络升级流程。
什么是网络升级?
网络升级是将新功能添加到以太坊协议上的方式。通常来说,这些升级功能旨在为网络带来可扩展性、更好的用户体验和更高的安全性。每个新功能在 EIP(以太坊改进提议)中都有详细描述。当网络中的所有节点都同意激活新功能时,就会在特定区块高度发生网络升级。由于以太坊是去中心化的,而且没人可以强迫其他人升级节点,如果网络中的部分参与者决定不激活升级程序,就会停止与已激活升级程序的节点通信,导致网络中出现分叉。
为什么要改变网络升级流程?
过去,网络升级流程都与 EIP 标准化流程相互关联。核心 EIP 要与标准化流程一起部署在主网上。
-旧版网络升级流程-
共识冲突
以太坊是一个开源社区项目。若想将核心提议部署到主网上,必须先获得社区和核心客户端(以太坊节点)的同意。一旦以太坊核心客户端开发者和社区都接受了某个 EIP,这个 EIP 将包括到下一次网络升级中。
当以太坊开发者在准备伊斯坦布尔升级时,社区在 EIP 1057(可编程工作量证明 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 测试网。现行版本是 YOLO 2.0,包含了有望引入下一次网络升级的提议。
获得 CFI 批准:这个 bucket 中包含了获得客户端大致共识的 EIP。在符合规则的 PR 提交后,核心开发者会予以考虑。客户端可能会在方便的时候开始独立实现这些提议。 CI devnet 等候室:获得部分(并非全部)客户端明确批准的 EIP,或者等待集成的某些工作会暂时放在 CI devent 等候室内。这部分还有可能包括其它类型的提议,但是因为某些原因,暂不考虑放到下一个 CI devnet 版本中。 在 CI devnet 上部署:这里列出了目前部署在 devnet 上的 EIP。最新版本的 devnet(所包含的内容)或将通过下一次升级实现。
主网阶段 测试绿灯:这里列出了适合在公共测试网上的部署的 EIP,截至最新的以太坊核心开发者会议。 公共测试网:与早期网络升级流程类似。所有获得核心客户端开发者同意并在 devnet 上实现和测试的 EIP 现在都部署在公共(PoW)测试网上。如果在测试网上运行的几周内,没有发现任何重大问题,就可以部署到主网上。 主网:以太坊核心开发者会设定一个区块号,并预估这些提议最终在以太坊主网上激活的日期。
在主网激活后,则表示整个网络升级流程完成。虽然网络升级促进团队正在准备下一次升级。
网络升级流程追踪器
在缺乏良好沟通的情况下,在大型去中心化网络上管理升级会是一项巨大挑战。我们可以通过网络升级流程追踪器来快速查阅正在考虑中的 EIP,并通过 Eth1.0 规范库来追踪客户端的进程。
关于网络升级流程的讨论从一年前就开始了。第一版关于硬分叉的 EIP 流程获得了 EIP 作者以及社区的好评。这个流程也在核心开发者会议上讨论过,但是因为迫切的需求而搁置。尽管如此,经过改进,我们现在有了一版更好的网络升级流程。