第一个合约
本小节介绍如何使用 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!
的资源实例,并将其移动到帐户存储中。