Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Seit dem Upgrade 2026-07 wurde die OpenBook / Serum Abhängigkeit von AMM v4 entfernt — keine Instruktion liest oder schreibt mehr OpenBook State. Die Marktkonten unten werden nur noch als Positionsplatzhalter in den Legacy v1 Instruktionslayouts (akzeptiert aber ignoriert) und als Referenzfelder auf AmmInfo beibehalten. Verwenden Sie die V2 Swap Entrypoints, die diese komplett weglassen. Diese Seite gruppiert die Konten weiterhin in „Pool-eigene” und „OpenBook (Legacy)” Abschnitte zum Lesen älterer Transaktionen.

Verzeichnis

Ein AMM v4 Pool registriert einen gebundenen Markt auf AmmInfo bei der Erstellung. Das vollständige Bild: Hinweis: Das Präfix „serum” wird in AMM v4’s IDL und Feldnamen aus Gründen der Rückwärtskompatibilität beibehalten. Diese Konten sind nach der OpenBook Entfernung nicht mehr funktional.

AmmInfo

Das Root State Konto des Pools. Groß (≈ 752 Bytes), da es sowohl Pool als auch OpenBook Referenzen inline trägt.
Das Struct Layout ist unverändert (byte-kompatibel), daher funktionieren bestehende Deserialisierer weiterhin, aber nach der OpenBook Entfernung werden die oben als VERALTET markierten Felder nicht mehr geschrieben — die swap_* Volumenzähler sind bei ihrem letzten Wert eingefroren. Für Volumen Analytics verwenden Sie Trade Logs statt dieser Felder. Nur need_take_pnl_* und pool_open_time werden aktiv gepflegt.
Integrator-relevante Felder:
  • coin_vault, pc_vault — die SPL Token Vaults des Pools. coin ist token_0 nach Serum/OpenBook Konvention (Basis), pc ist token_1 (Quote).
  • coin_decimals, pc_decimals — entsprechend den Mints.
  • open_orders, target_orders, market — Legacy Referenzfelder. Sind noch auf AmmInfo vorhanden und werden noch positionell auf v1 Instruktionslayouts übergeben, aber das Programm liest oder validiert sie nicht mehr. Die V2 Swap Entrypoints lassen sie weg.
  • fees.swap_fee_numerator / swap_fee_denominator — die kombinierte Trade Gebühr. Standard 25 / 10_000 = 0,25%.
  • status — Bitmaske, die Operationen kontrolliert. Admin-setzbar via AdminSetStatus.
  • state_data.need_take_pnl_* — Delta zwischen Brutto aufgelaufenen Gebühren und dem, was eingezogen wurde. TakePnl setzt diese auf Null.

Die OpenBook Verdrahtung

Entfernt. Die OpenBook / Serum Abhängigkeit wurde aus dem Programm gelöscht (Upgrade 2026-07). Die in diesem Abschnitt beschriebenen Konten werden nicht mehr validiert oder verwendet. Sie bleiben als Referenzfelder auf AmmInfo und als Positionsplatzhalter auf den Legacy v1 Instruktionslayouts. Verwenden Sie die V2 Swap Entrypoints (SwapBaseInV2 / SwapBaseOutV2), die diese Konten komplett überspringen.
Wenn Sie eine Legacy v1 SwapBaseIn / SwapBaseOut, Deposit oder Withdraw Instruktion aufrufen, muss die Konto Anzahl immer noch dem alten Layout entsprechen (die Marktkonten nehmen ihre historischen Positionen ein), aber ihr Inhalt wird nicht mehr überprüft — kein CPI wird gegen sie ausgegeben. Neuer Code sollte die V2 Swap Varianten verwenden, die diese Konten überhaupt nicht benötigen.
Das amm_open_orders des AMM ist ein OpenBook-eigenes Konto, das den Limit Order State des Pools auf diesem Markt hält: aktive Orders, abgerechnete Guthaben, Referrer usw. amm_target_orders ist AMM-seitig: es hält das beabsichtigte Grid des AMM (Preis/Größe für jeden Order Slot), damit das Programm billig vergleichen kann, was derzeit gepostet ist, und die Differenz platzieren / stornieren kann.

Authority PDAs

Es gibt genau eine amm_authority PDA für das gesamte AMM v4 Programm. Sein Seed ist trivial (["amm authority"]) und sein Bump wird auf jedem AmmInfo gespeichert. Diese Authority signiert alle Token Bewegungen für alle AMM v4 Pools.
Es gibt eine separate Pool-scoped Authority, die pro Pool abgeleitet wird, um OpenBook Operationen zu signieren (amm_authority oben deckt tatsächlich beide in diesem Programm Design ab; verschiedene Versionen verwendeten unterschiedliche Ableitungen, daher überprüfen Sie den spezifischen AmmInfo.nonce des Pools im Code).

Vaults

Die SPL Token Vaults des Pools sind Standard Token Konten, deren owner amm_authority ist. Keine ATAs — ihre Adressen sind spezifische PDAs, die bei Initialize mit ["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id] Seeds abgeleitet werden. Adressen werden auf AmmInfo gespeichert; Ableitung ist eine einmalige Kuriosität. Token-2022 wird nicht unterstützt. Das Programm hardcoded die SPL Token Programm ID für alle Vault Bewegungen. Der Versuch, einen AMM v4 Pool an einen Token-2022 Mint zu binden, schlägt bei Initialize fehl.

LP Mint

Ein klassischer SPL Token Mint, dessen Authority amm_authority ist. Die Gesamtversorgung verfolgt LP Eigentum des Pools; das Verbrennen von LP gibt Token aus beiden Vaults proportional zurück. Da AMM v4 CPMM vorausgeht, gibt es keinen lp_supply Mirror im Pool State — lesen Sie die Mint’s On-Chain Versorgung direkt.

Status Bitmaske

AmmInfo.status kontrolliert Operationen. Bits (Position kann zwischen Programmversionen unterschiedlich sein — bestätigen Sie über die Quelle): Das Raydium Multisig setzt diese via SetParams (mit param = Status). (AdminCancelOrders wurde entfernt.)

Beobachtung / Oracle

AMM v4 hat kein dediziertes Observation Konto. Andere Protokolle, die einen On-Chain TWAP benötigen, konsumieren typischerweise OpenBook’s Buch Crossings indirekt oder lesen Off-Chain. Wenn Sie einen Raydium TWAP mit Programm Support benötigen, verwenden Sie CPMM oder CLMM.

Ableitung der Pool Konten von Grund auf

Da AMM v4 nicht für deterministische Pro-Pair PDAs entworfen wurde (es geht diesem Solana Convention voraus), ist die kanonische amm_id ein Seeded Keypair, abgeleitet mit:
Das gleiche Seeded-Key Muster gilt für amm_open_orders, amm_target_orders, amm_withdraw_queue, pool_temp_lp, pool_coin_token_account, pool_pc_token_account und lp_mint. Das SDK und die API berechnen diese für Sie vor; siehe raydium-sdk-v2’s Liquidity.getAssociatedPoolKeys. In der Praxis lesen Integratoren den vollständigen Kontosatz des Pools von GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID> oder vom SDK. Manuelle Ableitung ist selten erforderlich.

Lebenszyklus Kurzreferenz

Pools und ihre Konten bleiben unbegrenzt bestehen. Selbst wenn Liquidität vollständig abgezogen wird, bleibt AmmInfo erhalten.

Was wo zu lesen ist

Quellen: