-(图片来源:Claudio Galamini)-
Schlesi 是以太坊 2.0 的一个多客户端测试网,如今它已完成了它的历史使命,要停止运行了。
不夸张地说,Schlesi 完成了以太坊 2.0 路线图上的一个重要里程碑:成功地启动了一个公开的多客户端测试网。本文中我准备谈谈 Schlesi 测试网及其继任者 Witti 测试网。
一些重要的定义
我们先沟通一下一些术语的含义。
什么是测试网络?
测试网络是用于测试的备用网络,希望尽可能模拟目标网络的生产环境来测试软件和协议的实际能力。计划使用目标网络用于生产的用户可通过测试网来测试客户端的能力,以保证不会遇到 bug。测试网很重要,因为它能帮助大家在实际投入生产之前发现 bug。
什么是以太坊 2.0 测试网?
以太坊 2.0 的第一个阶段,Phase 0,要退出信标链(Beacon Chain)。关于什么是信标链,Bed Edgington 在 2018 年 10 月给出了一个很好的解读:
“信标链的核心功能是为自身及分片链而管理权益证明协议的运行。这种管理包括:管理验证者及其出块权重;为每个时隙处的每个分片安排区块提议者;组织验证者、划分成委员会,参与对被提议区块的投票;执行共识规则,发放奖励和施加惩罚;成为各分片登记自身状态的锚点,以协助跨分片交易。”(来源)
为了给信标链做测试,我们需要让一个乃至多个客户端共同组成一个网络。所谓 “以太坊2.0 测试网”,就是在一个测试环境中运行 Phase 0 信标链实例。当前仍在运行的一个单客户端测试网是 Prysmatic Labs 发起的 Topaz 测试网。
什么是多客户端测试网?
多客户端测试网就是由多个不同开发团队开发的客户端共同联网组成的测试网络。Schlesi 和 Witti 都是多客户端测试网。多客户端测试网的挑战性更大,因为不同的客户端各有各的特点,也各有各的 bug,配置也不尽相同。大多数客户端在参与多客户端测试网之前都会运行私有的测试网。Afri Schoedon 说得好:
“在主网启动以前,我们需要启动尽可能模拟主网条件的测试网。这就要求我们有稳定、长期、持久的测试网络,而且仅仅得到一种客户端的支持是不够,要得到多种客户端的支持,甚至所有客户端都能参与 ,才行。”
以太坊 2.0 测试网怎么会分叉?
信标链是靠权益证明协议来支撑的。当 2/3 的验证者都见证了某些区块的有效性时,就会有一批区块得到确认。这就是所谓的 “达成确定性”,达成之后,此前的区块就永远不能再更改了。当区块链不能达成确定性的时候,它就会变得不稳定,也有可能发生分叉。当不同的验证者支持相互竞争的区块时,分叉就出现了。这就是 Schlesi 测试网上出现的情况。
多客户端测试网历史
Schlesi 实际上并不是第一个多客户端测试网。还有一个更早的叫做 “multinet” 的测试网,是在 2019 年 10 月 24 号启动的(GitHub),也是多客户端共同参与的:Nimbus、Trinity、Lighthouse、Prysm、Lodestar 以及 Artemis(也就是现在的 Teku 客户端)。不过,它更像一个模拟的多客户端测试网。Afri Schoedon 解释道:
“Eth2.0 Multinet 是一系列用于模拟多客户端测试网的脚本集合,它可以调整多种参数来模拟测试效果,比如验证者数量。Multinet 所用的是最小化的 Eth2.0 规范。”
到了 2020 年 3月,在一次开发者电话会议中,以太坊基金会研究院 Danny Ryan 表达了希望 “启动多客户端测试网” 的意愿。然后,就出现了 Schlesi 测试网。
这个名字来自德国柏林的 Schlesisches Tor 火车站。Schlesi 多客户端测试网在 2020 年 4 月 27 日启动。
在其运作期间,Schlesi 测试网的目标是测试以太坊 2.0 v0.11.1 和 v0.11.2 版的规范。以往那些以 v0.10 为目标的测试网就因为不稳定而停止了。
Schlesi 启动之时,成功地让两批运行不同以太坊 2.0 客户端(Lighthouse 和 Prysm)的验证者能互联,后来 Teku 也成功加入了。Nimbus 和 Lodestar 进度上稍微落后,但也正迎头赶上。
然后,5 月17 日,Afri Schoedon 宣布测试网上出现了分叉。
尽管存在的时间较短,Schlesi 催生了组织文档、编写配置和引导启动的机会,并且让多种客户端能同时加入;大家可以公开地部署节点、与测试区块链同步,并质押 Goerli 测试网 ETH 来成为验证者;开发人员也惊喜地发现,Schlesi 居然运行了这么久,而各客户端团队都因为快速修复了其软件实现中的问题而得到大家的认可。总的来说是个皆大欢喜的结果。
那么,到底什么原因导致 Schlesi 测试网最终停止了呢?Prysmatic Labs 团队的 Ivan Martinez 在他们的更新日志中总结了问题根源:
“协调世界时 5 月 15 日上午 11 时许,Schlesi 测试网被发现有接近 50 个时段没有取得确定性……最终导致该链不稳定,出现了几个临时的分叉。在超过 300 个时段无法取得确定性之后,Prysm 客户端和 Lighthouse 客户端在时段 150496 时隙处形成了分叉。一个区块在提交时罚没了一名见证者,但不同客户端在给被罚没验证者计算奖励和惩罚时出现了不一致。这就暴露出了 Prysm 客户端在惩罚计算上的两个不同的 bug!此次链分叉之后,我们觉得最好的办法就是重新开始。虽然那时候 Schlesi 可以从这个错误中恢复,但我们觉得最好是立即吸取我们从这次事件中得到的教训,并启动一个新的多客户端测试网。”(来源)
然后,Schlesi 落幕了。Witti 即将升起!
- (图片来源:Jan Gympel) -
Witti 多客户端测试网
Witti 是最新的多客户端测试网。它的保证金合约都是 5 月 25 号才部署的,部署在 Goerli 测试网上。
就像 Schlesi 一样,Witti 的名字也来源于柏林的一个地铁站(Wittenberglatz)。根据其 GitHub 页,Witti 会支持 3 个以太坊 2.0 客户端:Lighthouse、Prysm 和 Teku。Nimbus 和 Lodestar 则还在开发中。
以太坊 2.0 v0.11.3 版技术规范是 Witti 的测试目标,因为大多数客户端都已经或接近于实现了这一版规范的功能。虽然最近放出了 v0.12,我们可以合理的认为,Witti 和日后的测试网能够吸收这些变更。
Witti 测试网已于 5 月 27 日启动,可在区块浏览器 https://witti.beaconcha.in/ 上看到它的情况。
结语
总结一下,我们很快会迎来一个全新的以太坊 2.0 多客户端测试网,叫做 Witti;其前身 “Schelesi” 将不再运行,虽然它扮演了一个重要的抉择。
就我个人来说,我非常兴奋能部署一个节点采纳与 Witti。除了帮助开发者做测试,我自己也有不少的乐趣。我觉得大家都应该动手试试。我写了一份用 Prysm 客户端来参与 Topaz 测试网的指南,等 Witti 启动以后我也会相应写一个指南。
最后,我想表达我对所有开发者的感激之情。以太坊生态系统和社区里都是雄心壮志的人,都在为一个共同的目标以太坊 2.0 而奋斗。不计其数的开发者、研究员、思考者乃至社区领袖的不懈奋斗,让这一切成为可能。谢谢你们!