Skip to main content
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é

Conservez le 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 avec getAllPoolConfigs().
  • 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 tick que 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 getPoolState et les méthodes associées du SDK lèvent une erreur pour les jetons absents de la liste de jetons.
Si 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.