Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →

1 段落での要約

CLMM(Concentrated Liquidity Market Maker)は、Raydium の Uniswap v3 スタイルの AMM です。流動性プロバイダーの預金を価格曲線全体に分散させるのではなく、CLMM では LP が特定の価格範囲に預金できます。その範囲内では、預金の 1 ドルあたりの生産性は CPMM プールの場合よりも何倍も高くなります。範囲外では、預金は何も稼がず、単一側のバランスとして保持されます。プログラムはティック(離散化された価格バケット)ごとに流動性を追跡し、プール状態を Q64.64 固定小数点数(sqrt_price_x64)としてエンコードされた価格の平方根で価格設定し、各 LP ポジションに対して流動性トークンではなく NFT をミントします。

新機能

最新の CLMM リリースは、Uniswap v3 スタイルのコアの上に 3 つの追加機能を搭載しています。これらはプール作成時にオプトインでき、既存のプールとポジションとの後方互換性があります。
  • リミットオーダー。 LP は特定の価格で単一ティックのオーダーを配置でき、スワップがそのティックを横切るときにスワップパスが FIFO で約定させます。オーダーはリミット価格で所有者の ATA に決済されます。オフチェーンキーパー(limit_order_admin)は、所有者がオンラインでなくても約定したオーダーをスイープできます。Instructions → OpenLimitOrder / SettleLimitOrder および Math → Limit-order matching during swap を参照してください。
  • 単一側フィー(CollectFeeOn)。 プールは、スワップフィーを入力側から取得する(レガシー動作、モード 0)、または常に token_0 から取得する(1)、または常に token_1 から取得する(2)ように設定できます。ペアの一方が正規の会計トークンである場合(例:USDC)に便利です。Fees → Single-sided fee を参照してください。
  • ダイナミックフィー。 プールは、急速なティック移動で上昇し、時間とともに減衰する変動性追跡フィーサーチャージにオプトインできます。ティアごとの DynamicFeeConfig とプールごとの DynamicFeeInfo によってキャリブレーションされます。Fees → Dynamic fee および Math → Dynamic fee derivation を参照してください。
新しい命令 CreateCustomizablePool は、プール作成時にこれら 3 つのノブをすべて公開します。従来の CreatePool は、リミットオーダーやダイナミックフィーなしのデフォルトフィープールで引き続き機能します。 後のリリースでは、許可制マルチプールが追加されます。CreatePermissionedPool により、ホワイトリストに登録されたオペレーター(Permission PDA を保有する)は、seed_index をプールアドレスに折り込むことで、同じペアとフィーティアに対して複数のプールを作成でき、OpenLimitOrder を強化して、入力または出力トークンアカウントが凍結されているオーダーを拒否します。Instructions → CreatePermissionedPool および 2026-07-30 changelog entry を参照してください。

CLMM がもたらすもの

  • 資本効率。 ステーブルコイン・ステーブルコイン LP がパリティ周辺の ±0.1% バンドに流動性を集中させると、同じペアの CPMM プールと比較して TVL あたりのフィーで 100 倍以上を稼ぐことができます。
  • ポジションレベルのフィー会計。 フィーはプールレベルではなく、ポジションごとに発生します。同じプール上の 2 つのポジションは、その範囲と価格が取った経路に基づいて異なるフィー額を稼ぎます。
  • ペアごとの複数フィーティア。 ペアは複数の CLMM プールを持つことができ、各プールは独自のトレードフィーレートとティック間隔を持つ異なる AmmConfig にバインドされます。Web UI とルーターは、現在の価格で最も流動性が多いティアを表示します。
  • プール上で直接インセンティブ化可能。 最大 3 つのリワードトークンストリームをプールにアタッチできます。ポジションは、提供する秒数 × インレンジ流動性に基づいてリワードを按分で収集します。products/clmm/fees を参照してください。
  • NFT ポジション。 各ポジションは、ミントが決定論的 PDA に等しい非代替トークンです。NFT を転送するとポジションが転送されます。ウォレットと UI は、ポジションを収集品と同じ方法で表示できます。
  • Token-2022 サポート(ペアの両側で、CPMM と同じ拡張制限)。

CLMM ではないもの

  • セットアンドフォーゲット方式ではない。 SOL が $160 のときに設定された範囲は、SOL が $80 に移動した場合、積極的に調整しない限り何も稼ぎません。CLMM はアクティブな LP に報酬を与えます。パッシブな LP は CPMM に留まるべきです。
  • 開設にコストがかからない。 ポジションが横切る新しいティック配列は初期化する必要があり、レントがかかります。広い範囲は安いです。狭い範囲はそうではありません。
  • CLOB ではない。 AMM v4 とは異なり、CLMM は OpenBook 依存性がありません。すべての流動性はティックマップ上に存在します。
  • CPMM のスーパーセットではない。 最大範囲で [tick_min, tick_max] にまたがる CLMM ポジションは CPMM に似た動作をしますが、異なるガスコスト、異なるフィー会計モデル、および流動性トークンがありません。シンプルな流動性トークンプールが必要な場合は、CPMM を使用してください。

