Passer au contenu principal
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Une entrée du journal des modifications de la documentation. Pour l’index de toutes les mises à jour, consultez reference/changelog. Pour la chronologie historique du protocole, consultez introduction/history-and-milestones.
AMM v4 a cessé de partager la liquidité vers OpenBook (anciennement Serum) il y a longtemps ; le chemin hybride de market-making sur carnet d’ordres est resté dormant pendant des années. Cette mise à niveau est le nettoyage : elle supprime la dépendance Serum, tous les CPI du carnet d’ordres et les instructions de market-making mortes du programme, laissant AMM v4 comme un AMM pur à produit constant (x·y=k). Elle ne change pas le comportement de trading en direct — il n’y avait plus d’ordres OpenBook à arrêter de placer.

TL;DR pour les intégrateurs

  • Swap / Deposit / Withdraw continuent de fonctionner sans changements. Les transactions construites avec les anciennes dispositions de comptes s’exécutent toujours — les comptes Serum/market supprimés sont simplement ignorés (pas de validation, pas de CPI). SwapBaseIn / SwapBaseOut attendent toujours 17 (+1 optionnel) comptes ; les dispositions de Deposit et Withdraw sont inchangées. Vous n’avez pas besoin de déployer une mise à jour client pour maintenir les flux existants.
  • Migrez vers les points d’entrée de swap V2. SwapBaseInV2 / SwapBaseOutV2 ne contiennent aucun compte de marché et aucun amm_open_orders (8 comptes au total), donc les transactions sont plus petites et moins chères. Les routeurs/agrégateurs doivent router via V2.
  • WithdrawPnl est un changement majeur (admin uniquement). Il passe de 17 (+1 optionnel) → 10 comptes avec aucune analyse de compatibilité ; l’ancienne disposition ne s’aligne pas (l’ancien #5 était amm_open_orders) et échoue la validation. Les outils d’administration doivent être mis à jour.
  • SetParams est un changement majeur (admin uniquement). Les comptes se réduisent à [amm, admin], et l’énumération param est renumérotée (Fees 9 → 2, SetOpenTime 11 → 3) ; AmmOwner, LastOrderDistance, UpdateOpenOrder et les paramètres de grille sont supprimés.
  • Plusieurs instructions ne sont plus appelables. Initialize, PreInitialize, MonitorStep, MigrateToOpenBook, WithdrawSrm, SimulateInfo et AdminCancelOrders reviennent maintenant en arrière. Utilisez Initialize2 pour créer des pools.
  • Les dispositions de comptes on-chain sont stables en octets, et les codes d’erreur sont inchangés. AmmInfo / StateData conservent leur disposition (les anciens champs OpenBook sont conservés mais dépréciés/gelés) ; la numérotation AmmError est préservée, avec seulement un nouveau NotAllowed ajouté.

Pourquoi cela importe (pour les traders, les LP et les intégrateurs)

  • Les traders ne voient aucun changement dans le comportement ou la tarification des swaps — la courbe à produit constant est inchangée. Les swaps avec disposition V2 sont moins chers à exécuter car ils contiennent environ 8 comptes de moins.
  • Les LP conservent les mêmes économies de dépôt/retrait. La liquidité s’est longtemps trouvée entièrement dans les coffres du pool, donc la valeur du pool est entièrement on-pool ; cette mise à niveau supprime seulement la plomberie de marché obsolète.
  • Les intégrateurs obtiennent des transactions plus petites et plus simples et un modèle de cotation qui lit directement depuis les coffres. Les intégrations existantes ne se cassent pas (sauf pour l’admin WithdrawPnl / SetParams), mais le shim de compatibilité de swap v1 est temporaire — migrez vers V2 à votre convenance.

Changements au niveau des instructions

Toujours appelables, disposition inchangée (rétrocompatible)

Initialize2, Deposit, Withdraw, SwapBaseIn, SwapBaseOut, CreateConfigAccount et UpdateConfigAccount conservent leurs listes de comptes existantes. Sur SwapBaseIn / SwapBaseOut, Deposit et Withdraw, les comptes OpenBook/market sont toujours acceptés positionnellement mais ne sont plus validés ou utilisés — aucun CPI n’est émis et les réserves du pool sont calculées uniquement à partir des coffres. Le nombre de comptes doit toujours correspondre, donc les transactions existantes continuent de s’exécuter sans changement.

SwapBaseInV2 / SwapBaseOutV2 — chemin recommandé

Omettez entièrement les comptes de marché et amm_open_orders (8 comptes ; tags 16 / 17). Les mathématiques de cotation sont identiques à v1. Les nouvelles intégrations et routeurs doivent utiliser V2.

WithdrawPnl — 17 (+1 optionnel) → 10 comptes (⚠️ changement majeur, aucun chemin de compatibilité)

amm_open_orders et les six comptes de marché sont supprimés. La nouvelle disposition fixe de 10 comptes, réservée à l’admin, n’a aucune analyse de compatibilité ; l’ancienne disposition ne s’aligne pas et échoue avec des erreurs telles que InvalidCoinVault.

SetParams — réduit à [amm, admin] (⚠️ changement majeur) + paramètres renumérotés

L’autorité, les open-orders, les target-orders, le coffre et tous les comptes de marché sont supprimés. L’énumération param est renumérotée et réduite :
ParamAncienne valeurNouvelle valeur
Status00
State11
Fees92
SetOpenTime113
Tous les paramètres de grille du carnet d’ordres (OrderNum, Depth, AmountWave, MinPriceMultiplier, MaxPriceMultiplier, MinSize, VolMaxCutRatio, InitOrderDepth, SetSwitchTime, ClearOpenTime, Seperate) plus AmmOwner, LastOrderDistance et UpdateOpenOrder sont supprimés. La structure SetParamsInstruction supprime new_pubkey et last_order_distance.

Ne sont plus appelables (reviennent en arrière à l’exécution ; constructeurs supprimés)

InstructiontagRemplacement
Initialize0Initialize2
MonitorStep2aucun (crank du carnet d’ordres, retiré)
MigrateToOpenBook5aucun
WithdrawSrm8aucun (remise de frais SRM, retirée)
PreInitialize10Initialize2
SimulateInfo12cotation off-chain / SDK
AdminCancelOrders13aucun

Changements de réserve / état

  • Formule d’actifs du pool. Les actifs totaux du pool sont maintenant soldes des coffres − PnL en attente (need_take_pnl) ; le terme des ordres ouverts OpenBook — déjà zéro en pratique — est supprimé. Le code de cotation peut lire directement depuis les soldes des coffres.
  • Champs d’état dépréciés. StateData.total_pnl_pc, total_pnl_coin, orderbook_to_init_time, swap_coin_in_amount, swap_pc_out_amount, swap_acc_pc_fee, swap_pc_in_amount, swap_coin_out_amount et swap_acc_coin_fee sont conservés pour la compatibilité de disposition mais ne sont plus mis à jour. Les consommateurs qui dépendent des compteurs de volume swap_* doivent passer aux journaux de transactions.
  • Initialisation de AmmInfo. coin_lot_size, pc_lot_size et min_size sont maintenant initialisés à 0.
  • Dépendance supprimée et CPI. La crate serum_dex est supprimée de Cargo.toml ; tous les CPI Serum DEX (invoke_dex_new_order_v3, invoke_dex_cancel_order_v2, invoke_dex_settle_funds, invoke_dex_init_open_orders, …) sont supprimés de invokers.rs. Structures de données supprimées : LastOrderDistance, SimulateParams, RunCrankData, GetPoolData, GetSwapBaseInData, GetSwapBaseOutData.