Skip to main content
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
À partir de la mise à jour 2026-07, la dépendance OpenBook / Serum d’AMM v4 a été supprimée — aucune instruction ne lit ou n’écrit plus l’état OpenBook. Les comptes de marché ci-dessous sont conservés uniquement comme espaces réservés positionnels sur les anciens layouts d’instructions v1 (acceptés mais ignorés) et comme champs de référence sur AmmInfo. Utilisez les points d’entrée de swap V2, qui les omettent entièrement. Cette page regroupe toujours les comptes en sections « appartenant au pool » et « OpenBook (hérité) » pour la lecture des anciennes transactions.

Inventaire

Un pool AMM v4 enregistre un marché lié sur AmmInfo à la création. Le tableau complet : Remarque : le préfixe « serum » est conservé dans l’IDL et les noms de champs d’AMM v4 pour la compatibilité rétroactive. Ces comptes ne sont plus fonctionnels après la suppression d’OpenBook.

AmmInfo

Le compte d’état racine du pool. Grand (≈ 752 octets) car il porte à la fois les références du pool et d’OpenBook en ligne.
Le layout de la struct n’a pas changé (compatible au niveau des octets) donc les désérialiseurs existants continuent de fonctionner, mais après la suppression d’OpenBook les champs marqués DÉPRÉCIÉ ci-dessus ne sont plus écrits — les compteurs de volume swap_* sont gelés à leur dernière valeur. Pour l’analyse du volume, utilisez les journaux de trading plutôt que ces champs. Seuls need_take_pnl_* et pool_open_time sont activement maintenus.
Champs visibles pour les intégrateurs :
  • coin_vault, pc_vault — les vaults SPL Token du pool. coin est token_0 par convention Serum/OpenBook (base), pc est token_1 (quote).
  • coin_decimals, pc_decimals — correspondant aux mints.
  • open_orders, target_orders, market — champs de référence hérités. Toujours présents sur AmmInfo et toujours passés positionnellement sur les layouts d’instructions v1 hérités, mais le programme ne les lit ni ne les valide plus. Les points d’entrée de swap V2 les omettent.
  • fees.swap_fee_numerator / swap_fee_denominator — le frais de trading combiné. Par défaut 25 / 10_000 = 0,25%.
  • status — masque de bits contrôlant les opérations. Configurable par l’admin via AdminSetStatus.
  • state_data.need_take_pnl_* — delta entre les frais bruts accumulés et ce qui a été balayé. TakePnl remet ces valeurs à zéro.

Le câblage OpenBook

Supprimé. La dépendance OpenBook / Serum a été supprimée du programme (mise à jour 2026-07). Les comptes décrits dans cette section ne sont plus validés ou utilisés. Ils restent comme champs de référence sur AmmInfo et comme espaces réservés positionnels sur les layouts d’instructions v1 hérités. Utilisez les points d’entrée de swap V2 (SwapBaseInV2 / SwapBaseOutV2) qui ignorent entièrement ces comptes.
Lorsque vous appelez une instruction v1 hérité SwapBaseIn / SwapBaseOut, Deposit, ou Withdraw, le nombre de comptes doit toujours correspondre à l’ancien layout (les comptes de marché occupent leurs positions historiques), mais leur contenu n’est plus vérifié — aucun CPI n’est émis contre eux. Le nouveau code doit utiliser les variantes de swap V2, qui ne prennent pas du tout ces comptes.
Le amm_open_orders de l’AMM est un compte appartenant à OpenBook contenant l’état des ordres à cours limité du pool sur ce marché : ordres actifs, soldes réglés, parrains, etc. amm_target_orders est du côté AMM : il contient la grille prévue de l’AMM (prix/taille pour chaque emplacement d’ordre) afin que le programme puisse comparer à bas coût avec ce qui est actuellement affiché et placer / annuler la différence.

PDAs d’autorité

Il existe exactement un PDA amm_authority pour l’ensemble du programme AMM v4. Sa seed est triviale (["amm authority"]) et son bump est stocké sur chaque AmmInfo. Cette autorité signe tous les mouvements de tokens pour tous les pools AMM v4.
Il existe une autorité scoped au pool séparée dérivée par pool pour signer les opérations OpenBook (amm_authority ci-dessus couvre en fait les deux dans la conception de ce programme ; différentes versions utilisaient des dérivations différentes, donc vérifiez le AmmInfo.nonce du pool spécifique dans le code).

Vaults

Les vaults SPL Token du pool sont des comptes de tokens standard dont le owner est amm_authority. Pas des ATAs — leurs adresses sont des PDAs spécifiques dérivés à Initialize avec les seeds ["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]. Les adresses sont stockées sur AmmInfo ; la dérivation est une curiosité ponctuelle. Token-2022 n’est pas supporté. Le programme code en dur l’ID du programme SPL Token pour tous les mouvements de vault. Tenter de lier un pool AMM v4 à un mint Token-2022 échoue à Initialize.

LP mint

Un mint SPL Token classique dont l’autorité est amm_authority. L’offre totale suit la propriété LP du pool ; brûler des LP retourne les tokens des deux vaults au prorata. Parce qu’AMM v4 précède CPMM, il n’y a pas de miroir lp_supply dans l’état du pool — lisez directement l’offre du mint en chaîne.

Masque de statut

AmmInfo.status contrôle les opérations. Bits (la position peut différer selon les versions du programme — confirmez via la source) : Le multisig Raydium définit ces valeurs via SetParams (avec param = Status). (AdminCancelOrders a été supprimé.)

Observation / oracle

AMM v4 n’a pas de compte d’observation dédié. Les autres protocoles qui ont besoin d’un TWAP en chaîne consomment généralement les croisements de carnet d’OpenBook indirectement ou lisent hors chaîne. Si vous avez besoin d’un TWAP Raydium avec support du programme, utilisez CPMM ou CLMM.

Dériver les comptes d’un pool à partir de zéro

Parce qu’AMM v4 n’a pas été conçu pour les PDAs déterministes par paire (il précède cette convention Solana), le amm_id canonique est une keypair avec seed dérivée avec :
Le même motif de clé avec seed s’applique à amm_open_orders, amm_target_orders, amm_withdraw_queue, pool_temp_lp, pool_coin_token_account, pool_pc_token_account, et lp_mint. Le SDK et l’API les pré-calculent pour vous ; voir raydium-sdk-v2’s Liquidity.getAssociatedPoolKeys. En pratique, les intégrateurs lisent l’ensemble complet des comptes du pool depuis GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID> ou depuis le SDK. La dérivation manuelle est rarement nécessaire.

Référence rapide du cycle de vie

Les pools et leurs comptes persistent indéfiniment. Même si la liquidité est entièrement retirée, AmmInfo reste.

Où lire quoi

Sources :