CLMM が CPMM および AMM v4 と異なる点

メンタルモデル

CLMM プールを 3 つの重ねられたデータ構造と考えてください。
  1. sqrt_price 空間の連続曲線。 プールの価格は sqrt_price_x64(Q64.64 固定小数点)として表現されます。スワップはこの曲線に沿って移動します。ティック境界内では、数学は標準的な集中流動性 AMM 数学です(algorithms/clmm-math を参照)。
  2. 離散ティックマップ。 価格は 1.0001 の整数乗であるティックに量子化されます。各ティックには既知の sqrt_price があります。ポジションはそのエンドポイントを整数ティックインデックスとして参照します。ティックインデックスは、ストレージ用に固定サイズのティック配列にグループ化されます。
  3. ポジションごとのフィーとリワード簿記。 各ポジションは、最後の更新時の グローバル fee_growth_inside を保存します。LP がポジションに触れるとき(開く、閉じる、調整、収集)、プログラムは保存された値を現在のグローバルから減算して、何が支払われるべきかを計算します。これは Uniswap v3 の feeGrowthInside0X128 / feeGrowthInside1X128 パターンです。
すべてのユーザーアクションは、これら 3 つの構造の状態遷移に分解されます。
  • ポジションを開く: ティック範囲を選択し、トークンを預金し、NFT をミントし、範囲内のティックマップに流動性を挿入し、以前は空だったティック配列を初期化します。
  • 流動性を増加 / 減少させる: NFT の関連ポジションアカウントとティックマップに保存されている金額を調整し、同時に蓄積されたフィーを収集します。
  • スワップ: 現在の sqrt_price_x64 からトレード方向に移動し、入力が枯渇するか次の初期化されたティックに到達するまでアクティブな流動性を消費します。ティックを横切り、新しい側で流動性をピックアップまたはドロップします。
  • フィー / リワードを収集: 各側と各リワードストリームについて fee_growth_inside_now − fee_growth_inside_last × position_liquidity を計算し、転送します。
プール自体は、どのポジションが開いているかについて無関心です。同じ範囲内の 2 つの LP は、個々の liquidity 金額でスケーリングされた同じフィー成長パスを見ます。

CLMM を選ぶべき場合

以下の場合に CLMM を選択してください。
  • 安定またはミーンリバージョンペア(USDC/USDT、jitoSOL/SOL、wBTC/BTC)に流動性を提供し、パリティ付近に集中したい。
  • マーケットメーカーで、価格を監視し、リバランスする意思がある。
  • プールごとのインセンティブ排出が必要で、別のファームを立ち上げたくない。
  • ポジションごとの会計が必要(ボルト、構造化商品など)。
以下の場合は CPMM を選択してください。
  • 未知の価格発見で新しいトークンを立ち上げている。
  • ステーク、ロック、または他のものと組み合わせることができる単一の流動性トークンが必要。
  • パッシブな LP 体験が必要。
以下の場合は AMM v4 を選択してください。
  • AMM v4 が OpenBook に配置するハイブリッド CLOB 深度が特に必要。
  • 既存の AMM v4 統合を移行していて、新しいポジションを開いていない。

ポジションは NFT です

CLMM ポジションはオンチェーンで 2 つのアカウントで表現されます。
  • ポジション NFT ミント(供給量 1)。
  • 個人ポジション状態アカウント(NFT ミントにキーイング)。ポジションのティック、流動性、および最後に観察されたフィー成長値を保持します。
NFT を転送するとポジションが転送されます。個人ポジションアカウントの権限は NFT 所有者です。これは Uniswap v3 が開拓した同じパターンで、Solana のアカウントモデルで実装されています。詳細な説明は products/clmm/ticks-and-positions にあります。
古い CLMM リリースは、その範囲の流動性を集約するために、(pool, tick_lower, tick_upper) ごとに ProtocolPositionState アカウントも作成しました。新しいリリースではそれ以上作成または使用しません。フィールドは ABI 互換性のために OpenPosition / IncreaseLiquidity / DecreaseLiquidity アカウントリストに UncheckedAccount として表示されたままですが、プログラムはそれを読み書きしません。集約範囲簿記はティックエンドポイント(liquidity_grossliquidity_net)に直接存在します。

次のステップ

  • Accounts — プール、設定、ティック配列、およびポジションアカウントレイアウト。
  • Ticks and positions — ティックマップ、ティック間隔、ティック配列サイジング、NFT ベースのポジション。
  • Mathsqrt_price_x64、スワップステップスルー、fee_growth_inside 導出。
  • InstructionsOpenPositionIncreaseLiquiditySwapCollectRewards、リミットオーダーファミリー、および CreateCustomizablePool
  • Fees and rewards — ポジションごとのフィーモデル、単一側フィーモード、ダイナミックフィー、および 3 つのリワードスロット。
  • Code demos — TypeScript でのオープン / 調整 / スワップ / 収集 / リミットオーダー / カスタマイズ可能プールのウォークスルー。
ソース: