Zum Hauptinhalt springen
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Ab dem Programm-Upgrade 2026-07 wurde die OpenBook-/Serum-Abhängigkeit von AMM v4 entfernt. Die Legacy-v1-Instruktionen SwapBaseIn / SwapBaseOut, Deposit und Withdraw behalten ihre alten Account-Layouts für Rückwärtskompatibilität: Die Market-Konten werden weiterhin in ihren alten Positionen akzeptiert, aber sie werden nicht mehr validiert oder verwendet (kein CPI wird ausgegeben). Neue Integrationen sollten die V2-Swap-Einstiegspunkte verwenden, die die Market-Konten vollständig weglassen. Mehrere Instruktionen wurden entfernt und kehren jetzt zurück – siehe den Changelog-Eintrag. Die Account-Listen unten verwenden die Feldnamen aus dem Raydium SDK; die zugrunde liegende IDL verwendet manchmal serum_*-Präfixe.

Instruktions-Übersicht

Das SDK stellt Builder nur für die benutzerorientierten Instruktionen bereit. Wartungs-Instruktionen werden typischerweise vom Raydium-Keeper aufgerufen. Entfernt / nicht mehr aufrufbar (sie kehren jetzt mit unimplemented! zurück, und ihre Client-Builder wurden gelöscht): Initialize (Tag 0, verwende Initialize2), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, verwende Initialize2), SimulateInfo (12), AdminCancelOrders (13).

Initialize2

Starten Sie einen neuen AMM v4 Pool, der an einen bestehenden OpenBook-Market gebunden ist. Argumente
Konten (schreibbar W, Unterzeichner S) Nachbedingungen
  • lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, wobei INIT_BURN ≈ 100 LP-Einheiten aus dem Verkehr gezogen werden.
  • Es werden keine OpenBook-Aufträge gepostet (das Order-Book-Gitter wurde entfernt). market_program / market werden weiterhin übergeben, aber nur als Referenzfelder gespeichert; coin_lot_size / pc_lot_size / min_size werden auf 0 initialisiert.
Häufige FehlerInvalidInput (nicht übereinstimmende Dezimalstellen, nicht sortiert), NotAllowed.

Deposit

Liquidität hinzufügen. Argumente
Konten (gekürzt) Mathematik — Standard pro-rata. Mit den effektiven Reserven des Pools (Vaults + On-Book) berechnet das SDK das Coin/PC-Paar, das die angegebene LP-Menge ergibt, und prüft es gegen max_*. Kehrt mit ExceededSlippage zurück, wenn eine Seite die Obergrenze überschreitet.

Withdraw

LP verbrennen, beide Seiten erhalten. Argumente
Konten — wie Deposit mit umgekehrter Richtung; lp_mint ist schreibbar zum Verbrennen, die Benutzer-ATAs sind Empfänger. Das Account-Layout ist unverändert (Market-Konten werden weiterhin positionell übergeben, ignoriert). Es gibt keinen Settle-from-OpenBook-Schritt mehr – die Pro-Rata-Mathematik verwendet die Vault-Salden direkt.

SwapBaseIn

Exakte-Input-Swap. Immer ein AMM-Pfad-Swap (wird nicht durch OpenBook-Matching weitergeleitet).
Verwenden Sie die V2-Varianten für neuen Code. Da die OpenBook-Abhängigkeit von AMM v4 entfernt wurde, erwarten die V1-Einstiegspunkte (SwapBaseIn, SwapBaseOut) weiterhin die vollständige 17-Account-Liste (oder 18 mit dem optionalen Target-Orders-Konto), aber die OpenBook/Market-Konten werden jetzt positionell akzeptiert und ignoriert – sie werden nicht validiert und kein CPI wird ausgegeben. Das Übergeben einer falschen Account-Anzahl kehrt weiterhin mit WrongAccountsNumber zurück, aber der Market-Account-Inhalt wird nicht mehr überprüft. Neue Integrationen sollten SwapBaseInV2 / SwapBaseOutV2 verwenden, die eine viel kleinere Account-Liste benötigen und den kanonischen Ausführungspfad heute darstellen. Die V1-Formen werden hier der Vollständigkeit halber und zum Lesen bestehender On-Chain-Transaktionen dokumentiert.
Argumente
Konten (gekürzt) Mathematik — siehe products/amm-v4/math. Vorbedingungen
  • amm.status erlaubt Swap (Bit 0 der Status-Bitmaske nicht gesetzt).
  • amm.state_data.pool_open_time <= now.
  • amount_in > 0.
  • user_source_token_account hält mindestens amount_in.
Nachbedingungen
  • Benutzer verliert amount_in des Quell-Tokens, gewinnt amount_out ≥ minimum_amount_out des Ziel-Tokens.
  • need_take_pnl_* erhöht um den Protokoll-Fee-Anteil.
  • Hinweis: Die state_data.swap_*_in_amount / swap_*_out_amount Analytics-Zähler werden nicht mehr aktualisiert – ihre Werte sind eingefroren. Verwenden Sie Trade-Logs für Volume-Analytics.
