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 を参照してください。 2026-08 リリースでは、選択された KYC 制限発行者プール向けの条件付きポジション凍結パスが追加されます。新しいポジション NFT ミントはすべてプールを凍結権限として使用しますが、NFT トークンアカウントはデフォルトで凍結されず、転送可能なままです。CLMM は、ポジションが OpenPositionV2 または OpenPositionWithToken22Nft を通じて開かれ、かついずれかのプールミントの凍結権限がプログラムの制限発行者リストと一致する場合にのみ、それを凍結します。所有者は流動性を管理し、一致するポジションを閉じることはできますが、その NFT を転送したり、トークンアカウント所有者を変更したりすることはできません。既存のポジションは遡及的に凍結されません。Ticks and positions → Restricted-issuer positions および 2026-08-17 changelog entry を参照してください。

CLMM がもたらすもの

  • 資本効率。 ステーブルコイン・ステーブルコイン LP がパリティ周辺の ±0.1% バンドに流動性を集中させると、同じペアの CPMM プールと比較して TVL あたり 100 倍以上のフィーを稼ぐことができます。
  • ポジションレベルのフィー会計。 フィーは LP ミントごとではなく、ポジションごとに発生します。同じプール上の 2 つのポジションは、その範囲と価格が取った経路に基づいて異なるフィー額を稼ぎます。
  • ペアごとの複数フィーティア。 ペアは複数の CLMM プールを持つことができ、それぞれが異なる AmmConfig にバインドされ、独自のトレードフィーレートとティック間隔を持ちます。Web UI とルーターは、現在の価格で最も流動性が多いティアを表示します。
  • プール上で直接インセンティブ化可能。 最大 3 つのリワードトークンストリームをプールにアタッチできます。ポジションは、貢献する秒数 × 範囲内流動性に基づいてリワードを按分で収集します。products/clmm/fees を参照してください。
  • NFT ポジション。 各ポジションは非代替トークンです。NFT を転送すると通常、ポジションが転送されます。ウォレットと UI はポジションを収集品と同じ方法で表示できます。基礎となるミントが制限発行者フィルターと一致する V2 ポジションのみが凍結され、転送不可になります。
  • 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 がポジションに触れるとき(開く、閉じる、調整、収集)、プログラムは保存された値を現在のグローバルから差し引いて、何が owed かを計算します。これは 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 ホルダーです。V2 ポジションは、基礎となるボルトミントのいずれかが制限発行者フィルターと一致し、CLMM が作成時に NFT トークンアカウントを凍結する場合にのみ、元の所有者にバインドされたままです。ポジションは CLMM を通じて管理可能で閉じることができます。詳細な説明は 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 でのオープン / 調整 / スワップ / 収集 / リミットオーダー / カスタマイズ可能プールのウォークスルー。
ソース: