1
Charger le pool et le palier de frais
2
Choisir une plage
Convertissez les prix lisibles (token1 par token0) en ticks alignés sur l’espacement du palier :Pour une position sur toute la plage, utilisez
TickUtils.getMinPriceFromTick et getMaxPriceFromTick, qui renvoient les ticks extrêmes alignés sur l’espacement.3
Dimensionner le dépôt
À partir du montant d’un jeton, calculez le montant correspondant de l’autre au prix actuel :Si le prix actuel est en dehors de la plage, la position est à un seul côté : seul du token0 est nécessaire (prix égal ou inférieur à
tickLower), ou seul du token1 (prix au-dessus de la plage).4
Ajouter de la liquidité
positionId renvoyé : les étapes suivantes l’utilisent pour lire la position, collecter et retirer. Pour compléter la même plage plus tard, passez existingPosition: true : le SDK joint alors le jeton de position.5
Suivre les frais et la valeur
tokensOwed contient les frais déjà crédités à la position (token0, token1, récompense). La vue positionInfo du pool (powfi.clmm.positionInfo) renvoie aussi les montants de jetons et les frais actuels. Voir la référence CLMM.Pour valoriser la position, passez -liquidity, le sqrtPriceX96 actuel et les bornes de la plage à ClmmLiquidityUtils.getAmountsForLiquidity.6
Collecter les frais
7
Retirer
removeLiquidity collecte aussi dans la même transaction : les jetons retirés ainsi que les frais et récompenses accumulés sont envoyés à votre adresse, sans appel séparé à collectTokens.Créer un nouveau pool
N’importe qui peut créer un pool CLMM : il n’existe on-chain aucune liste blanche de créateurs ni de jetons. Avant d’en créer un, notez que :- Seuls les paliers de frais existants sont utilisables. Un pool est créé dans un palier de frais (
configIndex) déjà mis en place par l’équipe Powfi. Vous ne pouvez pas choisir vos propres frais ni votre espacement de ticks. Listez les paliers disponibles avecgetAllPoolConfigs(). - Un seul pool par paire de jetons et par palier. L’adresse du pool est dérivée de la paire et du palier : la création échoue si ce pool existe déjà.
- Le créateur fixe le prix initial. Le
tickque vous passez devient le prix de départ du pool, et votre première position est mintée à ce prix. S’il est loin du prix du marché, des arbitragistes échangeront immédiatement contre votre position. - Les deux jetons doivent figurer dans la liste de jetons. Le contrat accepte n’importe quel jeton, mais
getPoolStateet les méthodes associées du SDK lèvent une erreur pour les jetons absents de la liste de jetons.
poolExists(token0, token1, configIndex) renvoie false, créez le pool et la première position en un seul appel :
Pour calculer vous-même un ID de position (par exemple pour vérifier qu’un portefeuille détient déjà une plage avant d’ajouter), ne passez pas une adresse sans groupe telle quelle : l’ID obtenu serait faux. Normalisez-la d’abord avec
normalizeAddress(address, powfi.clmm.getClmmConfig().groupIndex), ou utilisez PoolUtils.getPositionId(poolAddress, owner, ...), qui normalise pour vous.