引言
Sui区块链是一个高性能的Layer 1区块链,以其并行执行和低延迟著称。Cetus Protocol是Sui生态中的一个去中心化流动性协议,类似于Uniswap或Curve,专注于高效的AMM(自动做市商)机制。稳定池(Stable Pool)是Cetus中专为稳定币设计的流动性池类型,它使用恒定和函数(Constant Sum)或混合模型来最小化无常损失,适合USDC、USDT等稳定资产的交易。
本教程将指导您在Sui主网上创建自定义的Cetus稳定池。这里介绍2种方法,其一需要一些Sui开发知识和Move语言基础;其二则是通过GTokenTool一键发币平台,不需要专业的知识。注意:区块链操作涉及风险,请确保备份钱包,并在测试网上练习。创建池子可能消耗Gas费,且流动性提供需谨慎评估。
前提条件
在开始之前,确保您具备以下条件:
1.Sui钱包:安装Sui钱包(如Sui Wallet浏览器扩展)或使用Sui CLI。确保钱包中有足够的SUI代币(至少10-20 SUI用于Gas费)。
2.Sui CLI工具:安装Sui CLI(版本1.0+)。通过以下命令安装:
curl -fLJO https://github.com/MystenLabs/sui/releases/download/mainnet-v1.0.0/sui-mainnet-v1.0.0-ubuntu-x86_64.tgz tar -xzf sui-mainnet-v1.0.0-ubuntu-x86_64.tgz sudo mv sui /usr/local/bin
验证安装:sui --version。
3.Node.js和npm(可选,如果使用脚本自动化):用于辅助工具。
4.Cetus SDK:克隆Cetus仓库或通过npm安装Cetus SDK。
npm install @cetusprotocol/cetus-sui-clmm-sdk
5.稳定币资产:准备要添加到池子的稳定币(如USDC on Sui),并确保有足够的流动性(至少1,000 USD等值)。
6.开发环境:VS Code with Move插件,熟悉Sui Move语言。
7.网络:本教程针对Sui主网;测试时切换到Testnet。
警告:创建池子后,提供流动性前检查Cetus合约安全性。方法1
步骤1: 设置Sui CLI和钱包
1.初始化Sui CLI:
sui client new-env --alias mainnet sui client switch --env mainnet sui client active-address # 显示当前地址
2.导入或创建钱包:
如果使用CLI:sui keytool import ...(从助记词导入)。
确保钱包连接到Sui Wallet扩展,并批准CLI访问。
3.验证余额:
sui client gas
如果SUI不足,通过交易所转入。
步骤2: 理解Cetus稳定池结构
Cetus稳定池使用CLMM(Concentrated Liquidity Market Maker)变体,支持多资产稳定池(2-4个代币)。关键参数包括:
Tick Spacing:控制价格范围(稳定池通常为1-10)。
初始价格:基于锚定资产(如1 USDC = 1 USDT)。
费用率:稳定池推荐0.01%-0.05%。
步骤3: 准备Move合约(如果自定义)
Cetus提供现成SDK,但如果需要自定义池子,编写Move模块:
1.创建新Sui Move项目:
sui move new my_stable_pool cd my_stable_pool
module my_stable_pool::stable_pool {
use sui::coin::{Self, Coin};
use sui::tx_context::TxContext;
use cetus_clmm::pool::{Self, Pool};
use cetus_clmm::stable_pool; // 假设Cetus稳定池模块
const EInsufficientLiquidity: u64 = 0;
public entry fun create_stable_pool<T1, T2>(
coin1: Coin<T1>,
coin2: Coin<T2>,
tick_spacing: u64,
fee_rate: u64,
initial_price: u128,
ctx: &mut TxContext
) {
// 初始化池子
let pool = stable_pool::create<T1, T2>(
coin1, coin2, tick_spacing, fee_rate, initial_price, ctx
);
// 添加初始流动性
assert!(coin::value(&coin1) > 0 && coin::value(&coin2) > 0, EInsufficientLiquidity);
pool::add_liquidity(&mut pool, ...); // 详细参数参考Cetus SDK
}
}步骤4: 使用Cetus SDK创建池子
1.安装依赖并配置SDK:
// 在Node.js脚本中
const { JsonRpcProvider, getFullnodeUrl, Ed25519Keypair } = require('@mysten/sui.js');
const { initCetusSDK } = require('@cetusprotocol/cetus-sui-clmm-sdk');
const provider = new JsonRpcProvider(getFullnodeUrl('mainnet'));
const keypair = Ed25519Keypair.fromSecretKey(/* your private key */);
const sdk = initCetusSDK(provider);async function createStablePool() {
// 资产类型:例如 USDC 和 USDT 的Object IDs
const coinTypeA = '0x...::usdc::USDC'; // 替换为实际类型
const coinTypeB = '0x...::usdt::USDT';
// 参数
const tickSpacing = 1; // 稳定池紧凑间距
const feeRate = 100; // 0.01% = 100 basis points
const initialSqrtPrice = Math.sqrt(1.0001); // 近似1:1价格
// 交易块
const tx = await sdk.Pool.createPoolTransaction({
coinTypeA,
coinTypeB,
tickSpacing,
feeRate,
sqrtPrice: initialSqrtPrice * 2**96, // Q64.64格式
});
// 签名并执行
const result = await provider.signAndExecuteTransactionBlock({
signer: keypair,
transactionBlock: tx,
});
console.log('Pool created:', result.digest);
}
createStablePool();3.运行脚本:
node createPool.js
这将创建池子并返回Pool ID。
步骤5: 添加初始流动性
创建池子后,提供流动性以激活它:
1.使用SDK的addLiquidity函数:
// 延续上例
const poolId = '0x...'; // 从结果获取
const amountA = 1000 * 1e6; // 1000 USDC (6 decimals)
const amountB = 1000 * 1e6; // 1000 USDT
const liquidityTx = await sdk.Position.addLiquidityTransaction({
poolID: poolId,
amountA,
amountB,
lowerTick: -100, // 价格范围
upperTick: 100,
});
// 签名执行类似上步2.批准代币:确保钱包批准Cetus合约花费您的稳定币。
3.验证:使用Sui Explorer(https://suiexplorer.com)查看池子状态。
步骤6: 测试和部署
1.测试网测试:切换到Testnet,重复步骤。获取Testnet SUI从水龙头。
2.主网部署:确认所有参数后,在主网执行。
3.监控:使用Cetus仪表盘(https://app.cetus.zone)跟踪池子APR和交易量。
方法2
1. 连接钱包
创建流动性:https://sui.gtokentool.com/zh-CN/LiquidityManagement/createPool
进入创建流动性页面,右上角选择 Main 网络并连接钱包,建议使用 Suiet 钱包。

2. 选择基础代币
选择基础代币后,下面会显示基础代币的余额。

3. 选择报价代币
选择报价代币后,下面会显示报价代币的余额。

4. 设置初始价格

5. 填写加池的报价代币数量
填写好加池的报价代币数量后,会自动计算出基础代币数量。

6. 点击“创建”
弹出钱包后,点击确认。交易成功下方会显示交易哈希,点击哈希可以跳转区块链浏览器查看交易。

常见问题排查
Gas不足:增加SUI余额或优化交易。
合约错误:检查Move编译日志。常见:类型不匹配或Tick越界。
流动性不平衡:稳定池要求初始比例接近1:1。
SDK版本:确保与Cetus最新版本匹配(npm update)。
如果失败:查看交易日志result.effects。
结论
恭喜!您已在Sui上创建了Cetus稳定池。这将为您提供被动收入机会,通过交易费分成。继续探索Cetus的激励计划(如农场)。
