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.
Les instructions AMM v4 attendent uniformément à la fois un côté pool (comptes du programme AMM v4) et un côté marché (comptes OpenBook pour le marché lié). Omettre ou mal faire correspondre l’un ou l’autre ensemble revient. Les listes de comptes ci-dessous utilisent les noms de champs du SDK Raydium pour la clarté ; l’IDL sous-jacent utilise parfois les préfixes serum_*.
Inventaire des instructions
| Groupe | Instruction | Notes |
|---|
| Cycle de vie du pool | Initialize2 | Instruction actuelle de création de pool (toujours fonctionnelle ; l’UI utilise par défaut CPMM pour les nouveaux pools). |
| Liquidité | Deposit | Ajouter de la liquidité, recevoir des LP. |
| Liquidité | Withdraw | Brûler des LP, recevoir les deux côtés au prorata. |
| Swap | SwapBaseIn | Swap à intrant exact (chemin complet : coffres + OpenBook). |
| Swap | SwapBaseOut | Swap à produit exact (chemin complet). |
| Swap | SwapBaseInV2 | Swap à intrant exact qui contourne OpenBook — coffres uniquement, moins de comptes. |
| Swap | SwapBaseOutV2 | Swap à produit exact qui contourne OpenBook. |
| Maintenance | SetParams | Admin : modifier les paramètres du pool. |
| Maintenance | WithdrawPnl | Balayer le PnL du protocole accumulé dans les comptes propriétaires du PnL. |
| Maintenance | CreateConfigAccount | Admin : initialiser le PDA AmmConfig au niveau du programme. |
| Maintenance | UpdateConfigAccount | Admin : modifier les paramètres de config au niveau du programme. |
Le SDK expose des builders pour les instructions à destination des utilisateurs uniquement. Les instructions de maintenance sont généralement invoquées par le keeper Raydium.
Initialize2
Amorcer un nouveau pool AMM v4 lié à un marché OpenBook existant.
Arguments
nonce: u8
open_time: u64
init_pc_amount: u64
init_coin_amount: u64
Comptes (modifiable W, signataire S)
| # | Nom | W | S | Notes |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | Compte AmmInfo (clé semée). |
| 5 | amm_authority | | | PDA du programme. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders (semé). |
| 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 | | ATA LP du créateur. |
| 15 | pool_temp_lp_token_account | W | | Compte de travail. |
| 16 | market_program | | | Programme OpenBook. |
| 17 | market | | | Marché OpenBook. |
| 18 | user_wallet | W | S | Créateur. Paie la rente et finance le dépôt initial. |
| 19 | user_token_coin | W | | |
| 20 | user_token_pc | W | | |
Postconditions
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, où INIT_BURN ≈ 100 unités de LP sont retirées de la circulation.
- Les ordres OpenBook n’ont pas encore été publiés ; le premier
MonitorStep publie la grille initiale.
Erreurs courantes — InvalidInput (décimales mal appariées, non triées), NotApproved, côté OpenBook InvalidMarketState.
Deposit
Ajouter de la liquidité.
Arguments
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = base sur coin, 1 = base sur pc
// (certaines variantes du SDK acceptent aussi other_amount_min)
Comptes (abrégé)
| # | Nom | 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 |
Mathématiques — au prorata standard. Utilisant les réserves effectives du pool (coffres + en carnet), le SDK calcule la paire coin/pc qui produit le montant de LP donné et la vérifie contre max_*. Revient avec ExceededSlippage si l’un ou l’autre côté dépasse le plafond.
Withdraw
Brûler des LP, recevoir les deux côtés.
Arguments
amount: u64 // LP à brûler
Comptes — comme Deposit avec la direction inversée ; lp_mint est modifiable pour brûler, les ATA de l’utilisateur sont des destinataires. Une étape de règlement similaire à MonitorStep à partir d’OpenBook se produit en interne avant les mathématiques au prorata, de sorte que la rédemption utilise des réserves fraîches.
SwapBaseIn
Swap à intrant exact. Toujours un swap chemin AMM (ne s’achemine pas via l’appairage OpenBook).
Utilisez les variantes V2 pour le nouveau code. Puisque AMM v4 ne partage plus de liquidité avec OpenBook, les points d’entrée V1 (SwapBaseIn, SwapBaseOut) — qui nécessitent toujours l’ensemble complet des comptes OpenBook pour la validation — sont fonctionnellement redondants. Les nouvelles intégrations doivent utiliser SwapBaseInV2 / SwapBaseOutV2, qui prennent une liste de comptes beaucoup plus petite et représentent le chemin d’exécution canonique aujourd’hui. Les formes V1 sont documentées ici par exhaustivité et pour lire les transactions on-chain existantes.
Arguments
amount_in: u64
minimum_amount_out: u64
Comptes (abrégé)
| # | Nom | 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 |
Mathématiques — voir products/amm-v4/math.
Préconditions
amm.status autorise le swap (bit 0 du masque de bits de statut non défini).
amm.state_data.pool_open_time <= now.
amount_in > 0.
user_source_token_account détient au moins amount_in.
Postconditions
- L’utilisateur perd
amount_in du jeton source, gagne amount_out ≥ minimum_amount_out du jeton destinataire.
state_data.swap_*_in_amount et swap_*_out_amount incrémentés (pour l’analyse).
need_take_pnl_* incrémenté par la part des frais de protocole.
Erreurs courantes — ExceededSlippage, InvalidInput, InvalidStatus, InvalidMarket.
SwapBaseOut
Exact-output, inverse de SwapBaseIn. Mêmes comptes.
Arguments
max_amount_in: u64
amount_out: u64
SwapBaseInV2 / SwapBaseOutV2
Variantes de points d’entrée de swap qui ignorent entièrement les comptes OpenBook. Les mathématiques sont identiques au chemin V1, mais la liste des comptes se réduit au côté AMM uniquement :
| # | Nom | 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 |
Les réserves effectives du pool tiennent toujours compte des jetons publiés sur OpenBook, de sorte que les mathématiques de cotation restent inchangées. Utilisez V2 pour économiser du calcul et éviter de transmettre les comptes de marché lorsque vous n’avez pas besoin d’une manivelle OpenBook dans la même transaction. Le routeur Raydium utilise toujours la forme V2 lors du routage via AMM v4.
Les arguments sont les mêmes que les formes V1 (amount_in / minimum_amount_out pour SwapBaseInV2 ; max_amount_in / amount_out pour SwapBaseOutV2).
MonitorStep (hérité / inerte)
Plus cranké. AMM v4 ne partage plus de liquidité avec OpenBook, donc MonitorStep n’a rien à faire — le pool n’a aucun ordre posté à régler, annuler ou remplacer. L’instruction reste dans le programme on-chain pour la compatibilité rétroactive mais le keeper Raydium ne l’appelle plus. L’appeler manuellement est effectivement un no-op (autre que rafraîchir l’état mis à zéro) et ne devrait pas être nécessaire pour les intégrateurs.
À l’origine, cette instruction cranait l’interaction du pool avec OpenBook.
Arguments
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Comptes — tout ce qui précède pour un swap, plus des comptes administratifs OpenBook.
Effet original (plus pertinent en pratique) :
- Réglé tous les ordres remplis (leurs produits déplacés de
market_coin_vault/market_pc_vault dans les coffres du pool via OpenBook CPI).
- Annulé les ordres obsolètes dont les prix ou tailles ne correspondaient plus à
target_orders.
- Publié les nouveaux ordres pour fermer l’écart entre
target_orders et amm_open_orders.
Sans permission. Tout compte pouvait l’appeler ; historiquement le keeper Raydium le faisait régulièrement.
WithdrawPnl / TakePnl
Balayage administratif des frais de protocole accumulés.
Arguments
WithdrawPnl ne prend aucun argument ; il lit need_take_pnl_* et déplace ces montants exacts.
Comptes (abrégé)
| # | Nom | 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 | | Destinataire, stocké sur AmmConfig. |
| 9 | pnl_pc_token_account | W | | |
| 10 | pnl_owner | | S | Multisig admin. |
| 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 | | | |
Effet
- Transfère
need_take_pnl_coin de pool_coin_token_account à pnl_coin_token_account.
- Idem pour pc.
- Met à zéro
need_take_pnl_coin et need_take_pnl_pc.
Aucun changement aux réserves puisque le PnL accumulé a déjà été exclu de l’invariant.
SetParams
Changements de paramètres admin : masque de bits de statut, profondeur de grille de commande, vagues de montant, frais (rarement), etc. Appelé par le multisig Raydium. Les arguments sont une étiquette param: u8 + charge utile, analogue au UpdateAmmConfig de CPMM.
Matrice de changement d’état
| Instruction | approvisionnement lp_mint | Coffres | Compteurs PnL | OpenBook |
|---|
Initialize2 | approvisionnement initial frappé au créateur | + init_coin_amount, + init_pc_amount | 0 | OpenOrders créé |
Deposit | + | + les deux | — | régler les remplissages |
Withdraw | − | − les deux | — | régler les remplissages |
SwapBaseIn | — | + in, − out | + part pnl | peut-être re-poster grille |
SwapBaseOut | — | + in, − out | + part pnl | peut-être re-poster grille |
MonitorStep | — | régler remplissages | — | annuler / poster |
WithdrawPnl | — | − (pnl balayé) | 0 | — |
SetParams | — | — | — | — |
Où aller ensuite
Sources :