来源:《Testnet Wave 2 Recap - Network Learnings》by SUI Network

编译:SUI World DAO

今日,Sui Network发文总结Sui Testnet Wave 2,期间,共有7000余个节点连接到41个验证者,处理3650万笔交易,比Wave 1增长1.6倍;共有324万枚NFT,134万枚SUI被质押,已处理735万个质押操作。

Testnet Wave 2 圆满结束,帮助实现在 Sui Network 上进行 Staking 操作的目标,Wave 2 上的大量活动让 SUI Network 通往主网的旅程中更有信心。第一篇的回顾文章主要介绍网络学习部分,后续还将重点讨论代币经济学和 Frenemies 游戏。

数据快照 

在 wave2 三周的允许期间,社区共同创造了多项新记录,跨越 33 个epochs :

1)超过 7,000 个节点连接到 41 个验证者;

2)169万个地址;

3)3650 万笔交易(比 wave1 增长 1.6 倍)

4)324万个NFT

5)发布了 118,614 个包(比 wave1 增加了 45 倍)

6)质押 134 万 SUI

7)处理了 735 万次质押操作

8)观察到 67 个峰值 TPS

9)Sui 钱包 DAU 在 wave2 期间增长了 2.2 倍,达到 171K(与 1 月份的前三周相比),Sui 钱包的安装量增长了 3 倍以上,达到 333K(与 1 月份的前三周相比)

10)Sui Explorer 的浏览量达到历史新高,共计100 万页面浏览量和 571,000 独立访问者

11)Sui Discord 社区拥有超过 600,000 名成员,使其成为全球最大的 web3 社区之一

特别是,四个智能合约 在wave2 期间收到了超过 100 万笔交易,总共占 wave2 所有交易的 40%:

1)Sui 的系统对象位居榜首,处理了超过 730 万笔与质押相关的交易;

2)frenemies 游戏位居第二,在短短五天的游戏时间内就完成了超过 350 万笔交易。

3)第三活跃的是 8192 游戏其对象 ID 为

0x137aebf47cd16956b68633b6f6f00a992d87d9c6

处理了超过 200 万笔交易。

4)第四活跃的是 Sui Capys

对象 ID 

0x4c10b61966a34d3bb5c8a8f063e6b7445fc41f93

交易量为 160 万笔。

这些新记录和新的活动水平使我们有机会确定软件的重大改进,并进一步成熟我们的运营能力以及我们的验证者和节点运营商社区。 

SUI Network 值得注意的网络改进

与 wave1 类似,Wave2 旨在强调和发现 Sui 基础设施的改进。

处理过大的消息或交易

由于 Wave 2 专注于质押,网络经历了很高的质押和取消质押交易,这帮助我们突破了处理大型网络消息和交易的界限。特别是,每个未决的权益委托和取消委托交易都会在纪元更改期间生成一个交易。这会影响 epoch 更改交易的交易大小,因为每个生成的事件都是交易效果的一部分。在 Wave 2 中,我们在一个 epoch 中看到了最多 230,000 次 staking 操作,因此这个 epoch 变化的交易效应变得非常大。

这些超大交易会产生许多问题。如果 epoch change 交易效果变得太大而无法下载,epoch change 将失败。如果交易影响大于最大 JSON RPC 响应,则无法检索交易。任何尝试加载如此大的交易的应用程序(例如 Explorer)都可能有崩溃的风险。如此大的交易在计算上也可能过于昂贵,以至于网络无法处理。在 wave2 期间,我们的团队不得不应用一些紧急限制增加,以保持网络在处理大量交易时的正常运行。

由于这些发现,我们加快了对对象、包和各种交易数据(输入参数、交易效果、事件)的保护性大小限制的添加。这些限制将有助于确保存储、网络和计算资源不会被主网上的超大交易所淹没。

更稳健地处理交易的类型参数输入

