Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Seit dem Programm-Upgrade 2026-07 wurde die OpenBook-/Serum-Abhängigkeit von AMM v4 entfernt. Die Legacy-v1-Anweisungen SwapBaseIn / SwapBaseOut, Deposit und Withdraw behalten ihre alten Kontolayouts für Rückwärtskompatibilität: Die Market-Konten werden weiterhin in ihren alten Positionen akzeptiert, aber sie werden nicht mehr validiert oder verwendet (es wird kein CPI ausgegeben). Neue Integrationen sollten die V2-Swap-Einstiegspunkte verwenden, die die Market-Konten vollständig weglassen. Mehrere Anweisungen wurden entfernt und kehren jetzt zurück – siehe den Changelog-Eintrag. Die Kontolisten unten verwenden die Feldnamen aus dem Raydium SDK; die zugrunde liegende IDL verwendet manchmal serum_*-Präfixe.Das Programm-Upgrade 2026-09 fügt eine Admin-Anweisung hinzu, WithdrawExcessLamports (Tag 18), und entfernt die Rent-Sysvar aus CreateConfigAccount. Alles, was ein Trader oder LP aufruft, bleibt unverändert. Siehe den Changelog-Eintrag vom 2026-09-09.

Anweisungsübersicht

Das SDK stellt Builder nur für die benutzerorientierten Anweisungen bereit. Wartungsanweisungen werden typischerweise vom Raydium-Keeper aufgerufen. Entfernt / nicht mehr aufrufbar (ihre Client-Builder wurden gelöscht): Initialize (Tag 0, verwenden Sie Initialize2), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, verwenden Sie Initialize2), SimulateInfo (12), AdminCancelOrders (13). Eine Transaktion mit einem dieser Tags schlägt fehl; das Programm führt die Anweisung nie aus. Behandeln Sie alle sieben als gelöscht, nicht als Fehlerpfade zum Verarbeiten.

Initialize2

Bootstrappen Sie einen neuen AMM v4 Pool, der an einen bestehenden OpenBook-Market gebunden ist. Argumente
Konten (beschreibbar 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 beschreibbar zum Verbrennen, die Benutzer-ATAs sind Empfänger. Das Kontolayout 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-Kontoliste (oder 18 mit dem optionalen Target-Orders-Konto), aber die OpenBook-/Market-Konten werden jetzt positionell akzeptiert und ignoriert – sie werden nicht validiert und es wird kein CPI ausgegeben. Das Übergeben einer falschen Kontoanzahl kehrt weiterhin mit WrongAccountsNumber zurück, aber der Inhalt der Market-Konten wird nicht mehr überprüft. Neue Integrationen sollten SwapBaseInV2 / SwapBaseOutV2 verwenden, die eine viel kleinere Kontoliste 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 Kontoliste 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 Anweisungen

Entfernt – nicht mehr aufrufbar. Seit 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 gesehen 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 Anweisung ist weg. Jeder Keeper oder jede Integration, die sie noch aufruft, muss den Aufruf entfernen.

WithdrawPnl / TakePnl

Admin-Abräumung 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 Kontoliste fiel 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-Konto-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 Anweisung 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 Kontoliste 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 umnummeriert 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.

CreateConfigAccount / UpdateConfigAccount

Admin-Verwaltung der Programm-Level-AmmConfig-PDA (Seed ["amm_config_account_seed"]), die den PnL-Besitzer, die Pool-Erstellungsgebühr und das Pool-Erstellungs-Flag enthält.
Geändert in 2026-09 und rückwärtskompatibel. CreateConfigAccount liest die Rent-Sysvar nicht mehr. Seine Kontoliste ist jetzt 4 Konten, reduziert von 5:Das Programm liest Rent-Parameter von Rent::get() statt eine übergebene Sysvar-Konto zu deserialisieren – was die Solana 3.0-Abhängigkeits-Erhöhung natürlich machte.Das entfernte Konto war zuletzt in der Liste, und der Handler liest seine Konten positionell durch next_account_info ohne Längenkontrolle. Ein bestehendes Admin-Tool, das weiterhin die alte 5-Kontoliste übergibt, funktioniert daher weiterhin: das nachfolgende Rent-Konto wird einfach nie gelesen. Aktualisieren Sie es, wenn es bequem ist, nicht dringend. UpdateConfigAccount ist unverändert.
Initialize2 behält die Rent-Sysvar in Position 3 und verwendet sie weiterhin: Das Programm hat aufgehört, Rent::from_account_info darauf aufzurufen, aber es wird weiterhin in die spl_token::initialize_account und initialize_mint CPIs weitergeleitet, die die Pool-Vaults und LP-Mint erstellen. Lassen Sie es nicht aus der Kontoliste fallen.

WithdrawExcessLamports

Admin-Abräumung von Lamports, die über dem Rent-Exempt-Minimum auf Konten sitzen, die das Programm kontrolliert. Hinzugefügt im Upgrade 2026-09, um die Über-Finanzierung wiederherzustellen, die die SIMD-0437 Rent-Reduktion auf Konten hinterlässt, die vor jedem Schritt erstellt wurden. Es bewegt nur den Überschuss. Token-Salden, Kontodaten, Besitzer und Pool-Status bleiben unverändert, und die Anweisung ist ein No-Op auf einem Konto, das bereits bei seinem Minimum ist – daher ist es sicher, sie wiederholt und erneut nach jedem Rollout-Schritt auszuführen. Argumente — keine. Die Payload ist das einzelne Tag-Byte 18. Konten Wie jedes Quellkonto behandelt wird Das Programm verteilt auf den owner des Quellkontos: Häufige FehlerInvalidSignAccount (falscher Unterzeichner), InvalidSplTokenProgram (falsches Programm in Slot 3), InvalidProgramAddress (falsche amm_authority), LamportsCalculateError (benutzerdefinierter Code 60; die wSOL-Rundreise nettete nicht zu Null), und InsufficientFunds vom Programm-eigenen Pfad, wenn ein Konto weniger als sein eigenes Rent-Minimum hält. Kein SDK-Builder. @raydium-io/raydium-sdk-v2 liefert keinen Builder für diese Anweisung, und auch nicht das raydium-sdk-V2-demo-Repo – es ist ein Admin-Pfad. Kodieren Sie es von Hand, wie die Wallet-seitige Abräumung in solana-fundamentals/rent-and-reclaimable-rent für die Token-Programm-Anweisung.

Zustandsänderungs-Matrix

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

Nächste Schritte

Quellen: