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.
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Zwei unabhängige Gebühren, vier Destinationen
CPMM erhebt auf jeden Swap zwei separat bewertete Gebühren:- Handelsgebühr — berechnet mit
AmmConfig.trade_fee_rateund aufgeteilt auf drei Ziele:- LP-Anteil — verbleibt im Vault und lässt
kwachsen. Wird implizit durch das Verbrennen von LP-Token beansprucht. - Protokoll-Anteil — auflaufend auf
PoolState.protocol_fees_token*; eingezogen durch denprotocol_ownerviaCollectProtocolFee. - Fund-Anteil — auflaufend auf
PoolState.fund_fees_token*; eingezogen durch denfund_ownerviaCollectFundFee.
- LP-Anteil — verbleibt im Vault und lässt
- Creator-Gebühr (optional, pro Pool) — berechnet mit
AmmConfig.creator_fee_rateunabhängig von der Handelsgebühr, auflaufend aufPoolState.creator_fees_token*, eingezogen durchpool_state.pool_creatorviaCollectCreatorFee. Aktiv nur, wenn der Pool mitenable_creator_fee = trueerstellt wurde.
trade_fee abgeleitet, nie von creator_fee. Ein Pool mit creator_fee_rate = 1000 (0,10%) und trade_fee_rate = 2500 (0,25%) berechnet bei einem Creator-Gebühr-auf-Eingabe-Swap kombiniert 0,35% der Eingabe, wobei der Creator die 0,10% behält und der Handelsgebühr-Bucket die 0,25% erhält.
Die Handelsgebühr-Sätze (trade_fee_rate, protocol_fee_rate, fund_fee_rate) und der creator_fee_rate befinden sich alle auf AmmConfig. Das Pro-Pool-Flag enable_creator_fee und der creator_fee_on-Modus (von welcher Seite des Handels die Creator-Gebühr genommen wird) befinden sich auf PoolState. Siehe products/cpmm/accounts.
Sätze und Einheiten
Alle Sätze sindu64s, bezeichnet in Einheiten von 1 / FEE_RATE_DENOMINATOR, wobei FEE_RATE_DENOMINATOR = 1_000_000.
trade_fee_rateist ein Bruchteil des Swap-Volumens.2500⇒ 0,25% der relevanten Seite (Eingabe oder Ausgabe, je nachcreator_fee_on— siehe „Von welcher Seite des Handels die Gebühren genommen werden” unten).creator_fee_rateist ein Bruchteil des Swap-Volumens, genommen separat von der Handelsgebühr.1000⇒ 0,10% der relevanten Seite.protocol_fee_rateundfund_fee_ratesind Bruchteile der Handelsgebühr, nicht des Volumens.120_000⇒ 12% der Handelsgebühr.
AmmConfig[index=0] (der „Standard” 0,25%-Pool) im Mainnet, zu Referenzzwecken:
| Feld | Wert | Effektiver Prozentsatz |
|---|---|---|
trade_fee_rate | 2500 | 0,25% des Volumens (Handelsgebühr-Bucket) |
protocol_fee_rate | 120000 | 12% der Handelsgebühr ≈ 0,030% des Volumens |
fund_fee_rate | 40000 | 4% der Handelsgebühr ≈ 0,010% des Volumens |
creator_fee_rate | 0 (Standard) | 0% (separater Bucket) |
| → LP-Anteil effektiv | 0,210% des Volumens |
AmmConfig[0] mit enable_creator_fee = false: $2,50 Gesamthandelsgebühr, davon $2,10 bleiben bei den LPs, $0,30 gehen zum Protokoll, $0,10 zum Fund. Der Creator-Bucket ist 0, weil die Creator-Gebühr deaktiviert ist.
Wenn derselbe Pool enable_creator_fee = true und creator_fee_rate = 1000 (0,10%) hätte, zahlt der Nutzer zusätzlich $1,00 in den Creator-Bucket — genommen auf der gleichen Seite des Handels, konfiguriert durch creator_fee_on — für insgesamt $3,50 an Gebühren. Der Handelsgebühr-Bucket und seine Protokoll-/Fund-Aufteilung bleiben unverändert.
Überprüfen Sie die aktuellen Mainnet-Werte gegen GET https://api-v3.raydium.io/main/cpmm-config — Sätze sind vom Admin veränderbar und sollten frisch ausgelesen werden statt hart codiert zu sein.
Die Aufteilung im Code
- Die Gesamtgebühr auf der Eingabe rundet auf, damit der Pool nie untergebührt wird.
- Die Unter-Aufteilungen von
trade_fee(Protokoll, Fund) runden ab, damit ihre Summetrade_feenicht übersteigt; der Rest ist der LP-Anteil. lp_share = trade_fee − protocol_fee − fund_fee(creator_fee wird hier nicht subtrahiert, da es sein eigener Bucket ist).- Die Creator-Gebühr wird von der Eingabe oder Ausgabe genommen, abhängig von
PoolState.creator_fee_on(siehe nächster Abschnitt). Der Satz bleibt in beiden Fällen gleich.
Von welcher Seite des Handels die Gebühren genommen werden
CPMM hat eine Pro-Pool-Einstellungcreator_fee_on (BothToken / OnlyToken0 / OnlyToken1), die bestimmt, ob die Creator-Gebühr von der Eingabe-Seite oder der Ausgabe-Seite eines bestimmten Swaps genommen wird. Der Runtime-Helper is_creator_fee_on_input(direction) reduziert das pro Swap auf einen Boolean:
creator_fee_on | Swap 0 → 1 | Swap 1 → 0 |
|---|---|---|
BothToken (0) | Eingabe-Seite | Eingabe-Seite |
OnlyToken0 (1) | Eingabe-Seite | Ausgabe-Seite |
OnlyToken1 (2) | Ausgabe-Seite | Eingabe-Seite |
amount_in abgezogen, bevor die Kurve läuft. Quote-Mathematik: nimm den kombinierten trade_rate + creator_rate von der Eingabe.
Wenn die Creator-Gebühr auf der Ausgabe-Seite ist, wird nur die Handelsgebühr von amount_in abgezogen; die Kurve produziert eine ungefühne Ausgabe, dann wird die Creator-Gebühr von dieser Ausgabe abgezogen. Quote-Mathematik: nimm trade_rate von der Eingabe; nimm creator_rate von der Ausgabe.
Die Handelsgebühr selbst wird immer von der Eingabe-Seite genommen (das Standard-Uniswap-V2-Muster). Nur die Creator-Gebühr kann auf die Ausgabe landen.
Wie „auflaufende” Gebühren mit der Kurve interagieren
Eine wichtige Subtilität: die Protokoll-, Fund- und Creator-Gebühren bleiben physisch im Vault, bis ihre jeweiligeCollect*-Instruction aufgerufen wird. Aber sie werden von der Sicht der Kurve auf den Vault-Saldo ausgeschlossen.
Ein konkretes Bild nach einem Swap:
curve_x (und das analoge curve_y), wenn es k' ≥ k durchsetzt. Dies ist, wie die Nicht-LP-Gebühren ihre Ziele erreichen, ohne den LP-Anteil des Pools zu erhöhen.
Folgen, auf die Sie entwickeln sollten:
- Quoting über rohe Salden ist falsch. Wenn Sie einen Quoter über
getTokenAccountBalancebauen, werden Sie den Preis, den der Pool ehren wird, systematisch zu hoch veranschlagen. Subtrahieren Sie immer auflaufende Gebühren, oder simulieren Sie viaSwapBaseInput/ die API. CollectProtocolFeebewegt den Preis nicht. Es bewegt Token aus dem Vault und nullt dieprotocol_fees_token*-Zähler, daher sindcurve_xundcurve_yunverändert.- LP-Gebühren laufen nicht auf einem Zähler auf. Sie sind implizit im Vault-Saldo. Der Anspruch des LP auf akkumulierte LP-Gebühren wird durch das Verbrennen von LP-Token ausgeübt (d.h. via
Withdraw) — es gibt keinCollectLpFee.
Interaction mit Token-2022-Transfergebühren
Token-2022-Transfergebühren werden durch die Mint angewendet, nicht durch CPMM. Sie wirken sich auf jeden Token-Transfer aus — Swap, Einzahlung, Auszahlung und dieCollect*-Eintreibungen. CPMMs Handelsgebühren-Mathematik wird gegen den Betrag berechnet, der tatsächlich im Vault landete, d.h. netto der Transfergebühr der Eingabe-Mint (falls vorhanden).
Also im schlimmsten Fall zahlt ein Nutzer drei verschiedene Steuern auf einen input-exakten Swap:
- Die Transfergebühr der Eingabe-Mint auf
amount_in(zur Gebühren-Autorität der Mint). - Der
trade_feedes Pools auf den Rest (aufgeteilt wie oben). - Die Transfergebühr der Ausgabe-Mint auf
amount_out(zur Gebühren-Autorität der Mint).
minimum_amount_out in dem Nominiert, was der Nutzer tatsächlich erhält. Wenn Sie Ihren eigenen Quoter schreiben, spiegeln Sie dieses Verhalten wider, sonst sind Ihre Slippage-Prüfungen systematisch zu großzügig.
Siehe algorithms/token-2022-transfer-fees für die detaillierte Herleitung.
Creator-Gebühr
Die Creator-Gebühr ist optional und pro Pool. Der Satz befindet sich aufAmmConfig.creator_fee_rate; das Enable-Flag und die Seite (creator_fee_on) befinden sich auf PoolState:
- Bei Pool-Erstellung aktiviert.
Initializesetztenable_creator_fee = falsestandardmäßig; Pools, die viaInitializeWithPermissionerstellt werden (verwendet durch LaunchLab-Graduationen und andere gated Paths), könnenenable_creator_fee = trueübergeben undcreator_fee_onwählen. - Satz wird mit dem Gebühren-Tier geteilt. Der Satz selbst ist
AmmConfig.creator_fee_rate, der gleiche Wert über jeden Pool, der an diese Config gebunden ist. Jeder Pool entscheidet dann, ob er ihn berechnet (enable_creator_fee) und von welcher Seite des Swaps er ihn berechnet (creator_fee_on). Wennenable_creator_fee = false, ist der effektive Creator-Gebühren-Satz des Pools null, unabhängig vom Config-Wert (siehePoolState::adjust_creator_fee_ratein der Quelle). - Unabhängig von der Handelsgebühr. Die Creator-Gebühr reduziert nie die LP-/Protokoll-/Fund-Anteile — sie ist ihr eigener Satz, separat angewendet, in ihren eigenen Zählern auflaufend.
- Eingezogen via
CollectCreatorFee, signiert durchPoolState.pool_creator. - Kann nach der Erstellung nicht wieder aktiviert oder umgeleitet werden. Ein Pool, der mit
enable_creator_fee = falseinitialisiert wurde, wird niemals eine Creator-Gebühr berechnen; einer, der mit einem bestimmtencreator_fee_oninitialisiert wurde, kann nicht die Seiten wechseln.
CollectCreatorFee unbegrenzt einziehen.
Eintreibungs-Operationsfluss
| Signatur | Instruction | Quellzähler gelöscht | Typische Häufigkeit |
|---|---|---|---|
amm_config.protocol_owner | CollectProtocolFee | protocol_fees_token{0,1} | Wöchentlich oder programmatisch |
amm_config.fund_owner | CollectFundFee | fund_fees_token{0,1} | Wöchentlich oder programmatisch |
pool_state.pool_creator | CollectCreatorFee | creator_fees_token{0,1} | Jederzeit |
security/admin-and-multisig. Die Creator-Signatur ist das Konto, das Initialize ausgeführt hat.
Ändern eines Gebühren-Tiers
Gebührensätze können vom Admin viaUpdateAmmConfig geändert werden (siehe products/cpmm/instructions). Änderungen treten beim nächsten Swap für jeden Pool, der an diesen AmmConfig gebunden ist, in Kraft — es gibt keine Migration, da Pools die Config bei jedem Swap laden.
Was der Admin nicht tun kann:
- Einen Pool von einer
AmmConfigzu einer anderen verschieben. - Bereits auflaufende Gebühren rückwirkend neu bewerten.
- Gebühren ohne
protocol_owner/fund_ownerSignatur einziehen.
Gebühren aus einem laufenden Pool lesen
Vergleich mit CLMM und AMM v4
Siehereference/fee-comparison für eine Seite-an-Seite-Matrix. Zusammenfassung:
- AMM v4 nutzt eine feste 0,25%-Handelsgebühr mit einer unterschiedlichen LP-/Protokoll-Aufteilung und keine Fund-Gebühr.
- CLMM Gebühren sind pro Tick-Spacing-Tier, auflaufend pro Position (nicht pro Pool), und beansprucht via
DecreaseLiquidityoderCollectFees.
Wo es weitergeht
products/cpmm/math— wo die Handelsgebühren-Abzug in die Kurve pluggt.products/cpmm/instructions— dieCollect*Instruction Kontolisten.algorithms/token-2022-transfer-fees— wie man eine Pool-Handelsgebühr mit einer Mint-Transfergebühr korrekt kombiniert.


