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.
AMM v4 Instruktionen erwarten einheitlich sowohl eine Pool-Seite (AMM v4 Programm-Konten) als auch eine Market-Seite (OpenBook-Konten für den gebundenen Market). Das Weglassen oder Nicht-Abgleichen beider Konto-Sets führt zu einem Revert. Die unten aufgeführten Kontenlisten verwenden die Feldnamen aus dem Raydium SDK zur Verdeutlichung; die zugrunde liegende IDL verwendet teilweise serum_* Präfixe.
Instruktions-Übersicht
| Gruppe | Instruktion | Hinweise |
|---|
| Pool-Lebenszyklus | Initialize2 | Aktuelle Pool-Erstellungs-Instruktion (weiterhin funktionsfähig; UI standardisiert auf CPMM für neue Pools). |
| Liquidität | Deposit | Liquidität hinzufügen, LP erhalten. |
| Liquidität | Withdraw | LP verbrennen, beide Seiten im Verhältnis empfangen. |
| Swap | SwapBaseIn | Exakte-Input-Swap (vollständiger Pfad: Vaults + OpenBook). |
| Swap | SwapBaseOut | Exakte-Output-Swap (vollständiger Pfad). |
| Swap | SwapBaseInV2 | Exakte-Input-Swap, der OpenBook umgeht — nur Vaults, weniger Konten. |
| Swap | SwapBaseOutV2 | Exakte-Output-Swap, die OpenBook umgeht. |
| Wartung | SetParams | Admin: Pool-Parameter ändern. |
| Wartung | WithdrawPnl | Aufgelaufene Protokoll-PnL in die PnL-Owner-Konten leeren. |
| Wartung | CreateConfigAccount | Admin: Programm-Level AmmConfig PDA initialisieren. |
| Wartung | UpdateConfigAccount | Admin: Programm-Level Config-Parameter ändern. |
Das SDK stellt Builder nur für benutzerfreundliche Instruktionen bereit. Wartungs-Instruktionen werden normalerweise vom Raydium Keeper aufgerufen.
Initialize2
Starten Sie einen neuen AMM v4 Pool, der an einen bestehenden OpenBook Market gebunden ist.
Argumente
nonce: u8
open_time: u64
init_pc_amount: u64
init_coin_amount: u64
Konten (beschreibbar W, Unterzeichner S)
| # | Name | W | S | Hinweise |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | AmmInfo Konto (Seed-Key). |
| 5 | amm_authority | | | Programm PDA. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders (Seed). |
| 7 | lp_mint | W | | |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | |
| 11 | pool_pc_token_account | W | | |
| 12 | pool_withdraw_queue | W | | |
| 13 | pool_target_orders_account | W | | |
| 14 | pool_lp_token_account | W | | Creator’s LP ATA. |
| 15 | pool_temp_lp_token_account | W | | Scratch-Konto. |
| 16 | market_program | | | OpenBook-Programm. |
| 17 | market | | | OpenBook Market. |
| 18 | user_wallet | W | S | Creator. Bezahlt Miete und finanziert initiale Einzahlung. |
| 19 | user_token_coin | W | | |
| 20 | user_token_pc | W | | |
Nachbedingungen
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, wobei INIT_BURN ≈ 100 LP-Einheiten aus dem Verkehr genommen werden.
- OpenBook-Orders wurden noch nicht gepostet; der erste
MonitorStep postet das initiale Gitter.
Häufige Fehler — InvalidInput (nicht übereinstimmende Dezimalstellen, unsortiert), NotApproved, OpenBook-seitige InvalidMarketState.
Deposit
Liquidität hinzufügen.
Argumente
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = Basis auf Coin, 1 = Basis auf PC
// (einige SDK-Varianten akzeptieren auch other_amount_min)
Konten (gekürzt)
| # | Name | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | amm_target_orders | W | |
| 6 | lp_mint | W | |
| 7 | pool_coin_token_account | W | |
| 8 | pool_pc_token_account | W | |
| 9 | market | | |
| 10 | user_coin_token_account | W | |
| 11 | user_pc_token_account | W | |
| 12 | user_lp_token_account | W | |
| 13 | user_owner | | S |
Mathematik — Standard-Verhältnismäßigkeit. Mit den effektiven Reserven des Pools (Vaults + On-Book) berechnet das SDK die Coin/PC-Paarung, die die gegebene LP-Menge ergibt, und prüft sie gegen max_*. Reverts mit ExceededSlippage, wenn entweder Seite die Obergrenze überschreitet.
Withdraw
LP verbrennen, beide Seiten empfangen.
Argumente
amount: u64 // Zu verbrennende LP
Konten — wie Deposit mit umgekehrter Richtung; lp_mint ist für den Burn beschreibbar, die Benutzer-ATAs sind Empfänger. Ein MonitorStep-ähnlicher Settle-From-OpenBook-Schritt findet intern statt, bevor die Verhältnismäßigkeits-Mathematik erfolgt, sodass die Rückgabe frische Reserven verwendet.
SwapBaseIn
Exakte-Input-Swap. Immer ein AMM-Pfad Swap (wird nicht durch OpenBook Matching geleitet).
Verwenden Sie die V2-Varianten für neuen Code. Da AMM v4 Liquidität nicht mehr mit OpenBook teilt, sind die V1-Einstiegspunkte (SwapBaseIn, SwapBaseOut) — die immer noch den vollständigen Satz OpenBook-Konten zur Validierung erfordern — funktional redundant. Neue Integrationen sollten SwapBaseInV2 / SwapBaseOutV2 verwenden, die eine viel kleinere Kontenliste benötigen und den kanonischen Ausführungspfad heute darstellen. Die V1-Formen werden hier aus Vollständigkeit und zum Lesen bestehender On-Chain-Transaktionen dokumentiert.
Argumente
amount_in: u64
minimum_amount_out: u64
Konten (gekürzt)
| # | Name | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | W | |
| 5 | amm_target_orders | W | |
| 6 | pool_coin_token_account | W | |
| 7 | pool_pc_token_account | W | |
| 8 | market_program | | |
| 9 | market | W | |
| 10 | market_bids | W | |
| 11 | market_asks | W | |
| 12 | market_event_queue | W | |
| 13 | market_coin_vault | W | |
| 14 | market_pc_vault | W | |
| 15 | market_vault_signer | | |
| 16 | user_source_token_account | W | |
| 17 | user_dest_token_account | W | |
| 18 | user_owner | | S |
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 Quellen-Token, gewinnt amount_out ≥ minimum_amount_out des Ziel-Token.
state_data.swap_*_in_amount und swap_*_out_amount inkrementiert (für Analytik).
need_take_pnl_* inkrementiert um den Protokoll-Gebühren-Anteil.
Häufige Fehler — ExceededSlippage, InvalidInput, InvalidStatus, InvalidMarket.
SwapBaseOut
Exakte-Output, Inverse von SwapBaseIn. Gleiche Konten.
Argumente
max_amount_in: u64
amount_out: u64
SwapBaseInV2 / SwapBaseOutV2
Varianten-Swap-Einstiegspunkte, die die OpenBook-Konten vollständig überspringen. Die Mathematik ist identisch mit dem V1-Pfad, aber die Kontenliste schrumpft auf nur die AMM-Seite:
| # | Name | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | pool_coin_token_account | W | |
| 6 | pool_pc_token_account | W | |
| 7 | user_source_token_account | W | |
| 8 | user_dest_token_account | W | |
| 9 | user_owner | | S |
Die effektiven Reserven des Pools berücksichtigen immer noch Token, die auf OpenBook gepostet sind, daher ist die Quote-Mathematik unverändert. Verwenden Sie V2, um Compute zu sparen und das Übergeben der Market-Konten zu vermeiden, wenn Sie keinen OpenBook-Crank in derselben Transaktion benötigen. Der Raydium Router verwendet immer die V2-Form beim Routing durch AMM v4.
Argumente sind dieselben wie die V1-Formen (amount_in / minimum_amount_out für SwapBaseInV2; max_amount_in / amount_out für SwapBaseOutV2).
MonitorStep (Legacy / inaktiv)
Wird nicht mehr gecrankt. AMM v4 teilt Liquidität nicht mehr mit OpenBook, daher hat MonitorStep nichts zu tun — der Pool hat keine Orders auf OpenBook gepostet, die settled, storniert oder ersetzt werden müssen. Die Instruktion bleibt im On-Chain-Programm aus Gründen der Abwärtskompatibilität erhalten, aber der Raydium Keeper ruft sie nicht mehr auf. Das manuelle Aufrufen ist effektiv ein No-Op (außer zum Aktualisieren von auf Null gesetztem State) und sollte von Integratoren nicht benötigt werden.
Ursprünglich hat diese Instruktion die OpenBook-Interaktion des Pools gecrankt.
Argumente
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Konten — alles oben für einen Swap, plus administrative OpenBook-Konten.
Ursprüngliche Auswirkung (nicht mehr relevant in der Praxis):
- Settled gefüllte Orders (deren Erträge wurden von
market_coin_vault/market_pc_vault durch OpenBook CPI in die Pool-Vaults verschoben).
- Stornierte veraltete Orders, deren Preise oder Größen nicht mehr mit
target_orders übereinstimmten.
- Gepostete neue Orders, um die Lücke zwischen
target_orders und amm_open_orders zu schließen.
Berechtigung erforderlich. Jedes Konto konnte es aufrufen; historisch tat der Raydium Keeper dies regelmäßig.
WithdrawPnl / TakePnl
Admin-Sweep aufgelaufener Protokoll-Gebühren.
Argumente
WithdrawPnl nimmt keine Argumente; es liest need_take_pnl_* und bewegt genau diese Beträge.
Konten (gekürzt)
| # | Name | W | S | |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_config | | | |
| 5 | amm_open_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | pnl_coin_token_account | W | | Empfänger, gespeichert auf AmmConfig. |
| 9 | pnl_pc_token_account | W | | |
| 10 | pnl_owner | | S | Admin Multisig. |
| 11 | market_program | | | |
| 12 | market | W | | |
| 13 | market_event_queue | W | | |
| 14 | market_coin_vault | W | | |
| 15 | market_pc_vault | W | | |
| 16 | market_vault_signer | | | |
Auswirkung
- Überweist
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.
Keine Änderung an Reserven, da aufgelaufene PnL bereits von der Invariante ausgeschlossen war.
SetParams
Admin-Parameter-Änderungen: Status-Bitmaske, Gitter-Tiefe, Mengen-Wellen, Gebühren (selten), etc. Wird vom Raydium Multisig aufgerufen. Argumente sind ein param: u8 Tag + Payload, analog zu CPMM’s UpdateAmmConfig.
State-Change-Matrix
| Instruktion | lp_mint Supply | Vaults | PnL-Zähler | OpenBook |
|---|
Initialize2 | initiale Supply an Creator geprägt | + init_coin_amount, + init_pc_amount | 0 | OpenOrders erstellt |
Deposit | + | + beide | — | Fills settlen |
Withdraw | − | − beide | — | Fills settlen |
SwapBaseIn | — | + in, − out | + pnl Anteil | möglicherweise Gitter neu gepostet |
SwapBaseOut | — | + in, − out | + pnl Anteil | möglicherweise Gitter neu gepostet |
MonitorStep | — | Fills settlen | — | stornieren / posten |
WithdrawPnl | — | − (pnl geleert) | 0 | — |
SetParams | — | — | — | — |
Wie es weitergehen
Quellen: