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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
2つの独立したフィー、4つの宛先
CPMMはすべてのスワップに対してレートが別々に設定された2つのフィーを課します。- トレードフィー —
AmmConfig.trade_fee_rateで請求され、3つの宛先に分割されます:- LPシェア — バルトに留まり、
kを増やします。LPトークンをバーンすることで暗黙的に請求されます。 - プロトコルシェア —
PoolState.protocol_fees_token*に計上され、protocol_ownerがCollectProtocolFee経由で回収します。 - ファンドシェア —
PoolState.fund_fees_token*に計上され、fund_ownerがCollectFundFee経由で回収します。
- LPシェア — バルトに留まり、
- クリエイターフィー(オプション、プールごと) —
AmmConfig.creator_fee_rateで請求され、トレードフィーとは独立して、PoolState.creator_fees_token*に計上され、pool_state.pool_creatorがCollectCreatorFee経由で回収します。プールがenable_creator_fee = trueで作成された場合のみアクティブです。
trade_feeからのみ導出され、creator_feeからは導出されません。creator_fee_rate = 1000(0.10%)とtrade_fee_rate = 2500(0.25%)のプールは、クリエイターフィーが入力側の場合、入力の合計0.35%を請求し、そのうちクリエイターが0.10%を保持し、トレードフィーバケットが0.25%を受け取ります。
トレードフィーレート(trade_fee_rate、protocol_fee_rate、fund_fee_rate)とクリエイターフィーレートはすべてAmmConfigに配置されます。プールごとのenable_creator_feeフラグとクリエイターフィーモード(トレードのどちら側からクリエイターフィーを取得するか)はPoolStateに配置されます。products/cpmm/accountsを参照してください。
レートと単位
すべてのレートは1 / FEE_RATE_DENOMINATORの単位で示されるu64です。ここでFEE_RATE_DENOMINATOR = 1_000_000です。
trade_fee_rateはスワップボリュームの分数です。2500⇒ 関連する側(creator_fee_onに応じて入力または出力)のボリュームの0.25%。creator_fee_rateはスワップボリュームの分数で、トレードフィーとは別に取得されます。1000⇒ 関連する側のボリュームの0.10%。protocol_fee_rateと**fund_fee_rate** はボリュームではなく、トレードフィーの分数です。120_000⇒ トレードフィーの12%。
AmmConfig[index=0](「標準」0.25%プール)のデフォルトパラメータ参照用:
| フィールド | 値 | 実効パーセンテージ |
|---|---|---|
trade_fee_rate | 2500 | ボリュームの0.25%(トレードフィーバケット) |
protocol_fee_rate | 120000 | トレードフィーの12% ≈ ボリュームの0.030% |
fund_fee_rate | 40000 | トレードフィーの4% ≈ ボリュームの0.010% |
creator_fee_rate | 0(デフォルト) | 0%(別バケット) |
| → LP シェア実効 | ボリュームの0.210% |
AmmConfig[0]に対する$1,000スワップでenable_creator_fee = falseの場合:$2.50の合計トレードフィー、そのうち$2.10はLPに残り、$0.30はプロトコルに、$0.10はファンドに行きます。クリエイターフィーが無効化されているため、クリエイターバケットは0です。
同じプールがenable_creator_fee = trueとcreator_fee_rate = 1000(0.10%)を持っていた場合、ユーザーはクリエイターバケットに追加で$1.00を支払う — creator_fee_onで設定されたトレードの同じ側から取得 — 合計$3.50のフィーになります。トレードフィーバケットとそのプロトコル/ファンド分割は変わりません。
現在のメインネット値をGET https://api-v3.raydium.io/main/cpmm-configで確認してください — レートは管理者が変更可能で、ハードコーディングするのではなく新鮮に読む必要があります。
コードでの分割
- 入力の合計フィーは切り上げなので、プールは決してフィーの過少請求をしません。
trade_feeのサブスプリット(プロトコル、ファンド)は切り下げなので、合計はtrade_feeを超えません;残りはLPシェアです。lp_share = trade_fee − protocol_fee − fund_fee(creator_fee はこれが独自バケットであるため、差引かれません)。- クリエイターフィーは
PoolState.creator_fee_onに応じて入力側または出力側から取得されます(次のセクションを参照)。レートはどちらの場合でも変わりません。
トレードのどちら側からフィーを取得するか
CPMMにはプールごとのcreator_fee_on設定(BothToken / OnlyToken0 / OnlyToken1)があり、クリエイターフィーを特定のスワップの入力側または出力側から取得するかを決定します。ランタイムヘルパーis_creator_fee_on_input(direction)はそれをスワップごとのブール値に圧縮します:
creator_fee_on | スワップ 0 → 1 | スワップ 1 → 0 |
|---|---|---|
BothToken(0) | 入力側 | 入力側 |
OnlyToken0(1) | 入力側 | 出力側 |
OnlyToken1(2) | 出力側 | 入力側 |
amount_inから差引かれます。見積もり計算:入力から組み合わせたtrade_rate + creator_rateを取得します。
クリエイターフィーが出力側の場合、トレードフィーのみがamount_inから差引かれます;カーブは未処理の出力を生成し、その後クリエイターフィーはその出力から差引かれます。見積もり計算:入力からtrade_rateを取得;出力からcreator_rateを取得します。
トレードフィー自体は常に入力側から取得されます(標準的なUniswap-V2パターン)。クリエイターフィーのみが出力に到達できます。
「計上」フィーがカーブとどのように相互作用するか
重要な微妙な点:プロトコル、ファンド、クリエイターのフィーは、それぞれのCollect*命令が呼ばれるまで物理的にバルトに留まります。しかし、それらはバルトバランスのカーブ側からは除外されます。
1回のスワップ後の具体的な図:
k' ≥ kを強制するときにcurve_x(および同様のcurve_y)を使用します。これは、LP シェアをインフレさせずに、非 LP フィーがそれらの宛先に到達する方法です。
設計時に考慮すべき結果:
- 生のバランスから見積もるのは間違いです。
getTokenAccountBalanceを使用して見積もりを構築する場合、プールが承認する価格を一貫して過大評価します。計上されたフィーを常に差引くか、SwapBaseInput/ API経由でシミュレートしてください。 CollectProtocolFeeは価格を動かしません。 バルトからトークンを移動し、かつprotocol_fees_token*カウンターをゼロにするため、curve_xとcurve_yは変わりません。- LPフィーはカウンターに計上されません。 バルトバランスに暗黙的です。蓄積されたLPフィーへのLPの権利は、LPトークンをバーン(つまり
Withdraw経由)することで行使されます —CollectLpFeeはありません。
Token-2022転送フィーとの相互作用
Token-2022転送フィーはCPMM により、ミントによって適用されます。スワップ、デポジット、ウィズドロウ、およびCollect*スイープを含むすべてのトークン転送に作用します。CPMMのトレードフィー計算は、実際にバルトに着地した金額、つまり入力ミントの転送フィーを差し引いた金額(存在する場合)に対して計算されます。
したがって最悪の場合、ユーザーは入力額確定スワップで3つの異なる税を支払う:
- 入力ミントの
amount_inに対する転送フィー(ミントのフィー権限に)。 - プールの
trade_feeで残金(上記のように分割)。 - 出力ミントの
amount_outに対する転送フィー(ミントのフィー権限に)。
minimum_amount_outはユーザーが実際に受け取る金額で示されます。独自の見積もりを書く場合は、その動作をミラーするか、スリップページチェックが体系的に寛容になります。
詳細な導出についてはalgorithms/token-2022-transfer-feesを参照してください。
クリエイターフィー
クリエイターフィーはオプションでプールごとです。レートはAmmConfig.creator_fee_rateに、有効化フラグと側(creator_fee_on)はPoolStateに配置されます:
- プール作成時に有効化。
Initializeはデフォルトでenable_creator_fee = falseを設定します;InitializeWithPermission経由で作成されたプール(LaunchLab卒業やその他のゲート付きパスで使用)はenable_creator_fee = trueを渡し、creator_fee_onを選択できます。 - レートはフィーティアと共有。 レート自体は
AmmConfig.creator_fee_rateで、そのコンフィグに結合されたすべてのプール間で同じ値です。各プールはそれを請求するかどうか(enable_creator_fee)と、スワップのどちら側を請求するか(creator_fee_on)を決定します。enable_creator_fee = falseの場合、プールの有効なクリエイターフィーレートはコンフィグ値に関係なくゼロです(ソースのPoolState::adjust_creator_fee_rateを参照)。 - トレードフィーと独立。 クリエイターフィーはLP/プロトコル/ファンドシェアを削減しません — それは独自のレートで、別に適用され、独自のカウンターに計上されます。
CollectCreatorFee経由で回収され、PoolState.pool_creatorでサイン。- 作成後に再有効化または再ルーティングできません。
enable_creator_fee = falseで初期化されたプールはクリエイターフィーを請求しません;特定のcreator_fee_onで初期化されたプールはサイドを切り替えできません。
CollectCreatorFeeを請求できます。
回収操作フロー
| サイナー | 命令 | ゼロ化されるカウンター | 典型的なペース |
|---|---|---|---|
amm_config.protocol_owner | CollectProtocolFee | protocol_fees_token{0,1} | 週次またはプログラマティック |
amm_config.fund_owner | CollectFundFee | fund_fees_token{0,1} | 週次またはプログラマティック |
pool_state.pool_creator | CollectCreatorFee | creator_fees_token{0,1} | いつでも |
security/admin-and-multisigを参照してください。クリエイターサイナーはInitializeを実行したアカウントです。
フィーティアの変更
フィーレートは管理者がUpdateAmmConfig経由で変更できます(products/cpmm/instructionsを参照)。変更は、そのコンフィグに結合されたすべてのプール対して次のスワップで有効になります — プールは各スワップでコンフィグを読み込むため、マイグレーションはありません。
管理者ができないこと:
- プールを1つの
AmmConfigから別のものに移動。 - すでに計上されたフィーを遡及的に価格設定し直す。
protocol_owner/fund_ownerサイナーなしでフィーを集める。
実行中のプールからフィーを読む
CLMMおよびAMM v4との比較
reference/fee-comparisonで並列マトリックスを参照してください。サマリ:
- AMM v4は異なるLP/プロトコル分割でコンバイン固定0.25%トレードフィーを使用し、ファンドフィーはありません。
- CLMMフィーはティック間隔ティアごと(プールごとではなくポジションごと)で、
DecreaseLiquidityまたはCollectFees経由で請求されます。
次に行く場所
products/cpmm/math— トレードフィー控除がカーブにどのように適用されるか。products/cpmm/instructions—Collect*命令アカウントリスト。algorithms/token-2022-transfer-fees— プールトレードフィーとミント転送フィーを正しく組み合わせる方法。


