引言Sui区块链是一个高性能的Layer1区块链,以其并行执行和低延迟著称。CetusProtocol是Sui生态中的一个去中心化流动性协议,类似于Uniswap或Curve,专注于高效的AMM(自动做市商)机制。稳定池(StablePool)是Cetus中专为稳定币设计的流动性池类型,它
<!--StartFragment-->
Sui区块链是一个高性能的Layer 1区块链,以其并行执行和低延迟著称。Cetus Protocol是Sui生态中的一个去中心化流动性协议,类似于Uniswap或Curve,专注于高效的AMM(自动做市商)机制。稳定池(Stable Pool)是Cetus中专为稳定币设计的流动性池类型,它使用恒定和函数(Constant Sum)或混合模型来最小化无常损失,适合USDC、USDT等稳定资产的交易。
1.初始化Sui CLI:
sui client new-env --alias mainnet
sui client switch --env mainnet
sui client active-address # 显示当前地址
2.导入或创建钱包:
3.验证余额:
sui client gas
如果SUI不足,通过交易所转入。
Cetus稳定池使用CLMM(Concentrated Liquidity Market Maker)变体,支持多资产稳定池(2-4个代币)。关键参数包括:
Cetus提供现成SDK,但如果需要自定义池子,编写Move模块:
1.创建新Sui Move项目:
sui move new my_stable_pool
cd 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。
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.运行脚本:
node createPool.js
这将创建池子并返回Pool ID。
创建池子后,提供流动性以激活它:
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合约花费您的稳定币。
1.测试网测试:切换到Testnet,重复步骤。获取Testnet SUI从水龙头。
2.主网部署:确认所有参数后,在主网执行。
创建流动性:<https://sui.gtokentool.com/zh-CN/LiquidityManagement/createPool>
进入创建流动性页面,右上角选择 Main 网络并连接钱包,建议使用 Suiet 钱包。

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

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


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

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

恭喜!您已在Sui上创建了Cetus稳定池。这将为您提供被动收入机会,通过交易费分成。继续探索Cetus的激励计划(如农场)。
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!