Sui 是一个基于 Move 语言开发的高性能、去中心化的 Layer 1 区块链,旨在为去中心化应用(DApps)提供高吞吐量和低延迟的支持。
Sui 是一个基于 Move 语言开发的高性能、去中心化的 Layer 1 区块链。它由 Mysten Labs 团队开发,旨在提供高吞吐量、低延迟的去中心化应用(DApps)平台。Sui 特别注重可扩展性和用户体验,目标是为开发者和用户提供一个高效的区块链生态系统。
Move 是 Sui 链上智能合约编程的核心语言,并通过 Rust 编译和运行,Rust 用于实现 Sui 区块链的底层协议以及 Move 编译器。
Sui
Sui CLI 是为了方便与 Sui 网络交互,包括查询余额、发布合约和发送交易等操作。它提供必要的开发工具,简化复杂操作流程,提高开发和使用 Sui 区块链应用的效率,Sui CLI 是开发和管理智能合约的重要工具。
Sui 官方为多个系统提供一组二进制文件,可以在官方仓库下载,本文以Ubuntu22.04作为环境示例。
下载后进行解压($HOME 目录):
mkdir sui
tar -xvzf sui-mainnet-v1.34.2-ubuntu-x86_64.tgz -C ./sui
解压后主要使用的是 sui 二进制文件,运行其他文件可能需要有 Rust 环境,参考官方文档。
在 $HOME/.bashrc
中添加环境变量:
export PATH=$PATH:~/sui
然后使用 source ~/.bashrc
加载新的环境变量。
检查是否安装成功:
$ sui --version
sui 1.34.2-c9ae0f9282a0
输出版本则表明安装成功。
可以用 sui 提供的客户端钱包地址进行开发:
$ sui client addresses
可以使用以下命令领水,一次可以领1SUI,可以写个 Bash 脚本方便多次使用。
curl --location --request POST 'https://faucet.testnet.sui.io/v1/gas' \
--header 'Content-Type: application/json' \
--data-raw '{
"FixedAmountRequest": {
"recipient": "<YOUR SUI ADDRESS>"
}
}'
注意:<YOUR SUI ADDRESS>
替换为你的Sui钱包地址。
查询余额:
$ sui client balance
[warn] Client/Server api version mismatch, client api version : 1.34.2, server api version : 1.34.1
╭────────────────────────────────────────╮
│ Balance of coins owned by this address │
├────────────────────────────────────────┤
│ ╭─────────────────────────────────╮ │
│ │ coin balance (raw) balance │ │
│ ├─────────────────────────────────┤ │
│ │ Sui 1000000000 1 SUI │ │
│ ╰─────────────────────────────────╯ │
╰────────────────────────────────────────╯
hello_move
项目可以直接使用 sui 命令生成项目结构:
sui move new hello_move
会创建一个hello_move
项目,查看项目结构:
$ cd hello_move
$ tree -l
.
├── Move.toml
├── sources
│ └── hello_move.move
└── tests
└── hello_move_tests.move
Move.toml
: 文件是 move 项目中的一个配置文件,主要用于管理项目的元数据和依赖关系。
sources
: move 合约文件目录。
tests
: 测试文件目录。
在 sources 目录中的 hello_move.move 文件写入以下内容:
module hello_move::hello {
use std::ascii::{String, string};
use sui::object::{Self,UID};
use sui::transfer::transfer;
use sui::tx_context::{TxContext, sender};
public struct Hello has key{
id:UID,
say: String
}
fun init(ctx: &mut TxContext) {
let hello_move = Hello {
id:object::new(ctx),
say: string(b"move"),
};
transfer(hello_move, sender(ctx));
}
}
1、 模块定义
module hello_move::hello
定义一个名为 hello_move::hello
的模块。这是一个命名空间,用于组织相关功能和数据结构。
2、导入库
use std::ascii::{String, string};
use sui::object::{Self, UID};
use sui::transfer::transfer;
use sui::tx_context::{TxContext, sender};
3、定义结构体
public struct Hello has key{
id:UID,
say: String
}
定义一个公共结构体 Hello,并且它是一个键结构体(has key),这意味着 Hello 的实例可以在 Sui 区块链上被唯一标识和存储。 结构体包含两个字段:
4、初始化函数
fun init(ctx: &mut TxContext) {
let hello_move = Hello {
id:object::new(ctx),
say: string(b"move"),
};
transfer(hello_move, sender(ctx));
}
sui client publish
输出如下:
交易摘要(交易哈希)为: 88VdCQL6cNwkMLgVpuXjfa6SxfR5JnY92vGedbSCf6gM ,可以在 sui 的区块链浏览器中查看交易详情。
Sui 链自推出以来,致力于提供高吞吐量和低延迟的去中心化应用平台,与 Sui 一同发展的 Move 语言,作为其智能合约的核心语言,强调安全性和灵活性,适应复杂应用需求。Move 语言的特点在于其资源管理和权限控制,为区块链开发提供了更强的表达能力,受到了越来越多的开发者的关注。随着开发者社区的不断壮大,Sui 和 Move 将共同推动区块链技术的创新与应用,期待未来在各个行业中的广泛落地与应用。
玩得开心☕
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!