Zum Hauptinhalt springen

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Das Stable AMM teilt sich die meisten seiner Anweisungen mit AMM v4. Die eindeutigen Anweisungen sind InitModelData und UpdateModelData, die die Nachschlagetabelle erstellen und aktualisieren. Alle anderen Operationen (Swap, Deposit, Withdraw, Crank) folgen dem gleichen Muster wie AMM v4.

Anweisungsübersicht

AnweisungKategorieHinweise
InitializeLebenszyklusPool erstellen (erfordert vorallokiertes Model-Data-Konto).
PreInitializeLebenszyklusLegacy-Vorallokatationshelfer.
InitModelDataModelleinrichtungNachschlagetabelle erstellen und initialisieren.
UpdateModelDataModelleinrichtungBis zu 5 Tabellenelemente pro Aufruf einfügen.
DepositLiquiditätLiquidität hinzufügen, LP erhalten.
WithdrawLiquiditätLP verbrennen, beide Seiten erhalten.
SwapBaseInSwapExakte-Input-Swap.
SwapBaseOutSwapExakte-Output-Swap.
MonitorStepCrankOpenBook abwickeln, Bestellungen aktualisieren.
SetParamsAdminPool-Parameter ändern.
WithdrawPnlAdminAufgelaufene Protokollgebühren abheben.
WithdrawSrmLegacySRM-Rabatte abheben (Legacy).
SimulateInfoDiagnostikRead-only-Angebots-Helfer.

Initialize

Neuen Stable AMM-Pool starten, gebunden an einen bestehenden OpenBook-Markt und ein vorgefertigtes ModelDataInfo-Konto. Argumente
nonce: u8
open_time: u64
Konten (schreibbar W, Unterzeichner S)
#NameWSHinweise
1token_programSPL Token.
2system_program
3rent
4ammWAmmInfo-Konto des Pools.
5amm_authorityProgrammweite PDA.
6amm_open_ordersWOpenBook OpenOrders.
7lp_mintWFungibles LP-Token-Mint.
8coin_mint
9pc_mint
10pool_coin_token_accountWCoin-Tresor des Pools.
11pool_pc_token_accountWPC-Tresor des Pools.
12amm_target_ordersWRaster für OpenBook-Bestellungen.
13model_data_accountDas Nachschlagetabellen-Konto.
14serum_programOpenBook-Programm.
15serum_marketOpenBook-Markt.
16user_dest_lp_tokenWLP-ATA des Erstellers (empfängt anfängliches LP).
17user_walletWSErsteller; zahlt Miete, finanziert Anfangseinzahlung.
(opt)srm_tokenWSRM-Token-Konto für Gebührenrabatte (Legacy).
Vorbedingungen
  • model_data_account muss bereits erstellt und durch vorherigen InitModelData initialisiert werden.
  • lp_mint muss leer sein (Angebot Null).
  • Tresore müssen existieren und von amm_authority gehört werden.
Nachbedingungen
  • AmmInfo wird mit allen Referenzen initialisiert.
  • TargetOrders wird auf Null gesetzt und ist bereit für den ersten MonitorStep.
  • Anfängliche LP-Tokens werden geprägt und an user_dest_lp_token gesendet.
  • OpenBook-Bestellungen wurden nicht noch gepostet; der erste MonitorStep postet sie.

InitModelData

Erstelle und initialisiere das ModelDataInfo-Konto. Muss einmal vor Initialize aufgerufen werden. Argumente
multiplier: u64       // Skalierungsfaktor (z. B. 10^6)
Konten (schreibbar W, Unterzeichner S)
#NameWSHinweise
1model_data_accountWDas 50k-Element-Tabellenkonto.
2amm_adminSPool-Admin (muss Autorität unterzeichnen).
Vorbedingungen
  • model_data_account muss ausreichend groß sein (~1,2 MB für 50k × 24 Bytes).
  • model_data_account muss vom Stable-Programm gehört werden.
Nachbedingungen
  • status = Initialized.
  • multiplier ist gesetzt.
  • valid_data_count = 0 (keine Elemente noch eingefügt; rufen Sie UpdateModelData auf, um sie hinzuzufügen).
  • elements-Array wird auf Null gesetzt.

UpdateModelData

Fügt bis zu 5 Tabellenelemente in einem einzigen Aufruf ein. Muss nach InitModelData aufgerufen werden, aber bevor Swaps die Tabelle verwenden. Argumente
array_data: [UpdateModelData; 5]

pub struct UpdateModelData {
  pub index: u64,
  pub data: DataElement,
}
Konten (schreibbar W, Unterzeichner S)
#NameWSHinweise
1amm_adminSUnterzeichner (muss der Pool-Admin sein).
2model_data_accountWDas Tabellenkonto.
Vorbedingungen
  • amm_admin muss mit AmmInfo.amm_admin übereinstimmen.
  • Jeder Index in array_data muss gültig sein (innerhalb von 50.000).
  • Einträge müssen sortiert sein (wird On-Chain nicht validiert für Geschwindigkeit): x aufsteigend, y absteigend, Preis aufsteigend.
Nachbedingungen
  • Elemente werden zu model_data_account.elements[index] für jede Eingabe geschrieben.
  • valid_data_count wird auf den größten geschriebenen Index + 1 aktualisiert.
Governance-Hinweis: Es gibt keine On-Chain-Erzwingung der Sortierreihenfolge oder Preiskonsistenz. Ein böswilliger oder nachlässiger Admin kann die Tabelle beschädigen und zu falschen Angeboten führen. In der Praxis kontrolliert die Raydium-Multisig diese Adresse.

Deposit

