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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
インバリアント
プールはcoin_reserve × pc_reserve = k を維持します。定義は以下のとおりです:
- リザーブには OpenBook にコミットされた 金額が含まれます。AMM のリミット・オーダーはそのリクイディティの一部であり、オーダーブックに「失われた」わけではなく、単にそこにエスクローされています。オンチェーン・ボールト・バランスだけから
kを計算すると、リザーブを過小評価することになります。 - PnL 累積(
need_take_pnl_*)は減算されるため、管理者がフィーをスイープするときに曲線が保存されます。これは CPMM のprotocol_fees_*除外と同じ原理です。
Swap* 操作は、LP のフィー・シェアをリザーブに追加した後、k' ≥ k を強制します。
フィー規約
AMM v4 は CPMM / CLMM の1/1_000_000 規約ではなく、比率フィー(分子/分母ペア)を使用します。オンチェーン Fees 構造体(プログラム・ソース内の Fees::initialize を参照)のデフォルトは:
- 総スワップ・フィー:
swap_fee = amount_in × 25 / 10_000 = 0.25%(入力額に対する)。 - プロトコル・シェア:
pnl_numerator / pnl_denominator = 12 / 100 = 12%スワップ・フィーの。つまり0.25% × 12% = 0.03%(ボリュームに対する)。このシェアは PnL カウンターに累積され、WithdrawPnlによってスイープされます。 - LP シェア: スワップ・フィーの残り
88%。つまり0.25% × 88% = 0.22%(ボリュームに対する)。プールに留まり、kをインフレさせます。 - ファンド・シェア なし。 AMM v4 には CPMM/CLMM のファンド・フィー分割がありません。
pnl_numerator / pnl_denominator は取引ボリュームではなく フィーの 分数であることに注意してください。これはこれらのフィールド名の一般的な誤解です。
trade_fee_numerator / trade_fee_denominator(同様に 25 / 10_000)は別フィールドであり、AMM のリミット・オーダー・グリッドの手数料込み価格を計算するとき OpenBook インテグレーションによって使用されます。デフォルトでは swap_fee と等しいですが、別のコード・パスから読み込まれます。
これらのデフォルトからの乖離は稀ですが、いくつかのレガシー・プールに存在します。見積りを示す前に常に AmmInfo.fees からフィーを読み込んでください。
直接スワップ数学(AMM パス)
最もシンプルなケース:ユーザーは OpenBook と相互作用することなく、プール・ボールトに対してスワップを実行します。プールの内部リザーブ(オンブック配分を含む)が分母になります。 SwapBaseIn(正確な入力):coin_vault_balance + coin_posted_on_openbook + ...(AMM のボールト + OpenBook オーダーにロックされたトークン)でした。OpenBook 無効化以降、オンブック・バランスはゼロ であるため、有効リザーブはロー・ボールト・バランスと等しくなります。かつて OpenBook 側をリフレッシュしていた MonitorStep / 暗黙的決済パスは現在実質的に不要です。
SwapBaseOut(正確な出力):
オーダーブック相互作用(歴史的)
現在アクティブではありません。 このセクションで説明されているグリッド構築は、AMM v4 が 元々 曲線を OpenBook マーケットにミラーリングしていた方法を反映しています。OpenBook インテグレーションは無効化されており、プールは OpenBook にオーダーをポストしたり維持したりしません。以下の数学は文脈のために保存されています。これはオンチェーン
target_orders / amm_open_orders アカウントがサイズされた理由と、キーパーが MonitorStep 関連パラメータをクランクしなくなったにもかかわらずプログラムがそれらの検証を継続している理由を説明しています。AmmInfo パラメータから計算されていました:
depth— 片側あたりの価格レベル数。amount_wave— レベルあたりのサイズの基本単位。min_size、coin_lot_size、pc_lot_size— OpenBook マーケット制約。state_data.swap_acc_coin_fee、swap_acc_pc_fee— 最後のTakePnl以降の累積フィー・カウンター。
build_orders で計算された target_orders により決定され、各 MonitorStep で amm_open_orders と比較されます。乖離があるとキャンセルと新規ポストが発生します。OpenBook で新たに約定したオーダーは、OpenBook 側をリフレッシュする次の操作でプール・ボールトに決済されます。
インテグレーターがグリッドを計算する必要はほぼありません(Raydium キーパーがこれを維持します)が、以下を知っておくことは有用です:
- オンブック リクイディティが有意なプールは、そのリクイディティが
kに寄与し、アイドル状態で座っていません。 - 陳腐化した OpenBook マーケット(イベント・キューが満杯、クランクがブロック)はグリッド更新を防止します。AMM は次のクランクまで見えるオーダーブックから乖離した価格を引用できます。
決済ステップ(PnL)
0.03% プロトコル・シェアはstate_data.need_take_pnl_coin と state_data.need_take_pnl_pc に累積されます。TakePnl はこれらの金額をボールトから管理者指定の宛先に移動し、カウンターをゼロにします。
重要な特性:インバリアント内のリザーブは常に マイナス 累積 PnL で計算されるため、TakePnl は曲線を移動させません。これは CPMM 規約と一致しています。
計算例
プール状態:coin_reserve = 1_000_000_000_000(1,000,000 コイン・サイド、6 デシマル)pc_reserve = 2_000_000_000_000(2,000,000 pc・サイド、6 デシマル)- フィー:デフォルト
swap = 25/10_000、pnl = 3/10_000。
SwapBaseIn 正確な入力 1_000_000_000 コイン(1,000 コイン)。
2_200_000)は特に区別されません。k' をレイズする残基です。
精度ルール
- リザーブ乗算は
u128を使用し、最終的な除算はゼロに向かってラウンドします。 swap_feeは切り上げます(プールが過少請求しないように)。SwapBaseOutのamount_inは切り上げます(ユーザーが過少支払いしないように)。- 極端なリザーブ比率を持つプールは、非常に小さな入力で
ZeroTradingTokensにヒットすることがあります。CPMM と同じ規約です。
CPMM との制限事項
- AMM v4 のリザーブは OpenBook エスクロー部分を含むため、インテグレーターは
getTokenAccountBalanceだけで正しく見積りできません。常に完全な状態(ボールト +open_orders.free+open_orders.locked)を取得するか、SDK / API 見積りを使用してください。 - AMM v4 は構造化されたオンチェーン TWAP を公開していません。AMM v4 裏付けの価格を必要とする外部消費者は、トレード・ログから自分自身で計算する必要があります。
- Token-2022 はサポートされていません。
次に見るべきもの
products/amm-v4/instructions—SwapBaseIn、Depositなど が統合される場所。products/amm-v4/fees— 完全なフィー・メカニクス、TakePnlの詳細。algorithms/constant-product— 共有導出。
- Raydium AMM プログラム・ソース —
raydium-io/raydium-amm - Raydium SDK v2
Liquidityモジュール


