メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

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

1 段落での要約

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

新機能

最新の CLMM リリースは、Uniswap v3 スタイルのコアの上に 3 つの追加機能を搭載しており、プール作成時にオプトインでき、既存のプールとポジションと下位互換性があります。
  • リミットオーダー。 LP はスワップパスが単一ティックオーダーを越えると FIFO でそれを満たすとき、特定の価格でシングルティックオーダーを配置できるようになります。注文はリミット価格で所有者の ATA に決済され、オフチェーン キーパー(limit_order_admin)は所有者がオンラインでなくても満たされたオーダーをスイープできます。Instructions → OpenLimitOrder / SettleLimitOrderMath → Limit-order matching during swap を参照してください。
  • 片側フィー(CollectFeeOn)。 プールは入力側からスワップフィーを取得するよう構成できます(レガシー動作、モード 0)、または常に token_0 から(1)、または常に token_1 から(2)。ペアの一方が標準的な会計トークンである場合に有用です(例:USDC)。Fees → Single-sided fee を参照してください。
  • 動的フィー。 プールは、急速なティック移動で上昇し、時間とともに減衰する変動性追跡フィー追加料金にオプトインできます。ティアごとの DynamicFeeConfig とプールごとの DynamicFeeInfo によってキャリブレーションされます。Fees → Dynamic feeMath → Dynamic fee derivation を参照してください。
新しいインストラクション CreateCustomizablePool は、プール作成時にこれら 3 つのノブをすべて公開します。クラシック CreatePool は、リミットオーダーや動的フィーのないデフォルトフィープールで機能し続けます。

CLMM が提供するもの

  • 資本効率。 ステーブルコイン同士の LP が平価付近の ±0.1% バンドに流動性を集約する場合、同じペアの CPMM プールと比較して、TVL あたりのドルあたり 100 倍以上のフィーを稼ぐことができます。
  • ポジションレベルのフィー会計。 フィーは LP ミント単位ではなくポジション単位で発生します。同じプール上の 2 つのポジションは、範囲と価格が通ったパスに基づいて異なるフィー額を稼ぎます。
  • ペアごとの複数のフィーティア。 ペアは複数の CLMM プールを持つことができ、それぞれが異なる AmmConfig にバインドされており、独自のトレードフィーレートとティック間隔を持ちます。ウェブ 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 に似た動作をしますが、ガスコストが異なり、フィー会計モデルが異なり、代替可能な LP トークンはありません。シンプルな代替可能-LP プールが必要な場合は、CPMM を使用してください。

CLMM と CPMM および AMM v4 の違い

次元AMM v4CPMMCLMM
曲線コンスタント・プロダクトコンスタント・プロダクト集約(ティックベース)
LP シェア代替可能な LP ミント代替可能な LP ミントポジションごとの NFT
流動性は…すべての価格にまたがってすべての価格にまたがってユーザー選択範囲内
フィーティア固定 0.25%AmmConfig ごと(例:0.25%、1%)AmmConfig × ティック間隔ごと
アクティブ管理該当しません該当しません必須
フィー会計プールレベルプールレベルポジションごと
リワード ファーム別の Farm プログラム別の Farm プログラムビルトイン(最大 3 リワード)
Token-2022いいえはいはい
オンチェーン オラクルいいえobservation リングプールごとの observation 配列

メンタルモデル

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)に流動性を提供しており、平価付近に集約したいと考えています。
  • あなたはマーケットメーカーであり、価格を監視してリバランスする意思があります。
  • あなたは具体的にプールごとのインセンティブ発行が必要で、別のファームを立ち上げたくありません。
  • あなたの独自の LP 製品(ボルト、構造化商品など)についてポジションごとの会計が必要です。
以下の場合は CPMM を選択してください。
  • あなたは未知の価格発見を伴う新しいトークンを立ち上げています。
  • あなたはステーク、ロック、または合成できるシングルの代替可能な LP トークンが必要です。
  • あなたはパッシブ 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 アカウントを作成しました。新しいリリースはそれを作成または使用しなくなります — フィールドは OpenPosition / IncreaseLiquidity / DecreaseLiquidity アカウント リストに UncheckedAccount として引き続き表示されます(ABI 互換性のため)が、プログラムはそれを読み取りまたは書き込みません。集計範囲簿記はティック エンドポイント(liquidity_grossliquidity_net)に直接置かれます。

次に進むべきこと

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