mt logoMyToken
ETH Gas
EN

Sui使用 Cetus 创建稳定币流动性池的完整步骤

Favoritecollect
Shareshare

引言

Sui区块链是一个高性能的Layer 1区块链,以其并行执行和低延迟著称。Cetus Protocol是Sui生态中的一个去中心化流动性协议,类似于Uniswap或Curve,专注于高效的AMM(自动做市商)机制。稳定池(Stable Pool)是Cetus中专为稳定币设计的流动性池类型,它使用恒定和函数(Constant Sum)或混合模型来最小化无常损失,适合USDC、USDT等稳定资产的交易。

本教程将指导您在Sui主网上创建自定义的Cetus稳定池。这里介绍2种方法,其一需要一些Sui开发知识和Move语言基础;其二则是通过GTokenTool一键发币平台,不需要专业的知识。注意:区块链操作涉及风险,请确保备份钱包,并在测试网上练习。创建池子可能消耗Gas费,且流动性提供需谨慎评估。

方法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

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.运行脚本:

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查看池子状态。

步骤6: 测试和部署

1.测试网测试:切换到Testnet,重复步骤。获取Testnet SUI从水龙头。

2.主网部署:确认所有参数后,在主网执行。

3.监控:使用Cetus仪表盘 跟踪池子APR和交易量。

方法2

1. 连接钱包

进入GTokenTool创建流动性页面,右上角选择 Main 网络并连接钱包,建议使用 Suiet 钱包。

2. 选择基础代币

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

3. 选择报价代币

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

4. 设置初始价格

5. 填写加池的报价代币数量

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

6. 点击“创建”

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

结论

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

Disclaimer: This article is copyrighted by the original author and does not represent MyToken’s views and positions. If you have any questions regarding content or copyright, please contact us.(www.mytokencap.com)contact
More exciting content is available on
X(https://x.com/MyTokencap)
or join the community to learn more:MyToken-English Telegram Group
https://t.me/mytokenGroup