Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Stable AMM ist ein eigenständiges Programm; seine Pool-seitige Kontenstruktur ähnelt AMM v4 (AmmInfo, Vaults, Authority), und es verfügt zusätzlich über ein ModelDataInfo-Konto, das die Nachschlagetabelle speichert. Diese Seite behandelt beide.

Inventar

Reines AMM. Stable AMM hält alle Liquidität in seinen eigenen Vaults und ist nicht von OpenBook abhängig. Es hatte früh in seiner Existenz einen OpenBook-Market-Making-Pfad, aber dieser Pfad ist seit Jahren inaktiv, und das Upgrade vom 2026-06-22 hat den verbleibenden Code entfernt. Die serum_*-Market-Konten und amm_open_orders unten sind daher veraltet: Sie können in alten Layout-Transaktionen aus Gründen der Rückwärtskompatibilität noch erscheinen, aber das Programm validiert oder liest sie nicht, und neue Layout-Anweisungen lassen sie ganz weg.
Das aktive Inventar ist nun vollständig Pool-seitig:

AmmInfo

Root-State-Konto. Das Layout ist fast identisch mit AMM v4 — Pool-Parameter, Dezimalstellen, Gebühren, Vault-/Mint-Verweise — mit einer Ergänzung: ein model_data_key-Feld, das auf die Nachschlagetabelle verweist.
Wichtige Felder für Integratoren:
  • model_data_key — die Adresse der Nachschlagetabelle. Muss an jede Anweisung übergeben werden.
  • fees — identische Struktur wie AMM v4. Standard ist 0,25% Handelsgebühr, 0,22% LP / 0,03% Protokoll-Aufteilung.
  • coin_vault, pc_vault — die Pool-Vaults.
  • status — Bitmask, das Swap/Deposit/Withdraw/Crank steuert.
  • out_put.need_take_pnl_* — wird von WithdrawPnl geleert.

ModelDataInfo

Die Nachschlagetabelle. Ein großes spärliches Array von Preis-/Mengenpunkten.
Lebenszyklus: Die Setup-Anweisungen, die diese Tabellen erstellten — InitModelData (erstellte das Konto) und UpdateModelData (füllte Elemente auf und setzte valid_data_count) — wurden im Upgrade vom 2026-06-22 entfernt. Die Tabellen in bestehenden Pools sind nun fest. Zur Laufzeit verbrauchen die verbleibenden aufrufbaren Anweisungen sie immer noch:
  • Swap / Deposit / Withdraw rufen Nachschlagefunktionen auf, die binär suchen und innerhalb von elements[0..valid_data_count] interpolieren.

DataElement

Der atomare Eintrag in der Tabelle. Muss sortiert sein (x aufsteigend, y absteigend, Preis aufsteigend), damit die binäre Suche funktioniert.
Bei der Befüllung der Tabelle gibt der Admin diese vorskaliert an. Das Programm validiert die Sortierreihenfolge nicht on-chain (aus Geschwindigkeitsgründen), daher führt Fehlsortierung zu falschen Angeboten.

Authority und Vaults

Identisch mit AMM v4:
  • amm_authority ist eine einzelne programmweite PDA, die mit dem Seed ["amm authority"] abgeleitet wird. Sie besitzt alle Pool-Vaults und signiert ihre Bewegungen.
  • Vaults sind SPL Token-Konten, deren Besitzer amm_authority ist, nicht ATAs.
Token-2022 wird nicht unterstützt.

Status-Bitmask

Identisch mit AMM v4. Steuert, ob Swap/Deposit/Withdraw/Crank aktiviert sind.

Gebühren- und PnL-Verfolgung

Die out_put-Struktur verfolgt:
  • need_take_pnl_coin, need_take_pnl_pc — Protokollgebühren, die aufgelaufen sind, aber noch nicht geleert wurden. WithdrawPnl bewegt diese heraus.
  • swap_coin_in_amount, swap_pc_in_amount, usw. — Analyse-Zähler.
Pool-Asset-Berechnung (nach Entkopplung). Da keine Mittel mehr als OpenBook-Open-Orders hinterlegt sind, werden die Gesamtvermögenswerte des Pools nun vollständig aus den Vaults berechnet:
Indexer und Quoting-Code, die den Pool-Wert aus OpenOrders-Guthaben rekonstruierten, müssen diesen Term streichen.

Kontogröße

Das ModelDataInfo ist groß (~1,2 MB, da 50.000 Elemente × 24 Bytes pro Element). Deshalb erfordert das Erstellen eines Stable-Pools explizite Miete und Konten-Vorabzuweisung. Das Raydium SDK und die Tools handhaben dies transparent; Integratoren müssen selten manuell zuweisen.

Konten von Grund auf ableiten

Wie AMM v4 verwendet Stable AMM gesäte Schlüssel (keine reinen PDAs). Die kanonische Pool-Identität wird wie folgt abgeleitet:
Ähnlich für Vaults, LP-Mint, Target-Orders usw. In der Praxis verwenden Sie das SDK oder die API, um vorgefertigte Adressen abzurufen.

Was wo zu lesen ist

Quellen: