Move.

帖子

分享您的知识。

Jeff .
Aug 15, 2025
讨论

经得起未来考验的 Move 模块,不破坏兼容性

_由于 Move 模块在发布后是不可变的,因此升级规划是开发的关键部分. 我见过开发人员保留指向当前逻辑版本的 “主对象” 的模式,但我想知道哪些策略在实践中效果最好. _

  • Move CLI
  • Move
  • Move Module
  • Move Script
0
1
分享
评论
.

答案

1
Genius4ever.
Aug 15 2025, 17:44

为了在不破坏兼容性的前提下,让您的Move模块在Sui上经得起未来考验,您需要仔细规划升级,因为已发布的模块是不可变的,但是Sui的软件包升级系统允许您在添加或调整功能的同时推出保持兼容性的新版本. 最好的策略之一是使用 “主对象” 模式,其中中心对象(如版本或配置对象)存储当前逻辑版本和指向活动模块的指针,允许您在不更改现有接口的情况下将调用重定向到更新的逻辑. 您可以在初始模块中使用版本字段和升级函数(例如公共乐趣 update_version(配置:&mut Config,new_package: 地址)定义此对象,确保它只能由授权方调用(例如,使用 UpgradeCap). 这样可以保持应用程序的公共 API 稳定,因此当您发布具有更新逻辑的新包时,用户或其他合同不会中断. 另一种方法是使用模块化附加变更来设计模块——在新版本中保持公共函数签名和数据结构不变,只添加新函数或字段,并使用兼容性检查(sui upgrade--verify-compatibility)在部署之前发现问题. 对于共享对象,包括版本标签和迁移逻辑,以顺利处理数据更新,例如将余额转移到新结构. 实际上,主对象模式在诸如DeFi协议之类的复杂应用程序中大放异彩,在Cetus等项目中,它在不干扰用户的情况下简化了逻辑交换. 谨慎对待安全风险——严格限制升级权限,最好使用多重签名或 DAO,以防止恶意更改,并在 Sui 的测试网上测试升级以模拟现实世界的影响. 避免过度依赖共享对象,因为由于共识要求,它们会使迁移变得复杂.

0
评论
.

你知道答案吗?

请登录并分享。

Move is an executable bytecode language used to implement custom transactions and smart contracts.

152帖子259答案
Sui.X.Peera.

赚取你的 1000 Sui 份额

获取声誉积分,并因帮助 Sui 社区成长而获得奖励。

奖励活动八月