发布包
我们已经成功编译并测试了 Sui 包。在本课中,我们将探讨如何将其发布到 Sui devnet。
1. 预检查
在使用 Sui 客户端 CLI 部署之前,必须进行一系列检查:
1. 验证目标网络的 Sui 依赖项
使用以下命令检查您是否在 devnet 上:
sui client env
确保项目的 Move.toml
中指定的 Sui 依赖项与您的目标网络一致。对于本课程中部署到 Sui devnet,请查看上一课中 "Move.toml" 介绍的 Sui 依赖项。默认的存储库分支设置为 framework/testnet
,但是需要更新为 framework/devnet
。
可以尝试在不同网络上进行部署,以在本课结束时观察潜在的错误。
2. 确保您有足够的 Gas
执行以下命令检查您的地址余额:
sui client gas
如果余额为空,请按照上一课中的步骤请求水龙头以获取一些代币。
2. 部署
要将包发布到 Sui 网络,可以使用 Sui 客户端 CLI 的以下命令:
sui client publish
部署输出是全面的。
输出包括几个部分:
- 交易摘要:在 Sui 概念中,交易的唯一“ID”。
- 交易数据:交易的数据。
- 交易效果:交易的详细信息,如对象更改、gas 费用等。
- 对象更改:对象更改的详细信息,包含创建的、变更的和发布的对象。您可以在“Published Objects”中看到包对象。
- 余额变化:地址余额的变化,在这种情况下,唯一的变化是 gas 费用。
3. 后检查
包已经发布到 Sui devnet,让我们在 "Sui explorer" 上检查它。
访问 SuiScan,使用输出中打印的“package id”在 Sui explorer 上查看包的详细信息。
4. 关于 Sui 二进制版本
当将包发布到 Sui 的特定网络(主网、测试网或开发网)时,必须将本地依赖版本与链上依赖版本对齐,如下所示:
[dependencies]
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/devnet" }
此配置指定了 sui-framework 的 framework/devnet
版本。尝试将此包发布到与指定版本不同的网络(例如测试网)将导致源代码验证错误,如以下错误消息所示:
为了解决这个问题,您可以临时使用 --skip-dependency-verification
标志运行 sui client publish
命令。然而,更可靠的解决方案是将 Sui 二进制文件更新到与目标网络匹配的正确版本。这意味着从 Sui 发布页面下载适用于您的目标网络(主网、测试网或开发网)的适当 Sui二进制文件,并替换现有的二进制文件(位于 ~/.cargo/bin
目录中)。