原文来源:AllCoreDevs Updates
原文作者:Tim Beiko
原文翻译:ETH 中文微信公众号
在 Rayonism 第一次构建出原型的一年后,我们现在在所有以太坊客户端上都有了强劲的合并实现。
从我们今天的进度到完全过渡到以太坊权益证明的道路现在已经非常清晰了。我们需要:
1.几次不出现问题的主网影子分叉;
2.客户端都通过各种合并测试套件;
3.在现有的公共测试网中顺利部署。
就这些了!一旦这些情况都达成了,并且我们观察到它们在几周内是稳定的,我们就可以准备主网合并了!
Trent Van Epps 制作了这张从信标链存款合约的启动到以太坊完全过渡到权益证明的历程图。请注意,TTD 指的是终结总难度 (Terminal Total Difficulty),即合并发生的时候。
让我们逐一展开。
影子分叉
在过去的一年里,我们在网络升级过程中增加了一个新步骤:影子分叉 (Shadow Forks)。
已经有一些关于影子分叉的释义性文章了。简单来说,影子分叉是通过用少量节点分叉一个实时网络而创建的新开发者测试网。影子分叉与主链有相同的状态、历史数据和链 ID。
@parithosh_j 制作的影子分叉网络概览
运行这些影子分叉测试网使得我们可以观察客户端在尽可能接近公共网络的条件下的表现。在影子分叉网络的节点上,合并有效发生。之后,主网上的交易可以在分叉上重放,使得我们可以看到节点在主网条件下的表现。我们还可以同步新的节点到影子分叉上,以确保它们仍然按预期加入网络。
在这些影子分叉过程中,每种执行层 (EL) 和共识层 (CL) 组合都会被测试,我们的目标是每对客户端组合都能过渡并在之后保持平稳运行。我们有 4 个执行层客户端和 5 个共识层客户端,也就是有 20 对组合需要测试!
到目前为止,我们已经有多个 Goerli 影子分叉和两个主网影子分叉。第二个主网影子分叉 (MSF2) 几乎完美进行。另一个,MSF3,准备在这周进行。如果 MSF3 没有什么问题,并在之后保持稳定,我们就可以对现有的测试网进行升级。为了安全起见,在测试网部署之前 (甚至期间) 我们将继续定期进行影子分叉。
与此同时,我们也在加倍努力进行其他一些测试工作。
合并测试
对于测试来说,合并是一次独特的升级,因为它跨越了以太坊的执行层和共识层。虽然对于每一层我们都有很多单独的测试工具,但大量用于测试跨层交互的新基础设施是必要的。
Hive 测试
Hive 是一个集成测试平台,我们以前用于执行层的测试。在过去的几个月里,我们已经为它添加了模拟共识层行为的能力,并用它测试各个执行层客户端。这有助我们测试这个执行层和共识层用于通信的新 Engine APIs。为了测试 PoW -> PoS 的过渡,还需要添加模拟执行层行为的模拟器。
客户端团队目前正优先支持 Hive,并确保它们通过所有的测试套件,同时测试团队专注于为其添加执行层模拟。
Kurtosis
除了我们现有的测试基础设施外,我们还与 [Kurtosis] (https://www.kurtosistech.com/) 合作,我们用它每天自动搭建启动一个短暂的网络来运行合并的过程。
这些工具帮助我们发现各个客户端的实现问题,监测各种网络健康指标。随着在这方面情况逐渐稳定,我们下一步是创造更恶劣的网络条件,看看客户端会如何恢复。例如,就在过渡前暂停执行层或共识层客户端,然后在合并后取消暂停;或者合并后移除数据库,并查看它们是如何处理同步的。
还有其他所有东西
除了改良 Hive 和与 Kurtosis 合作,由客户端、研究和测试团队构建的一长串测试工具帮助我们发现每个可能的临界情况。它们包括模糊测试工具、坏块生成器、执行层/共识层模拟器、调试 API 和更多的模糊测试工具。这里有一个其他工具的愿望清单。
我们的首要任务是让客户端都通过单元/规范测试,以及在 Hive 和 Kurtosis 里的集成测试。但是,上文提到的这些其他工具可以帮助我们发现和调试我们漏掉的临界情况,随后我们会把它们纳入常规测试套件里。
在人的方面,合并测试大大增加了跨团队的协调与合作。共识层和执行层客户端团队第一次必须彼此紧密合作,确保他们的软件与另一层上的每个客户端能配合运行。这使得我们整个测试基础设施有更多和更深入的合作
公共测试网
一旦影子分叉顺利进行,所有客户端都通过了测试套件,我们将准备在现有的公共测试网上部署合并,即 Ropsten、Goerli 和 Sepolia。
尽管公共测试网不像主网影子分叉般对客户端进行那么多的压力测试,但它们需要在以太坊生态系统内进行更广泛的协作。
与以前的以太坊升级相比,合并需要更多的节点运行者。在过去的升级里,在执行层上的节点运行者和矿工只需要对一个软件进行升级:他们的执行层客户端。而在合并升级里,他们将需要下载、配置和同时运行一个共识层客户端。
在共识层方面,我们一直强烈建议在运行验证者时也运行一个执行层节点。尽管合并前,执行层节点的运行可以外包给第三方服务提供商。但合并时,质押者将需要运行一个执行层节点来验证区块的有效性,以及在提议区块时接收交易费 (把执行层节点运行外包的话可能会收不到交易费!)
节点运营商、质押者和基础设施提供商应该确保他们的配置会在 Kiln 上测试,为在测试网上部署做准备。关于如何做到这一点,EthStaker 还发布了各种教程。
一旦 Ropsten、Goerli 和 Sepolia 完成分叉并稳定下来了 (假设没有发现进一步的问题),那么我们就可以准备为主网设置合并的日期了!
主网
以太坊主网过渡到权益证明的过程将与测试网上的过程相同。也就是说,值得再次强调的是,过渡分三步进行:
1、客户端发布支持合并的软件版本,并开始「监听」一个在工作量证明链上被触达的特定总难度值,即终结总难度 (TTD)。
2、一旦触达了 TTD,下一个区块会由被分配到下一个信标链 slot 的验证者打包。这个区块将是合并后的第一个区块,包含终端用户的交易以及权益证明共识数据 (即证明、存款、罚没等)。
3、第一个合并后的区块被最终敲定。此时,工作量证明不再构成以太坊分叉选择规则的一部分。换句话说,我们已经完全转向 PoS 了
下面 Danny Ryan 制作的图说明了这个过程:
最左边的区块显示了执行层和共识层在合并前平行运行的情况,其中 PoW (执行层) 区块包含交易而信标链 (共识层) 区块包含权益证明的共识数据。
左边的第二个 PoW 区块是当 TTD 被触达或超过时的情况。下面第三个区块是合并后第一个区块,包含权益证明共识数据和执行层交易。
第四个区块以及后续的区块都与工作量证明没有关系了。一旦这些区块被最终敲定了,网络只能被从那一点之后类似于工作量证明下 51% 攻击的情况破坏。
换句话说,到那时,我们已经完成合并了!
合并是迄今为止我们为以太坊计划过最复杂的一次升级。团队和个人贡献者已经不知疲倦地工作了一年多了,现在终于看到终点线了。
尽管每个人都为看到以太坊过渡到权益证明感到兴奋,但现在不是偷工减料的时候:为以太坊用户和在网络上构建的丰富生态确保一个安全且无缝的过渡才是我们的首要任务。我们快到了!
什么时候合并?很快。。。
感谢 Trent Van Epps、Danny Ryan、Mario Vega 和其他人对此次更新的评论和补充。