测试网 Wave 2 多项数据表现远超 Wave 1,并在大型交易、类型参数输入和共识延迟方面进行了改进。
撰文:Sui 基金会
编译:Babywhale,Foresight News
Sui 测试网 Wave 2 已圆满结束,本次测试帮助我们实现了在 Sui 上进行质押操作的目标。网络上的大量活动让我们更有信心地认为我们在上线主网的旅程中又迈出了关键一步。非常感谢所有参与并帮助我们让 Sui 变得更好的人!
我们从 Wave 2 中学到了很多,未来将发布一个由三部分组成的博客系列来回顾 Wave 2 中的所有内容。第一篇博客涵盖网络方面,而接下来的文章将更深入地讨论代币经济学和 Frenemies game。
在 Wave 2 期间,社区在三周,33 个 epoch 的测试中共同创造了多项新记录。
需要特别提到的是,有四个智能合约在 Wave 2 期间处理了超过 100 万笔交易,总共占 Wave 2 总交易量的 40%:
特别祝贺突破百万交易大关的社区项目 8192 game!此外也感谢用于提供 Wave 2 数据分析的社区项目 Suiscan。
这些新记录和网络活动水平使我们可以确定重要的软件更新,并进一步与验证者和节点运营商社区合作提高我们的运营能力。
与 Wave 1 类似,Wave 2 旨在发现 Sui 基础设施上需要改进的方面。
由于 Wave 2 专注于质押,网络经历了很多的质押和取消质押交易,这帮助我们提高了处理大型网络消息和交易的能力。特别是,每个未决的质押委托和取消委托交易都会在 epoch change 期间生成一个事件。这会影响 epoch change 交易的交易大小,因为每个生成的事件都是交易效果的一部分。在 Wave 2 中,我们在一个 epoch 中看到了最多 23 万次质押操作,因此该 epoch change 的交易效应变得非常大。
这些超大交易会产生许多问题。如果 epoch change 交易效果变得太大而无法通过网络下载,epoch change 将失败。如果交易影响大于最大 JSON RPC 响应,则无法检索交易。任何尝试加载如此大的交易的应用程序(例如 Explorer)都可能有崩溃的风险。如此大的交易在计算上也可能过于昂贵,以至于网络无法处理。在 Wave 2 期间,我们的团队不得不提升了一些紧急限制,以保持网络在处理大量交易时正常运行。
针对以上情况,我们加快了对对象(object)、包(package)和各种交易数据(输入参数、交易效果、事件)的保护性大小限制的添加。这些限制将有助于确保存储、网络和计算资源不会被主网上的超大交易所淹没。
2 月 1 日,我们发现了一个错误,如果将 Move 模块指定为类型参数中的交易输入,则交易处理逻辑无法正确验证 Move 模块的依赖项(即该类型所属的模块是否已发布)。由于 Move 包发布是通过拜占庭一致性广播快速路径进行的,因此某些验证器可能会先于其他验证器了解已发布的 Move 模块,并且可能不同意在类型参数中使用此模块的交易的有效性。一个这样的交易阻止了系统形成下一个检查点,结果导致许多全节点停止以及验证器分叉网络。这是 2 月 1 日凌晨 Wave 2 中断的主要原因。
为了在存在类型参数中输入模块无效的已提交交易的情况下保持测试网运行,我们的团队执行了一些紧急修复:
之后我们发现了第二个错误,即交易输入检查逻辑不拒绝将不是 Move 模块的合约作为输入插入到类型参数中。因为类型参数必须是 Move 模块,所以交易永远无法完成,也无法形成下一个检查点。同样,我们的团队不得不添加紧急修复程序以强制有问题的交易因执行错误而失败,以便恢复网络。
我们在 Sui 的代码库中添加了这两个错误的修复方案:修复输入对象生成 #7940。
与 Wave 1 类似,测试网 Wave 2 提供了可以进一步测试具有 41 个去中心化验证器的 Narwhal 共识的宝贵机会。在 Wave 2 期间,我们借此机会进行了几项共识的延迟减少优化(向两个验证者并行提交共识、并行证书验证、min_header_delay 参数、一秒的 min_header_delay)。我们不断迭代性能并将很快推出更多优化计划。
虽然确保网络的稳定性是当务之急,但我们的长期目标是让 Sui 成为首屈一指的智能合约开发者平台,开发者可以基于 Sui 为 Web3.x 创造最佳的体验。为此,我们还在 Wave 2 期间关注了开发人员和用户的摩擦点。
在 Wave 2 期间,有几个因素使用户有可能遇到代币管理问题。这些问题通常表现为 Gas 费用不足的错误,或者在用户似乎持有足够的 SUI 余额进行交易时出现灰色的质押按钮。
因为 Validator Game 在网络上的活跃,参考 Gas 价格可能会波动,并且在每个 epoch 之间都有比正常情况更大的增长。高 Gas 价格的波动可能会使用户持有的单一代币价值不够用来支付 Gas 费用。其次,初始参考 Gas 价格设置的比 Devnet 更高,这样用户持有多种代币的可能性更小,用完币的速度也更快。最后,质押操作本质上涉及用户将其现有 SUI 余额委托给一个或多个验证器。然而,用户持有的 SUI 的布局可能并不总是与他们预期的质押操作相匹配。
我们在 Wave 2 期间进行了一些更改以缓解这种情况:
每个测试网 Wave 都是紧张和兴奋的结合。我们与 Sui 社区的每个人合作,有意将网络的质押能力推向极限,并本着这种精神在测试网 Wave 2 期间成功地加强了 Sui。
我们非常感谢社区的积极参与,这有助于产生高负载并发现问题。我们的下一个里程碑是为开发者社区启动一个永久性测试网,该测试网将不再是临时性的,我们期待届时进一步合作。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。