Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Deux concepts distincts
L’impact de prix et le slippage sont souvent confondus dans les interfaces, mais ils désignent des choses différentes.-
L’impact de prix est une propriété déterministe d’un échange contre un état de pool spécifique. Étant donné
(Δin, reserves), l’impact de prix est entièrement calculable avant la soumission de l’échange. - Le slippage est la différence réalisée entre le prix que vous attendiez au moment du devis et le prix que vous avez réellement obtenu à l’exécution. C’est une fonction de la latence, des transactions concurrentes et de l’ordre d’inclusion des blocs — pas des mathématiques du pool.
Définitions formelles
Impact de prix
impact ≈ 2 · Δin / reserve_in pour les petits échanges. Pour CLMM : dépend du nombre de ticks traversés par l’échange ; souvent plat dans la plage de ticks actuelle, sautant à chaque franchissement de tick.
Slippage réalisé
Dimensionnement de minAmountOut et maxAmountIn
Chaque swap Raydium prend une limite de protection contre le slippage :
SwapBaseInput(amount_in, min_amount_out)— entrée exacte, limite inférieure de la sortie.SwapBaseOutput(max_amount_in, amount_out)— sortie exacte, limite supérieure de l’entrée.
minAmountOut est amountOut × (1 − slippage) et c’est ce qui va on-chain comme limite ; priceImpact est déterministe à partir de l’état du pool seul ; fee est le total facturé.
La tolérance de slippage est un tampon autour de l’impact de prix, pas l’impact de prix lui-même. Une tolérance de 0,5 % signifie « accepter au maximum 0,5 % pire que mon devis » — indépendamment du fait que l’impact de prix était de 0,01 % (un petit échange) ou de 2 % (un grand échange). Pour un échange avec un impact de prix de 2 % et une tolérance de 0,5 %, minAmountOut est 2,5 % en dessous du spot pré-échange — essentiellement la somme de l’impact et de la tolérance.
Tolérances de slippage recommandées
Il n’y a pas un seul bon chiffre ; la bonne limite dépend de :- Stabilité de la paire. Les pools stablecoin-stablecoin peuvent utiliser en toute sécurité 0,1 %. Les pools de paires meme volatiles ont souvent besoin de 3–5 % juste pour atterrir de manière fiable.
- Taille de l’échange. Les échanges plus importants ont des impacts de prix plus importants, donc la tolérance doit s’adapter à eux pour éviter une annulation. Les valeurs par défaut de slippage automatique du SDK tournent autour de
max(0.5%, 2 × price_impact)pour cette raison. - Latence d’inclusion de bloc. Les transactions qui restent dans le mempool pendant plusieurs blocs sont exposées à plus d’échanges concurrents. Les bundles Jito et les frais de priorité réduisent cela.
Différences selon les types d’AMM
CPMM
L’impact de prix est lisse et continu (formule fermée2 · Δin / reserve_in). La tolérance de slippage s’adapte linéairement à la taille de l’échange.
AMM v4
Même mathématique de courbe que CPMM. Depuis la suppression d’OpenBook, les « réserves effectives » sont simplement les deux soldes de coffre :- Cotez sur les soldes de coffre bruts. Il n’y a pas de composant on-book à ajouter —
Initialize2écritAmmInfo.open_orders = Pubkey::default()sur chaque nouveau pool, et aucune instruction ne lit un compteOpenOrders. - Soustrayez le PnL de protocole accumulé (
state_data.need_take_pnl_coin/need_take_pnl_pc) des soldes de coffre pour obtenir les réserves que l’invariant utilise réellement. - Il n’y a pas de crank à pré-exécuter :
MonitorSteppanique maintenant avecunimplemented!et ne doit pas être envoyé.
CLMM
L’impact de prix est par morceaux. Dans la plage de ticks actuelle, l’impact est approximativement linéaire enΔin / L. Franchir une limite de tick peut changer L discrètement, causant un saut soudain du prix marginal. Un échange qui traverse plusieurs ticks peu peuplés peut avoir un impact beaucoup plus élevé que la règle empirique 2 · Δin / reserve ne le suggère.
La cotation CLMM du SDK itère l’étape de swap de manière déterministe pour retourner un amountOut attendu exact, donc minAmountOut = amountOut · (1 − slippage) est correct. Mais la valeur de retour priceImpact doit être interprétée comme « l’écart entre le spot pré-échange et le spot post-échange », qui sur CLMM peut être beaucoup plus grand que le slippage effectif de l’échange pour un utilisateur qui ne se soucie que de amount_out.
Courbe LaunchLab
Similaire à CPMM mais avec une courbe asymétrique (quadratique ou réserves virtuelles). L’impact croît plus rapidement pour les acheteurs tardifs à mesure que la courbe s’accentue vers la graduation. Les interfaces d’acheteur pré-achat doivent avertir quand un achat devrait pousser la courbe de plus de ~5 % dequote_reserve_target en une seule transaction.
Considérations MEV
Sur Solana, l’extraction de MEV contre les swaps prend principalement la forme d’attaques sandwich : un bot place une transaction de back-run qui échange après la vôtre, plus un front-run qui échange avant, tous deux au même slot. Votre échange se remplit à un prix pire qu’il ne l’aurait été sans le sandwich ; le back-run capture la différence. Atténuations :minAmountOutserré. Les limites de slippage agressives causent l’annulation de la transaction victime si elle est fortement sandwichée, protégeant les fonds (mais gaspillant du gaz). Sur Solana, c’est une pratique standard — le rejet est bon marché.- Bundles Jito. Soumettre via Jito avec un pourboire groupé exclut les intermédiaires de réorganiser votre tx. Les bundles atterrissent comme des blocs atomiques.
- Frais de priorité. Un frais de priorité élevé augmente la chance que votre échange atterrisse dans le bloc du leader actuel avant qu’un sandwicher puisse réagir. Moins robuste que les bundles, plus standard.
- RPC privé. Soumettre via un RPC privé (ou via un endpoint direct du validateur) réduit la fenêtre pendant laquelle un sandwicher mempool peut observer votre transaction.
integration-guides/routing-and-mev pour les modèles.
Slippage pour les routes multi-hop
Quand un swap route à travers plusieurs pools (par ex.USDC → SOL → RAY), la tolérance de slippage doit être appliquée par hop, pas seulement de bout en bout :
raydium.tradeV2.swap. (La façade est tradeV2 — raydium.trade n’existe pas.) Pour les routeurs personnalisés, répliquez le modèle.
Rapport aux utilisateurs
Règles empiriques pour une bonne interface de swap :- Affichez à la fois l’impact de prix attendu et la tolérance de slippage séparément.
- Mettez en évidence quand l’impact de prix dépasse ~2 % — avertissement « impact élevé ».
- Mettez en évidence quand l’impact de prix dépasse la tolérance — la transaction est presque certaine d’être annulée.
- Pour les paires volatiles, offrez un « mode slippage élevé » qui assouplit la limite et affiche un avertissement plus fort.
Pointeurs
products/cpmm/math,products/amm-v4/math,products/clmm/math— dérivations d’impact par type de pool.integration-guides/routing-and-mev— routage multi-hop + défenses MEV.integration-guides/priority-fee-tuning— dimensionnement des frais de priorité pour réduire le slippage.
- Implémentation du slippage / impact du SDK Raydium v2.
- Flashbots / Jito sur Solana MEV.

