始末|一文了解Medalla测试网“崩溃”事件始末( 二 )


客户端多样性的意义
理想情况是我们会有四个及以上独立客户端 , 每个客户端节点所占比例不超过网络的30% 。 如此一来 , 即使有一个客户端出现了问题 , 而影响都不足以引起我们的注意 。
就算我们无法达到这种理想情况 , 但是降低单个客户端的极高使用率也能使得网络更加强健 。 假设这次只有50%的验证者下线而非80% , 网络也会更容易恢复 。 这是因为当客户端出现问题时 , 会影响网络的区块产生、证明打包、广播效率、点对点通信以及同步 , 而这些因素也会对剩余的验证者产生连带效应 。
备用方案的有效性
一些质押者能够切换签名密钥到其他客户端的热备份节点 。 这无疑使非常棒的安全网络 , 虽然需要当心避免被罚没:新验证者可能对于既有验证者的投票历史一无所知 , 因此可能做出相悖的投票 。

在将来 , 一旦我们完成了新的API , 应该可以实现在不同的信标节点之间切换验证者客户端的能力 , 而不仅仅是密钥 。 例如 , 一个Prysm验证者能够轻易地脱离Prysm信标节点 , 并且重新连接到Teku信标节点 。 这能够解决上面提到的罚没问题 。
质押者的责任感
目前参与Eth2并不是“一劳永逸”的事 。 质押者们需要保持一定注意力 , 游走于论坛之间 , 为开发者提供反馈并且能够在短时内更新客户端 。 我非常支持大家运行自己的个人验证者 , 但前提是对自己应承担的责任有所意识 。
欲速则不达
为什么总是在周五傍晚出岔子?
即使发生在这个时间 , Prysmatic团队做出的响应令人惊叹 。 详情请参阅该团队的事件报告 。 我以下的表述并非意在给Prysmatic团队带来不良影响 , 他们的工作的确非常出色 , 而是为Teku团队在面临相似处境的时候提供经验 。
当有这么多用户失去资产的时候 (即使只是测试币) , 并且网络处于高压状态下 , 自然而然会想要做出迅速的反应 , 但是有时可能欲速则不达 。
这次事件中有两件事是可以避免的 。 首先 , 在初始修复版本Alpha.21中有一个缺陷 , 导致要求用户在17小时后进行回滚 。

据Prysmatic团队Raul的说法 , 此缺陷是造成随后出现网络混乱的原因 。 其次 , 团队在处理情况时无意中删除了其1024个验证者的防罚没记录数据库 , 导致大部分验证者被罚没 。
任何一个客户端都可能会发生类似情况 。 所以即使处于高压状态下 , 无论是开发者还是用户 , 我们所有人都要沉稳应对 , 不能一味追求速度 。 因此当我们在尝试恢复网络时 , 遵循了慢工出细活的方式 。
暴露问题以绝后患
最后 , 这次插曲其实是有必要的 。 如果测试网中什么都没测试出来 , 那它有何意义?一直处于顺滑运行的状态显然是不现实的 。
这次是一场了不起的考验!这也许是网络所能遭受的最严重的一类冲击 , 就算让我们自己来设计 , 可能也设计不出这样的测试 。 让测试网遭受这种程度的冲击正是我们强化客户端所需的必备条件 。
上周The Block在文章中引用了我的陈述:
在邮件中 , PegaSys工程师Ben Edgington写道Medalla“是首个具备主网规模和配置的测试网” 。
“这是首次大规模试验 , 而之前只是屏幕上的规范 , 或是玩具网络 。 点对点网络中有许多方面需要进行测试和优化 。 到目前为止 , 一切都在正常运行中 , 但是在我们能确保无误之前 , 还需要更多的时间 , 更广的规模以及更大的网络压力” 。
说实话 , 还真是盼啥来啥 。
下一步是什么?
目前 , 所有客户端团队都在致力于强化客户端 , 使其能够应对极端的网络情况 。 问题不大 , 我们应该在接下来的几天内就能使Medalla恢复到正常状态 , 可能会对所有验证者的余额产生影响 , 也会有一些验证者面临罚没 。
如果在这之后 , 即使网络能正常运行 , 但验证者参与率还是无法回升 , 那么我们可能会考虑从头开始 , 重新部署存款合约 (重新创世或许也是一个不错的选择) 。 但这只是现阶段的一个备选方案 。


推荐阅读