Zum Hauptinhalt springen
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
AMM v4 teilt Liquidität schon lange nicht mehr mit OpenBook (ehemals Serum); der Hybrid-Orderbuch-Market-Making-Pfad ist seit Jahren inaktiv. Dieses Upgrade ist die Bereinigung: Es entfernt die Serum-Abhängigkeit, alle Orderbuch-CPIs und die toten Market-Making-Instruktionen aus dem Programm und hinterlässt AMM v4 als reines Constant-Product-AMM (x·y=k). Es ändert nicht das aktuelle Trading-Verhalten — es gab keine OpenBook-Orders mehr zu stoppen.

TL;DR für Integratoren

  • Swap / Deposit / Withdraw funktionieren ohne Änderungen weiter. Transaktionen, die mit den alten Account-Layouts erstellt wurden, führen weiterhin aus — die entfernten Serum-/Market-Accounts werden einfach ignoriert (keine Validierung, kein CPI). SwapBaseIn / SwapBaseOut erwarten weiterhin 17 (+1 optional) Accounts; Deposit- und Withdraw-Layouts sind unverändert. Sie müssen nicht ein Client-Update ausliefern, um bestehende Flows am Leben zu erhalten.
  • Migrieren Sie zu den V2-Swap-Entrypoints. SwapBaseInV2 / SwapBaseOutV2 enthalten keine Market-Accounts und kein amm_open_orders (8 Accounts insgesamt), sodass Transaktionen kleiner und günstiger sind. Router/Aggregatoren sollten über V2 routen.
  • WithdrawPnl ist eine hart-brechende Änderung (nur Admin). Sie geht von 17 (+1 optional) → 10 Accounts mit keiner Kompatibilitäts-Parsing; das alte Layout ist nicht ausgerichtet (altes #5 war amm_open_orders) und schlägt bei der Validierung fehl. Admin-Tools müssen aktualisiert werden.
  • SetParams ist eine hart-brechende Änderung (nur Admin). Accounts schrumpfen auf [amm, admin], und das param-Enum wird neu nummeriert (Fees 9 → 2, SetOpenTime 11 → 3); AmmOwner, LastOrderDistance, UpdateOpenOrder und die Grid-Parameter werden entfernt.
  • Mehrere Instruktionen sind nicht mehr aufrufbar. Initialize, PreInitialize, MonitorStep, MigrateToOpenBook, WithdrawSrm, SimulateInfo und AdminCancelOrders werden jetzt zurückgewiesen. Verwenden Sie Initialize2 zum Erstellen von Pools.
  • On-Chain-Account-Layouts sind byte-stabil, und Fehlercodes sind unverändert. AmmInfo / StateData behalten ihr Layout (alte OpenBook-Felder bleiben erhalten, aber veraltet/eingefroren); die AmmError-Nummerierung wird beibehalten, mit nur einem neuen NotAllowed am Ende.

Warum das wichtig ist (für Trader, LPs und Integratoren)

  • Trader sehen keine Änderung im Swap-Verhalten oder der Preisgestaltung — die Constant-Product-Kurve ist unverändert. V2-Layout-Swaps sind günstiger zu landen, da sie ~8 weniger Accounts enthalten.
  • LPs behalten die gleiche Deposit-/Withdraw-Ökonomie. Liquidität sitzt schon lange vollständig in den Pool-Vaults, daher ist der Pool-Wert vollständig im Pool; dieses Upgrade löscht nur die veraltete Market-Infrastruktur.
  • Integratoren erhalten kleinere, einfachere Transaktionen und ein Quoting-Modell, das direkt aus den Vaults liest. Bestehende Integrationen brechen nicht (außer Admin WithdrawPnl / SetParams), aber der v1-Swap-Kompatibilitäts-Shim ist temporär — migrieren Sie zu V2 in Ihrem eigenen Tempo.

Instruktions-Level-Änderungen

Noch aufrufbar, Layout unverändert (rückwärts kompatibel)

Initialize2, Deposit, Withdraw, SwapBaseIn, SwapBaseOut, CreateConfigAccount und UpdateConfigAccount behalten ihre bestehenden Account-Listen. Bei SwapBaseIn / SwapBaseOut, Deposit und Withdraw werden die OpenBook-/Market-Accounts weiterhin positionell akzeptiert, aber nicht mehr validiert oder verwendet — kein CPI wird ausgegeben und Pool-Reserven werden nur aus Vaults berechnet. Die Account-Anzahl muss weiterhin übereinstimmen, sodass bestehende Transaktionen unverändert ausgeführt werden.

SwapBaseInV2 / SwapBaseOutV2 — empfohlener Pfad

Lassen Sie die Market-Accounts und amm_open_orders vollständig weg (8 Accounts; Tags 16 / 17). Die Quote-Mathematik ist identisch mit v1. Neue Integrationen und Router sollten V2 verwenden.

WithdrawPnl — 17 (+1 optional) → 10 Accounts (⚠️ hart-brechend, kein Kompatibilitätspfad)

amm_open_orders und alle sechs Market-Accounts werden entfernt. Das neue feste 10-Account-, nur-Admin-Layout hat keine Kompatibilitäts-Parsing; das alte Layout ist nicht ausgerichtet und schlägt mit Fehlern wie InvalidCoinVault fehl.

SetParams — reduziert auf [amm, admin] (⚠️ hart-brechend) + neu nummerierte Parameter

Die Authority, Open-Orders, Target-Orders, Vault und alle Market-Accounts werden entfernt. Das param-Enum wird neu nummeriert und gekürzt:
ParameterAlter WertNeuer Wert
Status00
State11
Fees92
SetOpenTime113
Alle Orderbuch-Grid-Parameter (OrderNum, Depth, AmountWave, MinPriceMultiplier, MaxPriceMultiplier, MinSize, VolMaxCutRatio, InitOrderDepth, SetSwitchTime, ClearOpenTime, Seperate) sowie AmmOwner, LastOrderDistance und UpdateOpenOrder werden entfernt. Das SetParamsInstruction-Struct lässt new_pubkey und last_order_distance fallen.

Nicht mehr aufrufbar (Rückweisung zur Laufzeit; Builder entfernt)

InstruktionTagErsatz
Initialize0Initialize2
MonitorStep2keine (Orderbuch-Crank, eingestellt)
MigrateToOpenBook5keine
WithdrawSrm8keine (SRM-Gebührenrabatt, eingestellt)
PreInitialize10Initialize2
SimulateInfo12Off-Chain / SDK-Quoting
AdminCancelOrders13keine

Reserve-/State-Änderungen

  • Pool-Asset-Formel. Gesamte Pool-Assets sind jetzt Vault-Guthaben − ausstehende PnL (need_take_pnl); der OpenBook-Open-Order-Term — in der Praxis bereits null — wird gelöscht. Quoting-Code kann direkt aus den Vault-Guthaben lesen.
  • Veraltete State-Felder. StateData.total_pnl_pc, total_pnl_coin, orderbook_to_init_time, swap_coin_in_amount, swap_pc_out_amount, swap_acc_pc_fee, swap_pc_in_amount, swap_coin_out_amount und swap_acc_coin_fee werden aus Layout-Kompatibilitätsgründen beibehalten, aber nicht mehr aktualisiert. Consumer, die auf die swap_*-Volumen-Counter angewiesen sind, sollten zu Trade-Logs wechseln.
  • AmmInfo-Initialisierung. coin_lot_size, pc_lot_size und min_size werden jetzt auf 0 initialisiert.
  • Entfernte Abhängigkeit und CPIs. Die serum_dex-Crate wird aus Cargo.toml entfernt; alle Serum-DEX-CPIs (invoke_dex_new_order_v3, invoke_dex_cancel_order_v2, invoke_dex_settle_funds, invoke_dex_init_open_orders, …) werden aus invokers.rs entfernt. Entfernte Datenstrukturen: LastOrderDistance, SimulateParams, RunCrankData, GetPoolData, GetSwapBaseInData, GetSwapBaseOutData.