{"content":{"title":"星航计划第一阶段完成攻略","body":"# 星航计划第一阶段完成攻略\r\n\r\n近期发现很多新来的小伙伴，想加入星航计划，但是不知道如何开始。\r\n本文将介绍星航计划的第一阶段，如何开始，如何完成。给小伙伴们打个样。\r\n写本文的目的也是想抛砖引玉一下，如果有小伙伴觉得我写的不好，也请写一份更详细的攻略，有奖哦！\r\n\r\n### 首先第一阶段的几个目标\r\n* 完成第一个简单的Move智能合约\r\n* 成功部署到测试网络\r\n* 提交认证：\r\n\r\n其实第一阶段的目标很简单，就是完成第一个Move智能合约，然后部署到测试网络。（ 好像什么都没说。。。）\r\n### 准备工作\r\n* 安装好Move语言，并配置好环境变量。\r\n* 资料基本汇总地 https://github.com/movefuns/SuiStartrek\r\n* 通读 Sui Book 中文 这篇文章，对Move语言有基本的了解。\r\n* 仔细了解编译部署的hello world 文章 https://intro-zh.sui-book.com/unit-one/lessons/5_hello_world.html\r\n\r\n### 以上准备工作做全后，就可以开始写第一个Move智能合约了。\r\n首先建立一个文件夹，命名为 `myFirstTask`\r\n```\r\nmd myFirstTask\r\n```\r\n\r\n然后进入文件夹，运行命令\r\n```\r\nsui move new myFirstTask\r\n```\r\n\r\n不出意外的话，会建立一个目录 myFirstTask\r\n```\r\ncd myFirstTask\r\ndir\r\n```\r\n\r\n这个目录下，会有一个 `sources` 文件夹，和一个 `Move.toml` 文件。\r\n\r\n可以用vscode打开myFirstTask这个文件夹,可以看得更清楚一些。\r\n\r\n\r\n![vscode1.jpg](https://img.learnblockchain.cn/attachments/2024/02/0GddLm1P65c65a43e583a.jpg)\r\n\r\n然后，在 `sources` 文件夹下，建立一个文件 `HelloWorld.move`\r\n\r\n![vscode2.jpg](https://img.learnblockchain.cn/attachments/2024/02/2q59gWNm65c65a4f2cc56.jpg)\r\n\r\n输入一个空的结构\r\n```\r\nmodule myfirsttask::hello {\r\n\r\n    // module contents\r\n    \r\n}\r\n```\r\n\r\n引入一下 modules:\r\n```\r\nuse std::string;\r\nuse sui::object::{Self, UID};\r\nuse sui::transfer;\r\nuse sui::tx_context::{Self, TxContext};\r\n```\r\n\r\n增加一个结构体\r\n```\r\nstruct HelloWorldObject has key, store {\r\n        id: UID,\r\n        text: string::String\r\n}\r\n```\r\n\r\n增加一个函数\r\n```\r\npublic entry fun mint(ctx: &mut TxContext) {\r\n    let object = HelloWorldObject {\r\n        id: object::new(ctx),\r\n        text: string::utf8(b\"Hello World!\")\r\n    };\r\n    transfer::transfer(object, tx_context::sender(ctx));\r\n}\r\n```\r\n\r\n一个完整的 Move 智能合约就写完了。\r\n\r\n![vscode3.jpg](https://img.learnblockchain.cn/attachments/2024/02/c9QPpW2i65c65a5d74f0a.jpg)\r\n\r\n然后，编译这个合约\r\n```\r\nsui move build\r\n```\r\n\r\n没有报错的情况是这样显示\r\n```\r\nINCLUDING DEPENDENCY Sui\r\nINCLUDING DEPENDENCY MoveStdlib\r\nBUILDING myFirstTask\r\n```\r\n\r\n开发环境确认\r\n```\r\n╭─────────┬─────────────────────────────────────┬────────╮\r\n│ alias   │ url                                 │ active │\r\n├─────────┼─────────────────────────────────────┼────────┤\r\n│ devnet  │ https://fullnode.devnet.sui.io:443  │        │\r\n│ mainnet │ https://fullnode.mainnet.sui.io:443 │        │\r\n│ testnet │ https://fullnode.testnet.sui.io:443 │ *      │\r\n╰─────────┴─────────────────────────────────────┴────────╯\r\n```\r\n\r\n发布合约到测试网\r\n```\r\nsui client publish  --gas-budget 100000000\r\n```\r\n\r\n控制台会出现一大堆输出,找到\r\n```\r\nPublished Objects:                                                                                 │\r\n│  ┌──                                                                                             │\r\n│  │ PackageID: 0x99690452e2d8ff5fc2d7860aa7e8cb89cadc6ab105473408815f3d248290aaee                 │\r\n│  │ Version: 1                                                                                    │\r\n│  │ Digest: 2FGA4eEpXE4HG2qUgmx2LswaLGPeLRJp9ediiWxvSfzn                                          │\r\n│  │ Modules: hello\r\n```\r\n\r\n\r\n复制 PackageID 0x99690452e2d8ff5fc2d7860aa7e8cb89cadc6ab105473408815f3d248290aaee\r\n\r\n到 https://suiexplorer.com/\r\n\r\n查找PackageID的时候记得切刀 Testnet环境\r\n\r\n![suiexelorper.jpg](https://img.learnblockchain.cn/attachments/2024/02/XcdNklPO65c65a6c7ede5.jpg)\r\n\r\n执行 Execute 前记得链接钱包并调整到 testnet模式\r\n\r\n\r\n![suiexelorper1.jpg](https://img.learnblockchain.cn/attachments/2024/02/aLCYX43E65c65a75e225b.jpg)\r\n查看 0x55bde8d7fade2c3ce809bde343fcaabc2062d99bc3a7e1b0b0142418ca94ba6b 这个object的内容\r\n\r\n\r\n![suiexelorper2.jpg](https://img.learnblockchain.cn/attachments/2024/02/eKVAwMxt65c65a7ed3892.jpg)\r\n看见 hello world 已经上链\r\n\r\n第一阶段已经基本大功告成了！\r\n然后在git上根据要求提交pr，如何pr在官网也有详细介绍，找如何参与那一段，写的很详细。\r\n\r\nGitHub - movefuns/SuiStartrek\r\n\r\n就可以联系助教，通过审核后就可以获取巨额奖金了！\r\n\r\n\r\n\r\nMove语言学习交流QQ群: 79489587\r\n\r\nSui官方中文开发者电报群: https://t.me/sui_dev_cn"},"author":{"user":"https://learnblockchain.cn/people/18444","address":null},"history":null,"timestamp":1707498178,"version":1}