开发
第一个合约

第一个合约

本小节介绍如何使用 Rooch CLI 创建 Move 合约。

创建项目

rooch move new hello_rooch

执行这个 Rooch CLI 命令后会创建并自动初始化一个 Rooch 合约项目,在项目的根目录,包含一个用于存放 Move 合约代码的 sources 目录,以及一个名为 Move.toml 的清单文件,用于声明当前项目的名称、版本、地址别名(命名地址)和项目的依赖。

hello_rooch 项目的 Move.toml 文件内容:

[package]
name = "hello_rooch"
version = "0.0.1"
 
[dependencies]
MoveStdlib = { git = "https://github.com/rooch-network/rooch.git", subdir = "frameworks/move-stdlib", rev = "main" }
MoveosStdlib = { git = "https://github.com/rooch-network/rooch.git", subdir = "frameworks/moveos-stdlib", rev = "main" }
RoochFramework = { git = "https://github.com/rooch-network/rooch.git", subdir = "frameworks/rooch-framework", rev = "main" }
 
[addresses]
hello_rooch = "0xbc34dd9a140ab26f88f466c9ea7ea14507bc2795dcfd4b6c7ac694dd3c2e1c8d"
std = "0x1"
moveos_std = "0x2"
rooch_framework = "0x3"

编写合约

我们简单编写一个 Move 合约,演示将一个“Hello Rooch!”字符串存储到 Rooch 的帐户存储中。

module hello_rooch::hello_rooch {
    use moveos_std::account;
    use std::string;

    struct HelloMessage has key {
        text: string::String
    }

    entry fun say_hello(owner: &signer) {
        let hello = HelloMessage { text: string::utf8(b"Hello Rooch!") };
        account::move_resource_to(owner, hello);
    }
}

定义一个 HelloMessage 类型,这是包含一个 text 字段的结构体。

接着定义一个入口函数 say_hello,构建一个存储着 Hello Rooch! 的资源实例,并将其移动到帐户存储中。