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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
不変量
Constant-product マーケットメーカー(CPMM)は 2 つのリザーブx と y を保有し、以下を強制します:
k はトレード前のリザーブの積です。フィーなしのマーケットの場合、x · y = k は正確です。フィーがある場合、k は厳密に増加します(フィーの LP シェアはリザーブに保持されます)。
この不変量は意図的に幾何学的です:一方のリザーブがいかに小さくなっても、他方は無限に成長してマッチすることを保証します。つまり、プールはどちらの側でもゼロになることはできません。
価格設定
スポット価格
任意の時点でのx で表示される y の限界価格は、曲線の接線です:
x · y = k の暗黙微分により dy/dx = −y/x が得られます。符号を無視すると、|dy/dx| = y/x)。
これはプールが無限小のトレードで提示する価格です。有限のトレードの場合、実現価格は曲線に沿ったスリッページのため悪化します。
正確な入力スワップ(Δx をあげ、Δy を受け取る)
フィーがある場合、f をフィーレート(例:f = 0.0025 は 25 bps)とします。フィーを入力に適用してから、不変量を使用して出力を解きます:
Δx がリザーブに入ります。LP ポーション のフィーは x' に留まります。プロトコルポーションは別の会計ステップを通じて曲線から除外されます(以下のフィー会計バリエーションを参照)。
正確な出力スワップ(Δy を受け取り、最小限の Δx を払う)
Δx は、プールが過度に割引しないことを確認するために切り上げられます。
スリッページと価格への影響
価格への影響 は、トレードの結果としてプールのスポット価格がどのくらい動くかを測定します:Δx / x の場合、1 次展開は次を与えます:
p_before と effective の間のスプレッドはスリッページです。オンチェーンの slippage UI は通常 (effective − p_before) / p_before として表現されます。SDK の computeAmountOut がこの理由で amountOut と priceImpact の両方を返します。
コード内の不変量チェック
スワップ後、プロトコルは再度確認します:フィー会計バリエーション
不変量チェックは LP フィーがリザーブに留まることを前提としています。異なる Raydium プロダクトはプロトコル / ファンド / クリエーター コンポーネントを異なる方法で処理します:CPMM 規約
フィーは1_000_000 デノミネーターの u64 ベーシスポイント のようなレートです。トレードフィーは trade_fee_rate(合計)に分割され、その後 protocol_fee_rate、fund_fee_rate、creator_fee_rate を通じて細分化されます。各スワップで:
protocol_fees_*、fund_fees_*、creator_fees_*)に蓄積し、不変量に使用されるリザーブから除外されます。これはフィーを曲線を動かさずにスイープできる方法です。products/cpmm/feesを参照してください。
AMM v4 規約
フィーは10_000 デノミネーター上の numerator / denominator 比率です。スプリットはプール作成時に固定され、AmmInfo.fees に格納されます:
pnl_share は state_data.need_take_pnl_* に蓄積し、リザーブから除外されます。lp_share はボールトに留まります。products/amm-v4/feesを参照してください。
両方の規約は同じ方法で不変量を保持します。違いは化粧的です(デノミネーター + サブカテゴリー数)。
丸めルール
- フィー計算は切り上げます。 プールがフィーで過度に割引しないことを確認します。
- 出力額は切り下げます。 不変量が厳密に成り立つことを確認します(フィーが追加される前でも
k' > k)。 - 正確な出力入力額は切り上げます。 ユーザーが過度に支払わないことを確認します。
x · Δx 積に u128 を使用します。最終結果は飽和チェック付きで u64 にキャストされます。
エッジケース
空のプール
最初のDeposit の前に、x = y = 0。スワップ命令は事前デポジットを拒否します。
ゼロ出力
Δx が十分に小さいため、切り下げられた Δy が 0 の場合、命令は ZeroTradingTokens で戻ります。これは支払いなしで価値を抽出することを防ぎます。また、バランスの悪いプール上のダストスワップが失敗することを意味します。
ダスト LP
最初のDeposit には特別な処理があります。初期 LP サプライを sqrt(x · y) として計算し、小さな「初期化バーン」量(通常は 100 LP ユニット)をバーンして、「最初のデポジター インフレーション攻撃」を防ぎます(攻撃者がボールトに寄付して LP トークン価値をインフレさせる場所)。その後のデポジットは比例数学を使用します。
アービトレージとの関係
CPMM プールの価格は以下を通じてのみ変化します:- プール自体を通じたトレード(ユーザーが曲線を歩く)。
- 寄付(スワップなしにボールトにトークンを送信)。
計算例
例 1 — 小規模トレード、スリッページは無視できる
プール:x = 1_000_000, y = 2_000_000, k = 2·10^12。フィー f = 0.0025。
トレード Δx = 1_000:
1000 / 1993.01 ≈ 0.5018。前のスポット:0.5。影響:~0.36%。
例 2 — 中規模トレード、目に見えるスリッページ
同じプール、Δx = 100_000(x の 10%):
100_000 / 181_405 ≈ 0.5513。影響:~10.3% — 2 · 10% = 20% の経験則のおおよそ半分(その経験則はフィーなしの constant-product 曲線の最悪ケース上限です。トレードフィーと数式の反転がそれを下げます)。
ポインター
products/cpmm/math— CPMM の特定の丸め + フィーデノミネーター選択。products/amm-v4/math— AMM v4 の OpenBook 統合リザーブがこのモデルを拡張する方法。algorithms/slippage-and-price-impact— UI のスリッページ許容度サイズに関する専用ページ。
- Uniswap v2 ホワイトペーパー —
x · y = kの標準的なステートメント。 - Raydium CPMM プログラムソース。
- Raydium AMM v4 プログラムソース。


