Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
À partir de la mise à jour du programme 2026-07, la dépendance d’AMM v4 envers OpenBook / Serum a été supprimée. Les instructions héritées v1
SwapBaseIn / SwapBaseOut, Deposit et Withdraw conservent leurs anciens agencements de comptes pour la compatibilité rétroactive : les comptes de marché sont toujours acceptés à leurs anciennes positions, mais ils ne sont plus validés ni utilisés (aucun CPI n’est émis). Les nouvelles intégrations doivent utiliser les points d’entrée de swap V2, qui omettent entièrement les comptes de marché. Plusieurs instructions ont été supprimées et reviennent maintenant — voir l’entrée du journal des modifications. Les listes de comptes ci-dessous utilisent les noms de champs du SDK Raydium ; l’IDL sous-jacent utilise parfois des préfixes serum_*.Inventaire des instructions
Le SDK expose des constructeurs pour les instructions accessibles à l’utilisateur uniquement. Les instructions de maintenance sont généralement invoquées par le gardien Raydium.
Supprimées / plus appelables (elles reviennent maintenant avec
unimplemented!, et leurs constructeurs clients ont été supprimés) : Initialize (tag 0, utilisez Initialize2), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, utilisez Initialize2), SimulateInfo (12), AdminCancelOrders (13).
Initialize2
Amorcer un nouveau pool AMM v4 lié à un marché OpenBook existant.
Arguments
W, signataire S)
Postconditions
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, oùINIT_BURN≈ 100 unités LP sont retenues de la circulation.- Aucun ordre OpenBook n’est affiché (la grille du carnet d’ordres a été supprimée).
market_program/marketsont toujours passés mais seulement stockés comme champs de référence ;coin_lot_size/pc_lot_size/min_sizesont initialisés à0.
InvalidInput (décimales mal appariées, non triées), NotAllowed.
Deposit
Ajouter de la liquidité.
Arguments
Mathématiques — prorata standard. En utilisant les réserves effectives du pool (coffres + en carnet), le SDK calcule la paire coin/pc qui produit le montant LP donné et la vérifie par rapport à
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
Deposit avec la direction inversée ; lp_mint est modifiable pour le brûlage, les ATA utilisateur sont des récepteurs. L’agencement des comptes est inchangé (comptes de marché toujours passés positionnellement, ignorés). Il n’y a plus d’étape de règlement depuis OpenBook — les mathématiques au prorata utilisent directement les soldes des coffres.
SwapBaseIn
Swap à entrée exacte. Toujours un swap par chemin AMM (ne route pas via l’appariement OpenBook).
Utilisez les variantes V2 pour le nouveau code. Puisque la dépendance d’AMM v4 envers OpenBook a été supprimée, les points d’entrée V1 (
SwapBaseIn, SwapBaseOut) s’attendent toujours à la liste complète de 17 comptes (ou 18 avec le compte target-orders optionnel), mais les comptes OpenBook/marché sont maintenant acceptés positionnellement et ignorés — ils ne sont pas validés et aucun CPI n’est émis. Passer un nombre de comptes incorrect revient toujours avec WrongAccountsNumber, mais le contenu des comptes de marché n’est plus vérifié. 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 pour la complétude et pour lire les transactions existantes en chaîne.
Mathématiques — voir
products/amm-v4/math.
Préconditions
amm.statusautorise 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_accountdétient au moinsamount_in.
- L’utilisateur perd
amount_indu jeton source, gagneamount_out ≥ minimum_amount_outdu jeton destination. need_take_pnl_*incrémenté par la part des frais de protocole.- Remarque : les compteurs d’analyse
state_data.swap_*_in_amount/swap_*_out_amountne sont plus mis à jour — leurs valeurs sont figées. Utilisez les journaux de transactions pour l’analyse du volume.
ExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (mint coin/pc identique).
SwapBaseOut
Sortie exacte, inverse de SwapBaseIn. Mêmes comptes.
Arguments
SwapBaseInV2 / SwapBaseOutV2
Variantes de points d’entrée de swap (tags 16 / 17) qui omettent entièrement les comptes OpenBook. Les mathématiques sont identiques au chemin V1, mais la liste des comptes se réduit à juste le côté AMM et l’utilisateur — 8 comptes, et amm_open_orders n’est pas passé :
Les réserves du pool sont maintenant les soldes des coffres (moins le PnL en attente), donc les mathématiques de cotation sont simples et identiques au chemin v1. Utilisez V2 pour économiser du calcul et éviter de passer les comptes de marché (maintenant ignorés). 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 et autres instructions supprimées
Historiquement, MonitorStep actionnait l’interaction OpenBook du pool : elle réglait les ordres remplis (déplaçant les produits des coffres de marché vers les coffres du pool via CPI OpenBook), annulait les ordres obsolètes et affichait de nouveaux ordres pour combler l’écart entre target_orders et amm_open_orders. Avec la dépendance OpenBook supprimée, il n’y a rien à actionner et l’instruction est partie. Tout gardien ou intégration qui l’appelle encore doit supprimer l’appel.
WithdrawPnl / TakePnl
Récupération administrative des frais de protocole accumulés.
Arguments
WithdrawPnlne prend pas d’arguments ; elle litneed_take_pnl_*et déplace ces montants exacts.
Effet
- Transfère
need_take_pnl_coindepool_coin_token_accountverspnl_coin_token_account. - Identique pour pc.
- Remet à zéro
need_take_pnl_coinetneed_take_pnl_pc. - Changement logique : si le solde du coffre est insuffisant pour couvrir le PnL accumulé, l’instruction retourne
TakePnlErrordirectement (elle ne manipule plus l’état du carnet d’ordres).
SetParams
Modifications de paramètres admin, appelées par le multisig Raydium. Les arguments sont une balise param: u8 + charge utile.
Matrice de changement d’état
La colonne OpenBook a disparu — aucune instruction ne touche plus un carnet d’ordres.Où aller ensuite
products/amm-v4/code-demos— Exemples TypeScript pour les flux de swap et LP.products/amm-v4/fees— Détails deWithdrawPnlet la répartition des frais.reference/error-codes— Table de référence directe (les erreurs AMM v4 sont listées sur cette page).
- Programme Raydium AMM —
raydium-io/raydium-amm - Module
Liquiditydu SDK Raydium v2 - Programme OpenBook — validations de comptes du côté marché

