sui-move基础(二):letsmove-task1上一篇教程已经完成了sui-move环境的配置,从本节开始,将进行sui-move社区的letsmove系列task学习。看到这里的你如果还不知道letsmove,而想要学习sui-move的话,可以进一步了解:https://github
<img src="https://img.learnblockchain.cn/attachments/2024/11/KCh0F925672f32eaebddd.jpg" alt="image-20241109180430695" style="zoom: 25%;" />
这是sui姬
上一篇教程已经完成了sui-move环境的配置,从本节开始,将进行sui-move社区的letsmove系列task学习。
看到这里的你如果还不知道letsmove,而想要学习sui-move的话,可以进一步了解:https://github.com/move-cn/letsmove。
完成task有相应的sui代币奖励。
鉴于本教程为初学者准备,这里首先介绍一下如何创建ssh秘钥:
创建ssh key,用于ssh方式克隆github代码。在linux环境下,使用ssh-keygen -t rsa -b 4096 -C "你的邮箱"
命令,创建ssh key,下面的选项全部直接敲回车即可。 随后使用cat ~/.ssh/id_rsa.pub
命令查看生成的公钥,并完整的复制下来。 在github仓库界面点击自己的头像,选择settings
。进入到设置页面后,点击左侧的SSH and GPG keys
选项。点击New SSH key
选项,并将复制下来的内容粘贴上去,添加该ssh key的描述。随后点击Add SSH key
,并一路点击确认即可。
以上教程来自opencamp(https://opencamp.cn/)
适用于linux系统。
fork仓库:
进入https://github.com/move-cn/letsmove仓库,点击fork,一路确认即可。
克隆仓库:
进入自己fork下来的仓库,点击绿色的 code
按钮,选择ssh,复制下面框中的地址。
随后来到自己的本地环境,选择一个合适的路径,运行:
git clone git@github.com:你的github id/letsmove.git
如果出现网络问题,请更换节点或魔法开全局或退出魔法。
现在进入刚刚克隆的letsmove目录,应该有如下内容:
(base) amyseer@universe:~/sui/letsmove$ ls
README.md learning_map.md mover task tutorial
进入task目录,仔细阅读其中的readme.md,我这里不再过多赘述。
在重命名001目录后,进入该目录,cd co-learn-2411
(这里可能有区别),cd project
,在该路径下运行:
sui move new hello_move
到这里,建议直接阅读官方文档:https://move.sui-book.com/your-first-move/hello-world.html
截止到目前,建议起码读完直到 你好 sui!
这一章,如果没有编程基础,可能会多花些时间。
module hello_world::hello_world {
// 从标准库导入 `String` 类型
use std::string::String;
/// 返回 "Hello, World!" 作为 `String`。
public fun hello_world(): String {
b"Hello, World!ctianming".to_string()
}
}
这是一份非常简单的代码,现在我们来解析一下,并为大家规避一些坑。
在这一行代码中:
module hello_world::hello_world {
注意第一个hello_world,这时 你的package name,与你运行命令sui move new <your_package_name>
时设定的package一致,并且必须保持一致,否则编译时将出现问题。若要修改,在move.toml中修改,例如:
# For local dependencies use `local = path`. Path is relative to the package root
# Local = { local = "../path/to" }
# To resolve a version conflict and force a specific version for dependency
# override use `override = true`
# Override = { local = "../conflicting/version", override = true }
[addresses]
hello_world = "0x0"
# Named addresses will be accessible in Move as `@name`. They're also exported:
# for example, `std = "0x1"` is exported by the Standard Library.
# alice = "0xA11CE"
[dev-dependencies]
# The dev-dependencies section allows overriding dependencies for `--test` and
# `--dev` modes. You can introduce test-only dependencies here.
# Local = { local = "../path/to/dev-build" }
[dev-addresses]
# The dev-addresses section allows overwriting named addresses for the `--test`
# and `--dev` modes.
# alice = "0xB0B"
address属性中指定地址为0x0的字符串就是你的包名。
而第二个hello_world,这是你的module名,一个package下可以有多个module,每个module可以是一个独立的项目,但是部署在同一地址下。
我们通过use std::string::String;
来引入std::string::String;
这个crate,引入后就可以使用其中定义的结构、函数等(需要被定义为public),例如,我们在这份代码中使用了to_string()
方法。
首先进入我们本地的letsmove
目录,在这个目录下运行
git add .
#your description 改为你想要对改动作的描述,例如finish task1
git commit -m 'your description'
git push
如果在git push
时出现网络问题,请开启或者关闭魔法,总之就是先换个网络环境。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!