在 Sui 链上创建代币(Token)通常涉及编写和部署智能合约(Move 语言)。以下是详细步骤:
1. 准备工作
安装 Sui 开发环境
安装 Rust
安装 Sui CLI(命令行工具):
cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui
验证安装:
sui --version
创建 Sui 钱包
运行
sui client new-address
生成新地址并保存助记词。获取测试网代币
从 Sui DevNet Faucet 获取测试币(用于部署合约)。
2. 编写 Move 智能合约
Sui 上的代币是通过 Move 语言的 自定义 Coin
实现的。以下是一个简单示例:
示例:创建 MY_TOKEN
// 文件: my_token.move module my_token::mycoin { use std::option; use sui::coin; use sui::transfer; use sui::tx_context::{Self, TxContext}; // 代币类型名称(需大写) struct MY_COIN has drop {} // 初始化函数(部署时调用) fun init(witness: MY_COIN, ctx: &mut TxContext) { let (treasury, metadata) = coin::create_currency(witness, 9, b"MY_TOKEN", b"", b"", option::none(), ctx); transfer::public_freeze_object(metadata); transfer::public_transfer(treasury, tx_context::sender(ctx)); } }
关键参数:
9
: 代币精度(如 9 表示 1e-9 的最小单位)。"MY_TOKEN"
: 代币符号。witness
: 一次性类型MY_COIN
用于确保代币唯一性。
3. 部署合约
创建项目目录:
sui move new my_token
将
my_token.move
放入sources/
目录。
2.编译合约:
sui move build
3.部署到 Sui 网络:
sui client publish --gas-budget 100000000
4. 铸造代币
调用合约的 init
函数生成初始供应量:
sui client call \ --function init \ --module mycoin \ --package <PackageID> \ --args "0x0::mycoin::MY_COIN {}" \ --gas-budget 100000000
成功后,代币元数据(如名称、精度)会存储在链上, treasury 账户会获得全部供应量。
5. 查询与转账
查询代币余额:
sui client gas
(如果代币用于支付 Gas,会显示余额)
转账代币:
sui client transfer \ --coin-id <CoinObjectID> \ --to <RecipientAddress> \ --gas-budget 100000000
6. 高级功能(可选)
增发代币:通过
coin::mint
函数在 treasury 权限下增发。销毁代币:通过
coin::burn
函数减少供应量。添加元数据:如图标、描述(需在
create_currency
中设置)。
注意事项
唯一性:Sui 的代币通过类型(如
MY_COIN
)全局唯一,不可重复创建相同类型的代币。权限控制:确保 treasury 能力(
TreasuryCap
)由安全地址持有。测试网验证:先在 DevNet 测试,再部署到主网。
如果不想写代码,可以用GTokenTool工具实现 Sui 一键发币,只需简单的几步就可以实现发币,具体操作如下:
Sui 一键发币:https://sui.gtokentool.com
参数都要填
全称:不支持中文或符号,最多32个字符
简称:不支持中文或符号,需要2~8个字符
精度:默认填9,精度与你能填写的最大供应量有关。
供应数量:当精度为9时,供应量最大不能超过100亿。当精度为8时,不能超过1000亿,以此类推
logo:图片小于100k,尺寸建议256x256像素(正方形)
简介:必填,且不支持中文