{"author":{"address":"0x9cADD876165BF0BbDaCA076dDAf5A8A6925F0097","user":"https://learnblockchain.cn/people/669"},"content":{"body":"## **1. 安装 Sui 环境**\r\n\r\n确保你的开发环境已经设置好，包括以下工具：\r\n\r\n### **安装依赖工具**\r\n\r\n* **Rust 和 Move 编译器**：Sui 使用 Rust 工具链编译 Move 合约。\r\n\r\n  ```\r\n  bash\r\n  复制代码\r\n  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\r\n  source $HOME/.cargo/env\r\n  ```\r\n\r\n* **Sui CLI 工具**：用于部署和管理合约。 如果未安装，按照以下步骤安装：\r\n\r\n  ```\r\n  bash\r\n  复制代码\r\n  git clone https://github.com/MystenLabs/sui.git\r\n  cd sui\r\n  cargo build --release\r\n  sudo mv ./target/release/sui /usr/local/bin/sui\r\n  ```\r\n\r\n* **Move 编译器和 Sui 标准库**：Sui SDK 自带 Move 工具链，无需单独安装。\r\n\r\n***\r\n\r\n## **2. 创建 Move 合约**\r\n\r\n### **步骤：**\r\n\r\n1. **创建一个新 Move 项目** 使用 Sui 的模板初始化一个 Move 项目：\r\n\r\n   ```\r\n   bash\r\n   复制代码\r\n   sui move new my_first_move_project\r\n   cd my_first_move_project\r\n   ```\r\n\r\n2. **编写合约代码** 在 `sources` 文件夹下创建或修改 `.move` 文件。例如，新建一个名为 `example.move` 的文件：\r\n\r\n   ```\r\n   move\r\n   复制代码\r\n   module 0x123::Example {\r\n       public fun hello_world(): u8 {\r\n           1\r\n       }\r\n   }\r\n   ```\r\n\r\n   确保使用的是合法的 Sui 帐号作为模块命名空间（例如 `0x123`）。\r\n\r\n3. **验证代码** 在 `Move.toml` 中定义依赖关系（如 Sui 标准库）。运行以下命令检查是否有语法错误：\r\n\r\n   ```\r\n   bash\r\n   复制代码\r\n   sui move check\r\n   ```\r\n\r\n***\r\n\r\n## **3. 编译和部署合约**\r\n\r\n### **步骤：**\r\n\r\n1. **编译合约** 在项目根目录下运行以下命令编译你的 Move 合约：\r\n\r\n   ```\r\n   bash\r\n   复制代码\r\n   sui move build\r\n   ```\r\n\r\n   如果成功，会生成一个 `bytecode_modules` 文件夹，其中包含编译后的 `.mv` 字节码文件。\r\n\r\n2. **部署合约** 使用 Sui CLI 部署 Move 合约：\r\n\r\n   ```\r\n   bash\r\n   复制代码\r\n   sui client publish --gas-budget 1000\r\n   ```\r\n\r\n   **参数说明：**\r\n\r\n   * `--gas-budget`：支付的 gas 上限。\r\n   * 运行命令后，Sui 会返回一个 `Package ID`，用于标识已部署的合约包。\r\n\r\n***\r\n\r\n## **4. 验证部署成功**\r\n\r\n### **检查已部署的合约**\r\n\r\n使用以下命令查看你的合约包：\r\n\r\n```\r\nbash\r\n复制代码\r\nsui client object \u003cPackage ID\u003e\r\n```\r\n\r\n输出会显示合约模块和相关信息。\r\n\r\n***\r\n\r\n## **5. 调用合约**\r\n\r\n### **调用 Move 合约函数**\r\n\r\n通过 Sui CLI 调用已部署合约的函数。例如：\r\n\r\n```\r\nbash\r\n复制代码\r\nsui client call --function hello_world --module Example --package \u003cPackage ID\u003e --gas-budget 1000\r\n```\r\n\r\n**参数说明：**\r\n\r\n* `--function`：要调用的函数名。\r\n* `--module`：包含函数的模块名称。\r\n* `--package`：合约的包 ID。\r\n* `--gas-budget`：支付的 gas 上限。\r\n\r\n***\r\n\r\n## **6. 测试和优化**\r\n\r\n在 Sui 测试网或本地环境中反复测试合约功能，并优化代码逻辑。部署到主网时，确保合约已经过全面测试。","title":"部署sui 合约代码"},"history":null,"timestamp":1733985613,"version":1}