返回 Skill 列表
extension
分类: 开发与工程无需 API Key

turbos

当用户询问关于Turbos Finance、Turbos CLMM、Turbos DEX、Turbos集中流动性,或者希望在Sui上与Turbos集成时,应使用此技能。涵盖交换、多跳路由、仓位管理、流动性提供和池查询。

person作者: jakexiaohubgithub

Turbos Finance on Sui

Turbos is a concentrated liquidity market maker (CLMM) DEX on Sui. Like Cetus, it uses a Uniswap V3-style tick-based AMM, but pools are parameterized with a third type parameter T2 representing the fee tier.

Package IDs

| Package | Original ID | Description | |---------|------------|-------------| | CLMM Core | 0x91bfbc386a41afcfd9b2533058d7e915a1d3829089cc268ff4333d54d6339ca1 | Pool, position, swap, fee logic |

Source Files

Decompiled Move source: packages/mainnet_most_used/0x54/61b2aa79e5da5057da1d51c6e988354bcd974328128edbf5c3d38a4c4ab75e/decompiled_modules/

Architecture

  • Pool<T0, T1, T2>: CLMM pool where T2 is a fee tier witness type (e.g., fee::FeeType500, fee::FeeType3000, fee::FeeType10000)
  • TurbosPositionNFT: Owned NFT referencing a position in the Positions table
  • Positions: Shared object storing all position data (keyed by NFT address)
  • Fee<T0>: Fee tier configuration (fee amount + tick spacing)
  • Versioned: Version gate for upgradeable contracts
  • PoolConfig: Pool registry tracking deployed pools

Key Modules

| Module | Purpose | |--------|---------| | pool | Pool struct, flash swap, state queries, tick/position lookups | | swap_router | Entry points for single-hop and multi-hop swaps | | position_manager | Mint, burn, increase/decrease liquidity, collect fees/rewards | | pool_factory | Pool deployment, protocol fee collection, admin operations | | pool_fetcher | Read-only swap simulation, tick fetching | | fee | Fee tier types and configuration | | position_nft | TurbosPositionNFT struct and accessors | | math_swap | Core swap computation math | | math_liquidity | Liquidity <-> amount conversions |

Common Integration Patterns

Swap A to B

// Single-hop swap (entry function)
swap_router::swap_a_b<CoinA, CoinB, FeeType>(
    pool, coins_in, amount, amount_threshold,
    sqrt_price_limit, amount_specified_is_input,
    recipient, deadline, clock, versioned, ctx
);

// With return value (programmable)
let (coin_out, coin_remaining) = swap_router::swap_a_b_with_return_<CoinA, CoinB, FeeType>(
    pool, coins_in, amount, amount_threshold,
    sqrt_price_limit, amount_specified_is_input,
    recipient, deadline, clock, versioned, ctx
);

Swap B to A

swap_router::swap_b_a<CoinA, CoinB, FeeType>(
    pool, coins_in, amount, amount_threshold,
    sqrt_price_limit, amount_specified_is_input,
    recipient, deadline, clock, versioned, ctx
);

Multi-Hop Swap (A->B->C)

swap_router::swap_a_b_b_c<A, B, FeeAB, B, C, FeeBC>(
    pool_ab, pool_bc, coins_in, amount, amount_threshold,
    sqrt_price_limit_ab, sqrt_price_limit_bc,
    amount_specified_is_input, recipient, deadline,
    clock, versioned, ctx
);

Mint Position (Add Liquidity)

position_manager::mint<CoinA, CoinB, FeeType>(
    pool, positions, coins_a, coins_b,
    tick_lower_index, tick_lower_is_neg,
    tick_upper_index, tick_upper_is_neg,
    amount_a_desired, amount_b_desired,
    amount_a_min, amount_b_min,
    recipient, deadline, clock, versioned, ctx
);

Decrease Liquidity + Collect

position_manager::decrease_liquidity<CoinA, CoinB, FeeType>(
    pool, positions, nft, liquidity_delta,
    min_amount_a, min_amount_b, deadline,
    clock, versioned, ctx
);
position_manager::collect<CoinA, CoinB, FeeType>(
    pool, positions, nft, amount_a_max, amount_b_max,
    recipient, deadline, clock, versioned, ctx
);

Pool Queries

let (balance_a, balance_b) = pool::get_pool_balance<T0, T1, T2>(pool);
let sqrt_price = pool::get_pool_sqrt_price<T0, T1, T2>(pool);
let tick = pool::get_pool_current_index<T0, T1, T2>(pool);
let liquidity = pool::get_pool_liquidity<T0, T1, T2>(pool);
let fee = pool::get_pool_fee<T0, T1, T2>(pool);

Compute Swap Result (read-only quote)

let result = pool_fetcher::compute_swap_result<T0, T1, T2>(
    pool, a_to_b, amount, by_amount_in,
    sqrt_price_limit, clock, versioned, ctx
);

Related Skills

  • cetus -- Primary CLMM DEX on Sui (similar architecture, no fee type param)
  • deepbook -- CLOB DEX
  • kriya -- AMM/PMM DEX
  • sui-framework -- Core Coin, Balance types