Liquidität hinzufügen, LP-Token erhalten. Argumente
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base on coin, 1 = base on pc
Konten — wie AMM v4, ~13 Konten. Muss das model_data_account als Read-only enthalten. Mathematik — Standard-Pro-Rata unter Verwendung der Nachschlagetabelle zur Berechnung des Verhältnisses. Das SDK berechnet Coin/PC-Paar für die gewünschte LP-Menge und prüft gegen Obergrenzen.

Withdraw

LP verbrennen, beide Seiten Pro-Rata erhalten. Argumente
amount: u64            // LP-Tokens zum Verbrennen
Konten — wie AMM v4, mit model_data_account als Read-only. Vorbedingungen
  • user_lp_token_account hält mindestens amount.
Nachbedingungen
  • amount-LP-Tokens werden verbrannt.
  • Benutzer erhält Coin- und PC-Beträge gemäß dem aktuellen Pro-Rata, angepasst für aufgelaufene Gebühren.

SwapBaseIn

Exakte-Input-Swap unter Verwendung der Nachschlagetabelle zur Preisgestaltung. Argumente
amount_in: u64
minimum_amount_out: u64
Konten (~17 gesamt)
#NameWSHinweise
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8model_data_accountRead-only-Nachschlagetabelle.
9serum_program
10serum_marketW
11serum_bidsW
12serum_asksW
13serum_event_queueW
14serum_coin_vaultW
15serum_pc_vaultW
16serum_vault_signer
17user_source_tokenWInput-Token-Konto des Benutzers.
18user_dest_tokenWOutput-Token-Konto des Benutzers.
19user_ownerSBenutzer (Transaction-Unterzeichner).
Vorbedingungen
  • amm.status erlaubt Swap.
  • user_source_token hält ≥ amount_in.
Nachbedingungen
  • Benutzer verliert amount_in, gewinnt amount_out ≥ minimum_amount_out.
  • Pool-Gebühren erhöhen need_take_pnl_*-Zähler.
  • OpenBook-Bestellungen können sich abwickeln, wenn sie gefüllt sind.
Mathematik — Nachschlagetabellen-Interpolation wie in products/stable/math beschrieben.

SwapBaseOut

Exakte-Output-Swap (Umkehrung von SwapBaseIn). Gleiche Konten, andere Mathematik-Richtung. Argumente
max_amount_in: u64
amount_out: u64

MonitorStep

Permissionless-Crank: OpenBook-Fills abwickeln, Limit-Order-Raster aktualisieren. Argumente
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Konten (~18 gesamt) — gleich wie AMM v4 MonitorStep plus das model_data_account als Read-only. Vorbedingungen
  • OpenBook-Kontenreferenzen müssen mit dem gebundenen Markt des Pools übereinstimmen.
Nachbedingungen
  • Ausstehende OpenBook-Fills werden in die Pool-Tresore abgewickelt.
  • Neue Limit-Bestellungen werden auf OpenBook basierend auf der Nachschlagetabellenkurve gepostet.
  • TargetOrders wird aktualisiert.

SetParams

Nur Admin. Pool-Parameter ändern (Status, State, Gebühren, Owner, Model-Data-Key, usw.). Argumente
param: u8              // welcher Parameter zu ändern (Status, State, Fees, usw.)
value: Option<u64>    // neuer Wert (wenn Parameter numerisch ist)
new_pubkey: Option<Pubkey>  // neue Adresse (wenn Parameter ein Kontoschlüssel ist)
fees: Option<Fees>    // neue Gebühren (wenn Parameter Gebühren ist)
Konten — variiert je nach Parameter. Erfordert immer amm_admin als Unterzeichner. Allgemeine Parameter:
  • param = 0 (Status) — Operationsbitmask ändern.
  • param = 9 (Fees) — Trade_fee, PnL-Aufteilung usw. ändern.
  • param = 11 (ModelDataKey) — Nachschlagetabelle neu binden (selten, erfordert Admin-Aktion).

WithdrawPnl

Nur Admin. Aufgelaufene Protokollgebühren aus need_take_pnl_* in designierte PnL-Konten abheben. Argumente — keine (State-getrieben). Konten (~14 gesamt)
#NameWSHinweise
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5pool_coin_token_accountW
6pool_pc_token_accountW
7coin_pnl_destWAdmin-Coin-Konto (empfängt Gebühr).
8pc_pnl_destWAdmin-PC-Konto (empfängt Gebühr).
9pnl_adminSUnterzeichner (muss Pool-Eigentum entsprechen).
10+OpenBook-Konten (~4)Ausstehende Fills zuerst abwickeln.
Vorbedingungen
  • pnl_admin muss autorisiert sein.
Nachbedingungen
  • need_take_pnl_coin und need_take_pnl_pc werden auf die Admin-Konten übertragen.
  • Zähler werden zurückgesetzt.

WithdrawSrm

Legacy (auf neuen Pools nicht verwenden). Hebt SRM-Gebührenrabatt-Token-Rückerstattungen aus frühen Serum-Ära-Pools ab. Argumente
amount: u64

SimulateInfo

Read-only-Angebots-Helfer für Clients und das SDK. Argumente
param: u8              // PoolInfo, SwapBaseInInfo, SwapBaseOutInfo, RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
Verwendung — wird über simulateTransaction aufgerufen, um ein Angebot zu erhalten, ohne einen Swap auszuführen.

Nächste Schritte

  • Konten — für Kontofeldlayouts und Größen.
  • Mathematik — für die Nachschlagetabellen-Interpolationslogik.
  • Code-Demos — um zu sehen, wie diese vom SDK aufgerufen werden.
Quellen:
  • raydium-stable/program/src/instruction.rs (Enum und Pack/Unpack)
  • raydium-stable/program/src/processor.rs (Ausführungslogik)