Häufige FehlerExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (Coin/PC-Mint identisch).

SwapBaseOut

Exakte-Output, Umkehrung von SwapBaseIn. Gleiche Konten. Argumente

SwapBaseInV2 / SwapBaseOutV2

Varianten-Swap-Einstiegspunkte (Tags 16 / 17), die die OpenBook-Konten vollständig überspringen. Die Mathematik ist identisch mit dem V1-Pfad, aber die Account-Liste schrumpft auf nur die AMM-Seite und den Benutzer – 8 Konten, und amm_open_orders wird nicht übergeben: Pool-Reserven sind jetzt die Vault-Salden (minus ausstehende PnL), daher ist die Quote-Mathematik unkompliziert und identisch mit dem v1-Pfad. Verwenden Sie V2, um Compute zu sparen und das Übergeben der (jetzt ignorierten) Market-Konten zu vermeiden. Der Raydium-Router verwendet immer die V2-Form beim Routing durch AMM v4. Die Argumente sind die gleichen wie die V1-Formen (amount_in / minimum_amount_out für SwapBaseInV2; max_amount_in / amount_out für SwapBaseOutV2).

MonitorStep und andere entfernte Instruktionen

Entfernt – nicht mehr aufrufbar. Ab dem Upgrade 2026-07 wurde MonitorStep (Tag 2) aus dem Programm entfernt und kehrt jetzt zurück (unimplemented!), wenn es aufgerufen wird. Sein Client-Builder wurde ebenfalls gelöscht. Das Gleiche gilt für MigrateToOpenBook (5), WithdrawSrm (8), SimulateInfo (12), AdminCancelOrders (13) und die Legacy-Pool-Erstellungs-Einstiegspunkte Initialize (0) / PreInitialize (10) – verwenden Sie stattdessen Initialize2.
Historisch betrieb MonitorStep die OpenBook-Interaktion des Pools: Es siedelte gefüllte Aufträge an (bewegte Erlöse aus den Market-Vaults in die Pool-Vaults über OpenBook CPI), stornierte veraltete Aufträge und postete neue Aufträge, um die Lücke zwischen target_orders und amm_open_orders zu schließen. Mit der entfernten OpenBook-Abhängigkeit gibt es nichts mehr zu betreiben und die Instruktion ist weg. Jeder Keeper oder jede Integration, die sie noch aufruft, muss den Aufruf entfernen.

WithdrawPnl / TakePnl

Admin-Einzug aufgelaufener Protokoll-Gebühren. Argumente
  • WithdrawPnl nimmt keine Argumente; es liest need_take_pnl_* und bewegt diese genauen Beträge.
Breaking Change (nur Admin). Die Account-Liste sank von 17 (+1 optional) auf 10amm_open_orders und alle sechs Market-Konten wurden entfernt – ohne Kompatibilitäts-Parsing. Das alte Layout ist nicht ausgerichtet (altes #5 war amm_open_orders, jetzt pool_coin_token_account) und schlägt mit Fehlern wie InvalidCoinVault fehl. Admin-Tools müssen aktualisiert werden.
Konten (neues 10-Account-Layout) Effekt
  • Überträgt need_take_pnl_coin von pool_coin_token_account zu pnl_coin_token_account.
  • Gleiches für PC.
  • Setzt need_take_pnl_coin und need_take_pnl_pc auf Null.
  • Logik-Änderung: Wenn der Vault-Saldo nicht ausreicht, um aufgelaufene PnL zu decken, gibt die Instruktion direkt TakePnlError zurück (sie manipuliert nicht mehr den Order-Book-Status).
Keine Änderung der Reserven, da aufgelaufene PnL bereits aus der Invariante ausgeschlossen war.

SetParams

Admin-Parameter-Änderungen, aufgerufen vom Raydium-Multisig. Argumente sind ein param: u8-Tag + Payload.
Breaking Change (nur Admin). Die Account-Liste wurde auf nur [amm (W), admin (S)] reduziert (die Authority, Open-Orders, Target-Orders, Vault und alle Market-Konten wurden entfernt). Das param-Enum wurde neu nummeriert und gekürzt: Status = 0, State = 1, Fees = 2 (war 9), SetOpenTime = 3 (war 11). Alle Order-Book-Grid-Parameter und AmmOwner, LastOrderDistance, UpdateOpenOrder wurden entfernt, und die SetParamsInstruction-Struktur verlor new_pubkey und last_order_distance. Admin-Tools müssen aktualisiert werden.

Zustandsänderungs-Matrix

Die OpenBook-Spalte ist weg – keine Instruktion berührt mehr ein Order-Book.

Nächste Schritte

Quellen: