Skip to main content
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Stable AMM est son propre programme ; sa structure de comptes côté pool ressemble à AMM v4 (AmmInfo, vaults, autorité), et elle dispose en outre d’un compte ModelDataInfo qui stocke la table de recherche. Cette page couvre les deux.

Inventaire

AMM pur. Stable AMM détient toute la liquidité dans ses propres vaults et ne dépend pas d’OpenBook. Il a porté un chemin de tenue de marché OpenBook au début de sa vie, mais ce chemin est dormant depuis des années, et la mise à jour du 2026-06-22 a supprimé le code restant. Les comptes de marché serum_* et amm_open_orders ci-dessous sont donc hérités : ils peuvent encore apparaître dans les anciennes transactions de disposition pour la compatibilité rétroactive, mais le programme ne les valide ni ne les lit, et les nouvelles instructions les omettent entièrement.
L’inventaire actif est maintenant entièrement côté pool :

AmmInfo

Compte d’état racine. La disposition est presque identique à AMM v4 — paramètres du pool, décimales, frais, références aux vaults/mints — avec un ajout : un champ model_data_key pointant vers la table de recherche.
Champs clés côté intégrateur :
  • model_data_key — l’adresse de la table de recherche. Doit être passée à chaque instruction.
  • fees — structure identique à AMM v4. Par défaut, frais de swap de 0,25 %, répartition LP / protocole de 0,22 % / 0,03 %.
  • coin_vault, pc_vault — les vaults des pools.
  • status — bitmask contrôlant le swap/dépôt/retrait/crank.
  • out_put.need_take_pnl_* — balayés par WithdrawPnl.

ModelDataInfo

La table de recherche. Un grand tableau creux de points prix/quantité.
Cycle de vie : Les instructions de configuration qui ont construit ces tables — InitModelData (créé le compte) et UpdateModelData (éléments peuplés, définissant valid_data_count) — ont été supprimées dans la mise à jour du 2026-06-22. Les tables sur les pools existants sont maintenant fixes. À l’exécution, les instructions appelables restantes les consomment toujours :
  • Swap / dépôt / retrait appellent des fonctions de recherche qui font une recherche binaire et interpolent dans elements[0..valid_data_count].

DataElement

L’entrée atomique dans la table. Doit être triée (x croissant, y décroissant, prix croissant) pour que la recherche binaire fonctionne.
Lors du remplissage de la table, l’administrateur spécifie ces pré-mises à l’échelle. Le programme ne valide pas l’ordre de tri en chaîne (pour la vitesse), donc un tri incorrect provoque des devis incorrects.

Autorité et vaults

Identique à AMM v4 :
  • amm_authority est un PDA unique au niveau du programme dérivé avec la graine ["amm authority"]. Il possède tous les vaults du pool et signe leurs mouvements.
  • Les vaults sont des comptes SPL Token dont le propriétaire est amm_authority, pas des ATA.
Token-2022 n’est pas supporté.

Bitmask de statut

Identique à AMM v4. Contrôle si le swap/dépôt/retrait/crank sont activés.

Suivi des frais et du PnL

La structure out_put suit :
  • need_take_pnl_coin, need_take_pnl_pc — frais de protocole accumulés mais pas encore balayés. WithdrawPnl les déplace.
  • swap_coin_in_amount, swap_pc_in_amount, etc. — compteurs d’analyse.
Calcul des actifs du pool (post-découplage). Parce qu’aucun fonds n’est plus bloqué en tant que commandes ouvertes OpenBook, les actifs totaux du pool sont maintenant calculés entièrement à partir des vaults :
Les indexeurs et le code de cotation qui ont reconstruit la valeur du pool à partir des soldes OpenOrders doivent supprimer ce terme.

Taille du compte

Le ModelDataInfo est volumineux (~1,2 Mo, puisque 50 000 éléments × 24 octets par élément). C’est pourquoi la création d’un pool Stable nécessite une pré-allocation explicite de loyer et de compte. Le SDK Raydium et les outils gèrent cela de manière transparente ; les intégrateurs ont rarement besoin d’allouer manuellement.

Dérivation des comptes à partir de zéro

Comme AMM v4, Stable AMM utilise des clés avec graine (pas des PDA purs). L’identité canonique du pool est dérivée via :
De même pour les vaults, le mint LP, les ordres cibles, etc. En pratique, utilisez le SDK ou l’API pour récupérer les adresses pré-calculées.

Où lire quoi

Sources :