引言
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.tgztar -xzf sui-mainnet-v1.0.0-ubuntu-x86_64.tgzsudo 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 mainnetsui client switch --env mainnetsui client active-address # 显示当前地址
2.导入或创建钱包:
3.验证余额:
如果SUI不足,通过交易所转入。
步骤2: 理解Cetus稳定池结构
Cetus稳定池使用CLMM(Concentrated Liquidity Market Maker)变体,支持多资产稳定池(2–4个代币)。关键参数包括:
步骤3: 准备Move合约(如果自定义)
Cetus提供现成SDK,但如果需要自定义池子,编写Move模块:
1.创建新Sui Move项目:
sui move new my_stable_poolcd my_stable_pool
2.在sources/目录下创建stable_pool.move:
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 }}
说明:这只是简化示例。实际使用Cetus SDK的createPool函数。编译测试:sui move build。
步骤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);
2.编写创建脚本createPool.js:
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.运行脚本:
这将创建池子并返回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. 点击“创建”
弹出钱包后,点击确认。交易成功下方会显示交易哈希,点击哈希可以跳转区块链浏览器查看交易。

结论
恭喜!您已在Sui上创建了Cetus稳定池。这将为您提供被动收入机会,通过交易费分成。继续探索Cetus的激励计划(如农场)。