基础命令介绍
运行以下命令将 sui 客户端连接到 Sui 网络。
sui client
第一次启动 sui 客户端时如果没有 client.yaml 文件,控制台可能会提示如下错误,按照提示输入 y 即可:
Config file ["<PATH-TO-FILE>/client.yaml"] doesn't exist, do you want to connect to a Sui Full node server [y/N]?
并按 Enter 连接到默认的测试网络。
Sui Full node server URL (Defaults to Sui Devnet if not specified) :
接下来输入 0、1 或 2 选择 keypair 生成方案(密钥方案),生成钱包地址:
Select key scheme to generate keypair (0 for ed25519, 1 for secp256k1, 2 for secp256r1):
Sui 返回类似以下内容的消息(取决于您选择的密钥方案),其中包括地址和该地址的 12 个字的助记词:
Generated new keypair for address with scheme "ed25519" [0x24ddd392f33ab29f2c4a557e0e9fe0943760a078c41487cf807c158ab20067f3]
Secret Recovery Phrase : [xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx]
生成钱包地址是开始使用 Sui 网络的第一步,钱包地址用于接收和管理 SUI 代币以及其他数字资产。我们在上一步可以生成钱包地址,也可以使用以下命令生成一个新的钱包地址,请选择任意的密钥方案(ed25519 或者 secp256k1 或者 secp256r1)
sui client new-address [ed25519 | secp256k1 | secp256r1]
执行该命令后,Sui CLI 将生成一个新的钱包地址及助记词信息,并显示在终端中。你可以将此地址用于接收 SUI 代币。
在开发过程中,可能需要查看自己的钱包地址。使用以下命令可以列出所有生成的钱包地址,以及当前激活的地址(以星号标注):
sui client addresses
在测试网中,你可以免费获取 SUI 代币来进行开发和测试。使用以下命令请求测试代币:
sui client faucet
该命令将向你的钱包地址分发一定数量的测试代币。你可以多次通过这个命令获取足够的代币用于各种测试操作。
查看当前用户所拥有的对象,可以使用以下命令:
sui client objects
更多的 sui cli 命令,我们可以使用如下命令查询:
sui client --help
要创建一个新的 Sui 应用程序,首先需要使用 sui move new 命令,后面跟上应用程序的名称。以下是创建名为 hello_move 的程序的命令:
sui move new hello_move
使用 sui move new 命令后,将自动为应用程序创建如下目录结构,并预创建所有必要的文件:
1└── hello_move
2 ├── Move.toml # Package 配置文件
3 ├── sources # 源文件目录
4 │ └── hello_move.move
5 └── tests # 测试文件目录
6 └── hello_move_tests.move
●Move.toml 文件定义了 package 的配置设置,包括包的基本信息、依赖信息、命名地址等内容。
●sources/ 目录包含 .move 扩展名的 Move 源文件,实现了智能合约的具体逻辑。
●tests/ 目录包含测试文件,这些文件不包括在常规构建过程中,仅在测试和开发模式下使用。
在 Sui Move 语言中,程序会在发布到区块链之前被组织成一个包 (package)。包由唯一地址所标识,包内有包含函数、结构体、类型等的模块 (module)。我们在 sources/hello_move.move 文件中填入以下内容,对于 hello_move::hello_move 而言,第一个 hello_move 为包名,第二个 hello_move 为模块名称,该模块只有一个简单的 hello_world 函数,返回指定的字符串:
module hello_move::hello_move {
use std::string::{Self, String};
public fun hello_world() : String {
string::utf8(b"hello world")
}
}
在将包发布到区块链之前,需要将源文件编译成字节码。编译过程如下:
# 在 hello_move 文件夹中运行
sui move build
# 或者,如果你没有进入该目录,可通过 —path 设置对应的编译目录。
sui move build --path hello_move
编译成功后,终端将显示相关的编译信息:
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING hello_move
在运行测试前,应确保在 tests/ 文件夹中有正确的测试代码。Move 编译器支持在 Move 语言中编写的测试,并自动发现标有 #[test] 属性的测试。
将 tests/hello_move_test.move 文件中的内容替换为以下测试模块:
#[test_only]
module hello_move::hello_move_test {
use hello_move::hello_move;
const ENotEqual: u64 = 1;
#[test]
fun test_hello_move() {
assert!(hello_move::hello_world() == b"hello world".to_string(), ENotEqual);
}
}
现在我们已经准备好测试,执行以下命令来编译 package 并运行测试:
sui move test
如果测试执行成功,终端将显示以下信息:
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING hello_move
Running Move unit tests
[ PASS ] 0x0::hello_move_test::test_hello_move
Test result: OK. Total tests: 1; passed: 1; failed: 0
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!