2 月 1 日,我们发现了一个BUG,如果将 Move 模块指定为类型参数中的交易输入,则交易处理逻辑无法正确验证 Move 模块的依赖项(即该类型所属的模块是否已发布)。由于 Move 包发布是通过拜占庭一致性广播快速路径进行的,因此某些验证者可能会先于其他验证者了解已发布的 Move 模块,并且可能不同意在类型参数中使用此模块的交易的有效性。一个这样的交易阻止了系统形成下一个checkpoit,结果导致了许多完整节点的停止和验证者的分叉。这是Testnet Wave 2在2月1日凌晨中断的主要原因。

为了在存在类型参数中输入模块无效的已提交交易的情况下保持 Testnet 向前发展,我们的团队执行了一些紧急修复:

1)始终检查类型参数的模块是否已发布;

2)允许提交的无效交易通过失败完成执行;

3)防止提交具有未发布类型参数的进一步交易

我们发现了第二个BUG,即交易输入检查逻辑不拒绝在类型参数中插入非Move模块的对象id作为输入。因为类型参数必须是 Move 模块,所以交易永远无法完成,也无法形成下一个checkpoint。同样,我们的团队不得不添加紧急修复程序以强制有问题的交易因执行错误而失败,以便恢复网络。

在 Sui 存储库中添加了对这两个BUG的长期修复,作为 Fix input object generation #7940。

Narwhal 共识延迟的改进

与 Wave 1 类似,Testnet Wave 2 提供了一个宝贵的机会,通过41个去中心化的验证者进一步描述Narwhal 共识, 在 Wave 2 期间,我们借此机会进行了几项共识延迟减少优化(向两个验证者并行提交共识、并行证书验证、min_header_delay 参数、一秒 min_header_delay) 我们不断迭代性能,并计划很快进行更多优化。 

值得注意的开发人员经验教训

虽然确保网络的稳定性是当务之急,但我们的长期目标是让 Sui 成为首屈一指的智能合约开发者平台,开发者可以从中获得 web3 最佳创造体验,为此,我们还在 Wave 2 期间监控了开发人员和用户的摩擦点。

代币管理

在 wave2 期间,有几个因素使用户更有可能遇到代币管理问题,这些问题通常表现为 gas 费用不足的错误,或者在用户似乎持有足够的 SUI 余额进行交易时出现灰色的质押按钮。

由于网络上活跃的验证者游戏,参考gas 价格可能会波动,并且从一个epoch 到另一个epoch 的涨幅都大于正常水平。高 gas 价格的波动可能会使用户不太可能用一枚价值足够高的代币来支付gas 费,其次,初始参考gas价格设置的比Devnet更高,这样用户持有多币的可能性更小,用完币的速度也更快。最后,质押操作本质上涉及用户将其现有 SUI 余额委托给一个或多个验证者。然而,用户 SUI 余额的代币布局可能并不总是与他们预期的质押操作相匹配。

在 wave2 期间进行了一些更改以缓解这种情况:

1) 我们在参考GAS 价格较高的时期,提高了默认的水龙头数量;

2) 我们解决了 SDK 中的一个错误,即 Sui 客户端选择的GAS对象大于 gas_budget 而不是 gas_budget * gas_price

3)为 Sui 钱包质押添加了基本代币管理,其中对于每个质押操作,使用 paySui 交易来构建用于委托的质押代币和为委托提供资金的GAS 代币。

很快我们计划支持可编程交易,这将简化应用程序的代币管理,敬请期待!

Testnet Wave 更多的成功

每次 Testnet Wave 都是恐惧和兴奋的结合,我们与 Sui 社区合作,有意将网络的质押能力推向极限,并本着这种精神在 Testnet Wave 2 期间成功地加强了 Sui。

我们非常感谢社区的参与,这有助于产生负载并发现问题,我们的下一个里程碑是为建设社区启动一个永久性测试网,该测试网将不再是临时性的,我们期待进一步的合作。

不久,我们还会发布另外两篇文章描述我们的Testnet Wave 2 学习,敬请期待。