Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Die Invariante
Der Pool erhältcoin_reserve × pc_reserve = k, wobei (nach der 2026-07 OpenBook-Entfernung):
- Reserven sind jetzt nur noch Vault-basiert. Der historische Open-Order-Term (Token, die der Pool als OpenBook-Limitaufträge hinterlegt hatte) wurde entfernt — er war in der Praxis lange vor der Entfernung ohnehin null. Sie können
kdirekt aus den On-Chain-Vault-Bilanzen berechnen. - Die PnL-Abgrenzung (
need_take_pnl_*) wird subtrahiert, damit die Kurve erhalten bleibt, wenn der Admin Gebühren einzieht. Gleiches Prinzip wie dieprotocol_fees_*-Ausschließung bei CPMM.
calc_total_without_take_pnl_no_orderbook (die alte Orderbuch-bewusste Variante ist weg).
Jede Swap*-Operation erzwingt k' ≥ k, nachdem der LP-Gebührenanteil wieder in die Reserven addiert wurde.
Gebührenkonvention
AMM v4 verwendet Verhältnisgebühren (Zähler/Nenner-Paare) statt der1/1_000_000-Konvention von CPMM / CLMM. Die On-Chain-Fees-Struktur (siehe Fees::initialize im Programmquellcode) hat folgende Standardwerte:
- Gesamtswapgebühr:
swap_fee = amount_in × 25 / 10_000 = 0.25%der Bruttoeingabe. - Protokollanteil:
pnl_numerator / pnl_denominator = 12 / 100 = 12%der Swapgebühr, was sich auf0.25% × 12% = 0.03%des Volumens beläuft. Dieser Anteil wird in den PnL-Zählern abgegrenzt und durchWithdrawPnleingezogen. - LP-Anteil: die verbleibenden
88%der Swapgebühr, was sich auf0.25% × 88% = 0.22%des Volumens beläuft. Bleibt im Pool und erhöhtk. - Kein Fondsanteil. AMM v4 hat keine CPMM/CLMM-Fondsgebührenaufteilung.
pnl_numerator / pnl_denominator ein Bruchteil der Gebühr ist, nicht des Handelsvolumens — eine häufige Fehlinterpretation dieser Feldnamen.
trade_fee_numerator / trade_fee_denominator (auch 25 / 10_000) wurde historisch von der OpenBook-Integration verwendet, wenn gebühreninklusive Preise für das Limitorder-Gitter des AMM berechnet wurden. Mit dem entfernten OpenBook-Code ist dieses Feld vestigial; die aktive Swapgebühr ist swap_fee_*.
Abweichungen von diesen Standardwerten sind selten, existieren aber auf einigen Legacy-Pools; lesen Sie die Gebühren immer aus AmmInfo.fees aus, bevor Sie ein Angebot machen.
Direkter Swap-Mathematik (AMM-Pfad)
Der einfachste Fall: Der Benutzer tauscht gegen die Vault-Reserven des Pools aus, ohne mit OpenBook zu interagieren. Die internen Reserven des Pools (einschließlich On-Book-Zuordnungen) sind der Nenner. SwapBaseIn (exakte Eingabe):MonitorStep / implizite Abwicklungspfad, der die OpenBook-Seite aktualisierte, wurde entfernt.
SwapBaseOut (exakte Ausgabe):
Orderbuch-Interaktion (historisch)
Entfernt. Die in diesem Abschnitt beschriebene Gitterkonstruktion zeigt, wie AMM v4 ursprünglich die Kurve auf einen OpenBook-Markt spiegelte. Die OpenBook-Integration — einschließlich des
MonitorStep-Cranks und der build_orders-Gitterlogik — wurde aus dem Programm entfernt (2026-07-Upgrade). Die folgende Mathematik wird rein als historischer Kontext bewahrt, um zu zeigen, wofür die On-Chain-Konten target_orders / amm_open_orders einmal dimensioniert waren.AmmInfo-Parametern berechnet:
depth— Anzahl der Preisstufen pro Seite.amount_wave— Basiseinheit der Größe pro Stufe.min_size,coin_lot_size,pc_lot_size— OpenBook-Marktbeschränkungen.state_data.swap_acc_coin_fee,swap_acc_pc_fee— kumulative Gebührenzähler seit letztemTakePnl.
target_orders bestimmt, die in build_orders berechnet und mit amm_open_orders bei jedem MonitorStep verglichen werden. Jede Abweichung führt zu Stornierungen + neuen Aufträgen. Neu gefüllte Aufträge auf OpenBook werden bei der nächsten Operation, die die OpenBook-Seite aktualisiert, in die Pool-Vaults abgewickelt.
Integratoren müssen das Gitter selten berechnen — der Raydium-Keeper verwaltet es — aber es ist nützlich zu wissen, dass:
- Ein Pool mit signifikanter On-Book-Liquidität diese Liquidität zu
kbeitragen hat, nicht untätig sitzt. - Ein veralteter OpenBook-Markt (Event-Queue voll, Cranks blockiert) verhindert Gitteraktualisierungen; der AMM kann dann Preise anbieten, die vom sichtbaren Orderbuch abweichen, bis zum nächsten Crank.
Abwicklungsschritt (PnL)
Der 0,03%-Protokollanteil wird instate_data.need_take_pnl_coin und state_data.need_take_pnl_pc abgegrenzt. TakePnl verschiebt diese Beträge aus den Vaults zum vom Admin angegebenen Ziel und setzt die Zähler dann auf null.
Entscheidende Eigenschaft: Reserven in der Invariante werden immer minus abgegrenzter PnL berechnet, daher verschiebt TakePnl die Kurve nicht. Dies entspricht der CPMM-Konvention.
Durchgerechnetes Beispiel
Pool-Status:coin_reserve = 1_000_000_000_000(1.000.000 Coin-Seite; 6 Dezimalstellen)pc_reserve = 2_000_000_000_000(2.000.000 PC-Seite; 6 Dezimalstellen)- Gebühren: Standard
swap = 25/10_000,pnl = 3/10_000.
SwapBaseIn exakte Eingabe 1_000_000_000 Coin (1.000 Coin).
2_200_000) wird nirgendwo separat aufgeschlüsselt — er ist einfach der Residuum, der k' erhöht.
Präzisionsregeln
- Reserve-Multiplikationen verwenden
u128; endgültige Divisionen runden gegen null. swap_feerundet auf (damit der Pool nicht unterberechnet).amount_infürSwapBaseOutrundet auf (damit der Benutzer nicht unterbezahlt).- Pools mit extremen Reserveverhältnissen können bei sehr kleinen Eingaben auf
ZeroTradingTokenstreffen; gleiche Konvention wie CPMM.
Einschränkungen gegenüber CPMM
- AMM v4s Reserven sind jetzt nur noch Vault-basiert, daher können Sie direkt aus den Vault-Bilanzen anbieten (minus
need_take_pnl_*) — die vorherige Anforderung, dieopen_orders.free/open_orders.locked-Beträge zu addieren, gilt nicht mehr. Das SDK / API-Angebot bleibt die einfachste Option. - AMM v4 stellt keinen strukturierten On-Chain-TWAP bereit. Externe Verbraucher, die einen AMM-v4-gestützten Preis möchten, müssen ihn selbst aus Handelsprotokollen berechnen.
- Token-2022 wird nicht unterstützt.
Nächste Schritte
products/amm-v4/instructions— woSwapBaseIn,Depositusw. eingebunden werden.products/amm-v4/fees— vollständige Gebührenmechanik,TakePnl-Details.algorithms/constant-product— die gemeinsame Herleitung.
- Raydium AMM Programmquellcode —
raydium-io/raydium-amm - Raydium SDK v2
Liquidity-Modul

