sui-move基础(二):letsmove-task1

  • name less
  • 更新于 2024-11-16 21:13
  • 阅读 556

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代币奖励。

fork并克隆仓库

鉴于本教程为初学者准备,这里首先介绍一下如何创建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

如果出现网络问题,请更换节点或魔法开全局或退出魔法。

hello_move

现在进入刚刚克隆的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 &lt;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时出现网络问题,请开启或者关闭魔法,总之就是先换个网络环境。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
name less
name less
江湖只有他的大名,没有他的介绍。