Sui主网首次中断问题总结

文摘   2024-11-22 14:04   浙江  

当问题发生时,Sui工程团队迅速诊断问题并发布修复方案,随后由验证节点部署,最大限度地缩短了网络中断时间。





事件概述



太平洋时间2024年11月21日上午大约1:15至3:45之间(东八区时间:2024年11月21日下午5:15至7:45),Sui主网发生了全面网络停滞。所有验证节点陷入崩溃循环,导致交易处理完全中断。




问题原因



阻塞控制代码中的assert!触发了错误:如果估算的执行成本为零,则会导致验证节点崩溃。此问题发生需满足以下所有条件:


1. 阻塞控制设置为TotalGasBudgetWithCap 模式:

  • 该模式在协议版本63中短暂启用后被撤销,随后在协议版本68中随累积调度器再次启用。

2.网络接收到同时包含以下条件的交易:

  • 可变共享对象输入

  • 零个MoveCall指令


当网络接收到此类交易时,所有验证节点立即崩溃。




什么是阻塞控制?



Sui网络基于对象的架构支持大规模并行处理不同的用户交易,这在大多数其他网络中无法实现。然而,如果多笔交易同时写入同一共享对象,则这些交易必须按顺序执行,且涉及该特定对象的交易处理量存在上限。


阻塞控制系统通过限制写入同一共享对象的交易速率,防止网络因执行时间过长的检查点而过载。


我们最近升级了阻塞控制系统,以通过更准确地估算交易复杂度来提高共享对象的利用率。但新模式TotalGasBudgetWithCap 的代码中存在一个bug,导致此次问题的发生。




如何解决问题?



在问题确立后,代码修复十分直接(详见 PR #20365)。该修复已部署到主网(v1.37.4)和测试网(v1.38.1)。


PR #20365:将bump_object_execution_cost修改为使用饱和加法,并允许0成本交易。


🌟 主网v1.37.4:https://github.com/MystenLabs/sui/releases


在验证节点社区的积极响应下,从修复发布到Sui网络恢复正常仅用了15分钟。




我们学到了什么?



  • 事件检测与响应系统运行良好: 自动警报与社区报告几乎同时触发,我们迅速调动团队资源进行诊断和修复。

  • 验证节点社区表现出色: 修复发布后,Sui网络几乎立刻恢复正常。




预防措施



  1. 改进测试系统: 增加更多类似触发此次崩溃的对抗性交易类型,以发现潜在问题。

  2. 优化构建流程: 提高调试和发布二进制文件的生成速度,进一步减少事件响应时间。此次中断过程中的一部分时间是由于等待构建发布版本。


感谢社区和验证节点的支持,共同确保了Sui网络的快速恢复!

注意:此内容仅供一般教育和信息目的使用,不应被解释或依赖作为购买、出售或持有任何资产、投资或金融产品的认可或推荐,并且不构成财务、法律或税务建议。



Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。


获取更多信息: 

https://linktr.ee/sui_apac 




关于Sui Network


获取更多信息

官方网站: https://sui.io

Discord:https://discord.com/invite/sui

中文Twitter: https://twitter.com/SuiNetworkCN

中文Medium: https://medium.com/sui-network-cn

中文电报群: https://t.me/Sui_Blockchain_Chinese

Sui Network
Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有横向可扩展性,让开发者能够快速且低成本支持广泛的应用开发。
 最新文章