Skip to main content
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Le Stable AMM est un programme indépendant avec son propre ID de programme. Ce n’est pas un mode du programme AMM v4, et il n’est pas tradé « via » AMM v4 — il est déployé, mis à jour et appelé séparément. Il ressemble à AMM v4 uniquement par ses conventions de frais et de disposition des comptes.
Mise à jour du 2026-06-22 — suppression du code OpenBook (market) mort. Le Stable AMM a cessé de poster des ordres sur OpenBook il y a longtemps ; le chemin de market-making du carnet d’ordres est dormant depuis des années. Cette mise à jour supprime les comptes et le code liés au marché restants — elle ne change pas le comportement du trading en direct.Deux conséquences pour les intégrateurs :
  1. Dispositions de comptes plus petites. SwapBaseIn / SwapBaseOut (18 → 9), Deposit (14 → 12), et Withdraw (21/22 → 12) suppriment les comptes Serum/market morts. Les anciennes dispositions restent analysables pour la compatibilité rétroactive. WithdrawPnl (16 → 10) est un changement de rupture difficile sans chemin de compatibilité (admin uniquement).
  2. La plupart des instructions sont supprimées. Seules SwapBaseIn, SwapBaseOut, Deposit, Withdraw, et WithdrawPnl restent appelables. Toutes les autres instructions ne peuvent plus être appelées.
Journal des modifications : reference/changelog.

Inventaire des instructions

Appelables

Supprimées (plus appelables)

Celles-ci ont été supprimées lors de la mise à jour du 2026-06-22 et ne peuvent plus être invoquées. Voir Instructions supprimées.

Deposit

Ajouter de la liquidité, recevoir des jetons LP. Arguments
Comptes — nouvelle disposition, 12 comptes (inscriptible W, signataire S) Compatibilité : amm_open_orders (ancien #3) et serum_market (ancien #9) sont supprimés. Quand 14 comptes sont passés, l’instruction est analysée avec l’ancienne disposition de 14 comptes ; les comptes Serum sont ignorés. Mathématiques — pro-rata standard utilisant la table de recherche pour calculer le ratio. Le SDK calcule la paire coin/pc pour le montant LP souhaité et vérifie par rapport aux plafonds maximaux.

Withdraw

Brûler des LP, recevoir les deux côtés pro-rata. Arguments
Comptes — nouvelle disposition, 12 comptes (inscriptible W, signataire S) Compatibilité : neuf comptes Serum (amm_open_orders, serum_program, serum_market, serum_coin_vault, serum_pc_vault, serum_vault_signer, serum_event_q, serum_bids, serum_asks) sont supprimés. Les anciennes dispositions de 21 ou 22 comptes sont toujours acceptées. Notez cependant que la logique de frais de parrainage pour le 22e compte optionnel referrer_pc_wallet a été supprimée — il peut toujours être passé mais n’a plus d’effet. Préconditions
  • user_source_lp détient au moins amount.
Postconditions
  • amount jetons LP sont brûlés.
  • L’utilisateur reçoit les montants coin et pc selon le pro-rata actuel, ajustés pour les frais accumulés.

SwapBaseIn

Swap à entrée exacte utilisant la table de recherche pour la tarification. Arguments
Comptes — nouvelle disposition, 9 comptes (inscriptible W, signataire S) Compatibilité : les neuf comptes OpenBook (amm_open_orders, serum_program, serum_market, serum_bids, serum_asks, serum_event_queue, serum_coin_vault, serum_pc_vault, serum_vault_signer) sont supprimés. Si le nombre de comptes passés n’est pas 9, l’instruction est analysée avec l’ancienne disposition de 18 comptes ; les comptes Serum doivent toujours occuper leurs positions, mais leur contenu n’est plus validé ni utilisé. Préconditions
  • amm.status permet le swap.
  • user_source_token détient ≥ amount_in.
Postconditions
  • L’utilisateur perd amount_in, gagne amount_out ≥ minimum_amount_out.
  • Les frais du pool incrémentent les compteurs need_take_pnl_*.
Mathématiques — Interpolation de table de recherche comme décrit dans products/stable/math.

SwapBaseOut

Swap à sortie exacte (inverse de SwapBaseIn). Même disposition de 9 comptes, direction mathématique différente. Arguments

WithdrawPnl

Admin uniquement. Récupérer les frais de protocole accumulés de need_take_pnl_* dans les comptes PnL désignés.
Changement de rupture difficile — pas de chemin de compatibilité. Cette instruction n’a pas d’analyse pour l’ancienne disposition. L’envoi de l’ancienne disposition échoue avec des erreurs de validation telles que InvalidTokenCoin en raison du désalignement des comptes (ancien #3 était open_orders). Les outils d’administration qui appellent WithdrawPnl doivent être mis à jour vers la nouvelle disposition de 10 comptes.
Arguments — aucun (piloté par l’état). Comptes — nouvelle disposition, 10 comptes fixes, admin uniquement (inscriptible W, signataire S) Changement logique : quand les fonds disponibles du pool sont insuffisants pour retirer le PnL accumulé, le pool n’est plus mis en CancelAllOrdersState / Disabled ; l’instruction retourne TakePnlError directement. Le referrer_pc_wallet optionnel a également été supprimé. Préconditions
  • amm_admin doit être autorisé.
Postconditions
  • need_take_pnl_coin et need_take_pnl_pc sont transférés aux comptes de l’admin.
  • Les compteurs sont remis à zéro.

Instructions supprimées

Les instructions suivantes ont été supprimées lors de la mise à jour du 2026-06-22 et ne peuvent plus être appelées. Elles sont documentées ici uniquement pour que les intégrateurs les reconnaissent dans les transactions historiques et les SDK.
  • Initialize — autrefois amorçait un nouveau pool Stable AMM. Supprimée.
  • PreInitialize — aide de pré-allocation héritée. Supprimée.
  • InitModelData — autrefois créait et initialisait la table de recherche ModelDataInfo. Supprimée.
  • UpdateModelData — autrefois remplissait jusqu’à 5 éléments de table de recherche par appel. Supprimée.
  • MonitorStep — le crank OpenBook qui réglait les remplissages et repostait la grille d’ordres. Déjà longtemps dormant après que le pool ait cessé de poster sur OpenBook ; maintenant supprimée.
  • SetParams — modifications des paramètres d’administration (statut, frais, propriétaire, clé de données de modèle, etc.). Supprimée.
  • WithdrawSrm — récupérait les remboursements de réduction de frais SRM des pools de l’ère Serum précoce. Supprimée.
  • SimulateInfo — aide de devis en lecture seule. Supprimée ; utilisez les aides de courbe stable hors chaîne du SDK pour les devis (voir Démos de code).

Où aller ensuite

  • Comptes — pour les dispositions et tailles des champs de compte.
  • Mathématiques — pour la logique d’interpolation de table de recherche.
  • Démos de code — pour voir comment appeler celles-ci depuis le SDK.
Sources :
  • raydium-stable/program/src/instruction.rs (enum et pack/unpack)
  • raydium-stable/program/src/processor.rs (logique d’exécution)