跳转到内容

预售版本管理与激活

预售指南介绍合约 c96cd0d,于 2026 年 10 月 27 日迁入新仓库,Move 逻辑未变。这里描述当前源码,不表示生产应用已使用此 ABI。请先阅读部署参考。

发布版本化包会创建创建者持有的 blast_presale_package::Bootstrap,不会创建运行预售所需的共享 PackageVersion。

package_admin::wrap(bootstrap, upgrade_cap) 验证匹配且全新的原生权限,将 Publisher 和原生 UpgradeCap 封装在共享 PackageAdmin 中,并在同一笔交易中共享 PackageVersion。原生权限已有的升级政策会保留;记录中的激活使用兼容性政策。依赖包可在激活前发布,但没有版本对象就无法创建可运行的预售。

受保护的状态变更调用在首个对象参数之后紧接本包的 &PackageVersion。它通常是只读共享输入。示例中的 PACKAGE_VERSION 是对象 ID,不是数字代次。

调用类别 参数形状,省略后续参数
通过交易平台创建 bluefin::new(treasury_cap, package_version, ...) 或 cetus::new(treasury_cap, package_version, ...)
配置与最终确认 set_supply(initializer, package_version, ...)、finalize(initializer, package_version, currency)
开放、认购、结算、领取 share(presale, package_version, ...)、commit_open(presale, package_version, ...)、settle(presale, package_version, clock)、claim(presale, package_version, participant, clock)
迁移与费用支付 bluefin::migrate(presale, package_version, ...)、pay_protocol_fees_with_partner(presale, package_version, ...)
金库、政策与奖励 版本参数紧跟金库、政策、轮次或其他首个对象;请核对精确函数签名。

纯值构造器(bps::new、资格规则、接收份额、分期条款、手续费分配)、读取函数及 destroy_cap 不接收版本对象,不能对所有 Move 调用机械插入参数。生成的预售参考列出完整签名。

历史非版本化部署没有这些新增版本参数。请读取其固定 ABI,不要从当前交易中删除一个参数后就假定其他签名全部相同。

每个受保护的变更在产生效果前检查有效代次。旧代次或未来代次会在 blast_admin::operational_version 中中止,解码时需同时检查该模块和预售本地错误。

预售 UpgradeAdmin 通过共享 ACL 授权精确的包摘要。commit_upgrade_and_advance 将升级提交与代次推进放在同一操作中,后继字节码必须指向精确的下一代次。切换后,使用新的调用目标及规范版本对象。兼容性升级可以改变逻辑,并不代表合约永久不可变。

当前代码没有普通的暂停、认购撤回或 LP 提取操作。管理员的升级权限是另一项信任前提。历史仅允许依赖升级的发布有不同限制,详见安全说明。

来源:blast_presale_package.move、package_admin.move及激活测试记录。