1. Choisir le pool
Une paire peut avoir un pool par palier de frais. Utilisez le plus profond :
2. Déterminer la direction
La direction se définit sur la paire triée : vendre token0 correspond à zeroForOne = true.
3. Simuler et coter
Entrée exacte
Sortie exacte
simulateSwap fait un seul appel au nœud et renvoie la courbe de liquidité tick par tick. offlineSwap la rejoue localement : vous pouvez donc recoter des montants proches sans nouvel aller-retour, tant que le montant ne dépasse pas la dernière ligne simulée.
Prix avant et après :
4. Exécuter
Dans ClmmSwapRequest, token0 / token1 signifient entrée / sortie, et non l’ordre trié.
Entrée exacte
Sortie exacte
Le slippage devient un sqrtPriceLimitX96 : le swap échoue si l’exécution du montant complet devait faire bouger le prix au-delà de la tolérance. Voir CLMM : slippage sur le prix.
clmm.swap() exige une exécution complète. Si la limite de prix est atteinte avant que tout le amount soit échangé, la transaction échoue avec l’erreur de contrat 501 et aucun token ne bouge. Réessayez avec un slippage plus élevé ou un montant plus petit. (swapTo() est différent : il s’arrête au prix cible et peut être exécuté partiellement, par conception.)
Cotations multi-sauts
Pour coter A → B → C sur deux pools du même palier de frais, enchaînez les simulations. La sortie du premier saut devient le montant en entrée exacte du second :
Pour simuler tout le chemin en un seul appel, passez data: powfi.clmm.buildSwapPath(C, configIndex) et l’adresse du second pool dans interestedContracts. clmm.swap() n’exécute que des swaps sur un seul pool. Pour exécuter un swap multi-sauts, appelez le script SwapWithoutAccount de ClmmScripts avec le même data.
Swapper jusqu’à un prix cible
La cible doit être du bon côté : vendre du token0 fait baisser le prix, vendre du token1 le fait monter.