发布包

我们已经成功编译并测试了 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

部署输出是全面的。

gas-budget

输出包括几个部分:

  1. 交易摘要:在 Sui 概念中,交易的唯一“ID”。
  2. 交易数据:交易的数据。
  3. 交易效果:交易的详细信息,如对象更改、gas 费用等。
  4. 对象更改:对象更改的详细信息,包含创建的、变更的和发布的对象。您可以在“Published Objects”中看到包对象。
  5. 余额变化:地址余额的变化,在这种情况下,唯一的变化是 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 版本。尝试将此包发布到与指定版本不同的网络(例如测试网)将导致源代码验证错误,如以下错误消息所示: error

为了解决这个问题,您可以临时使用 --skip-dependency-verification 标志运行 sui client publish 命令。然而,更可靠的解决方案是将 Sui 二进制文件更新到与目标网络匹配的正确版本。这意味着从 Sui 发布页面下载适用于您的目标网络(主网、测试网或开发网)的适当 Sui二进制文件,并替换现有的二进制文件(位于 ~/.cargo/bin 目录中)。