Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Résumé en un paragraphe
CLMM — Concentrated Liquidity Market Maker — est l’AMM de style Uniswap-v3 de Raydium. Au lieu de répartir le dépôt d’un fournisseur de liquidité sur l’ensemble de la courbe de prix, le CLMM permet aux LP de déposer dans une plage de prix spécifique. À l’intérieur de cette plage, chaque dollar de dépôt est plusieurs fois plus productif que dans un pool CPMM ; en dehors de la plage, le dépôt ne génère rien et reste comme un solde unilatéral. Le programme suit la liquidité par tick (un bucket de prix discrétisé), évalue l’état du pool par la racine carrée du prix encodée en nombre à virgule fixe Q64.64 (sqrt_price_x64), et émet un NFT pour chaque position LP plutôt qu’un token LP fongible.
Quoi de neuf
La dernière version du CLMM apporte trois ajouts au-dessus du cœur de style Uniswap-v3. Ils sont optionnels au moment de la création du pool et rétrocompatibles avec les pools et positions existants :- Ordres limites. Les LP peuvent désormais placer un ordre à un seul tick à un prix spécifique et faire remplir le chemin de swap FIFO lorsque le swap traverse ce tick. Les ordres se règlent dans l’ATA du propriétaire au prix limite ; un gardien hors chaîne (
limit_order_admin) peut récupérer les ordres remplis sans que le propriétaire soit en ligne. Voir Instructions → OpenLimitOrder / SettleLimitOrder et Math → Limit-order matching during swap. - Frais unilatéraux (
CollectFeeOn). Les pools peuvent être configurés pour prélever les frais de swap du côté d’entrée (comportement hérité, mode0), ou toujours detoken_0(1), ou toujours detoken_1(2). Utile quand un côté de la paire est le token comptable canonique (par ex., USDC). Voir Fees → Single-sided fee. - Frais dynamiques. Les pools peuvent opter pour une surcharge de frais de suivi de volatilité qui augmente avec les mouvements rapides de tick et décroît au fil du temps. Calibré par une
DynamicFeeConfigpar tier et uneDynamicFeeInfopar pool. Voir Fees → Dynamic fee et Math → Dynamic fee derivation.
CreateCustomizablePool, expose les trois paramètres au moment de la création du pool. L’instruction classique CreatePool continue de fonctionner pour les pools à frais par défaut sans ordres limites ni frais dynamiques.
Une version ultérieure ajoute les multi-pools avec permission : CreatePermissionedPool permet à un opérateur autorisé (détenant une PDA Permission) de créer plus d’un pool pour la même paire et le même tier de frais en intégrant un seed_index dans l’adresse du pool, et renforce OpenLimitOrder pour rejeter les ordres dont le compte de token d’entrée ou de sortie est gelé. Voir Instructions → CreatePermissionedPool et l’entrée du changelog du 2026-07-30.
La version 2026-08 ajoute un chemin de gel de position conditionnel pour les pools d’émetteurs restreints KYC sélectionnés. Chaque nouveau mint NFT de position utilise le pool comme autorité de gel, mais le compte de token NFT reste dégelé et transférable par défaut. Le CLMM le gèle uniquement lorsque la position est ouverte via OpenPositionV2 ou OpenPositionWithToken22Nft et que l’autorité de gel du mint du pool correspond à la liste des émetteurs restreints du programme. Le propriétaire peut toujours gérer la liquidité et fermer une position correspondante, mais ne peut pas transférer son NFT ni changer le propriétaire du compte de token. Les positions existantes ne sont pas gelées rétroactivement. Voir Ticks and positions → Restricted-issuer positions et l’entrée du changelog du 2026-08-17.
Ce que le CLMM vous apporte
- Efficacité du capital. Un LP stablecoin-stablecoin concentrant la liquidité dans une bande de ±0,1% autour de la parité peut générer 100×+ les frais par dollar de TVL par rapport à un pool CPMM de la même paire.
- Comptabilité des frais au niveau de la position. Les frais s’accumulent par position, pas par mint LP. Deux positions sur le même pool génèrent des montants de frais différents en fonction de leurs plages et du chemin que le prix a emprunté.
- Plusieurs tiers de frais par paire. Une paire peut avoir plusieurs pools CLMM, chacun lié à une
AmmConfigdifférente avec son propre taux de frais de trading et espacement de tick. L’interface web et les routeurs affichent le tier qui a le plus de liquidité au prix actuel. - Incitabilité directement sur le pool. Jusqu’à trois flux de tokens de récompense peuvent être attachés à un pool ; les positions collectent les récompenses au prorata en fonction des secondes × liquidité en plage qu’elles contribuent. Voir
products/clmm/fees. - Positions NFT. Chaque position est un token non fongible. Transférer le NFT transfère normalement la position ; les portefeuilles et les interfaces peuvent afficher les positions de la même manière qu’ils affichent les objets de collection. Seule une position V2 dont le mint sous-jacent correspond au filtre d’émetteur restreint est gelée et non transférable.
- Support Token-2022 des deux côtés de la paire, avec les mêmes restrictions d’extension que le CPMM.
Ce que le CLMM n’est pas
- Pas du « configurer et oublier ». Une plage définie quand SOL est à $160 ne générera rien si SOL passe à $80, sauf si vous l’ajustez activement. Le CLMM récompense les LP actifs ; les LP passifs devraient rester avec le CPMM.
- Pas sans coût d’ouverture. Chaque nouveau tick-array que la position traverse doit être initialisé, ce qui coûte du loyer. Les plages larges sont moins chères ; les plages étroites ne le sont pas.
- Pas un CLOB. Contrairement à l’AMM v4, le CLMM n’a pas de dépendance OpenBook. Toute la liquidité se trouve sur la carte de tick.
- Pas un sur-ensemble du CPMM. Une position CLMM couvrant
[tick_min, tick_max]à plage maximale se comporte de manière similaire au CPMM, mais avec des coûts de gaz différents, un modèle de comptabilité des frais différent, et pas de token LP fongible. Si vous voulez un pool LP simple et fongible, utilisez le CPMM.
Comment le CLMM diffère du CPMM et de l’AMM v4
Modèle mental
Pensez à un pool CLMM comme trois structures de données superposées :- Une courbe continue dans l’espace
sqrt_price. Le prix du pool est représenté commesqrt_price_x64, un nombre à virgule fixe Q64.64. Les swaps parcourent cette courbe ; dans une limite de tick, les mathématiques sont les mathématiques standard de l’AMM à liquidité concentrée (voiralgorithms/clmm-math). - Une carte de tick discrète. Les prix sont quantifiés en ticks — puissances entières de
1.0001. Chaque tick a unsqrt_priceconnu. Les positions référencent leurs extrémités comme des indices de tick entiers. Les indices de tick sont groupés en tick arrays de taille fixe pour le stockage. - Comptabilité des frais et récompenses par position. Chaque position stocke le
fee_growth_insideglobal au moment de sa dernière mise à jour. Quand le LP touche la position (ouvrir, fermer, ajuster, collecter), le programme soustrait la valeur stockée de la valeur globale actuelle pour calculer ce qui est dû. C’est le modèle Uniswap-v3feeGrowthInside0X128 / feeGrowthInside1X128.
- Ouvrir une position : choisir une plage de tick, déposer des tokens, émettre un NFT, insérer la liquidité dans la carte de tick dans la plage, initialiser tous les tick-arrays précédemment vides.
- Augmenter / diminuer la liquidité : ajuster le montant stocké dans le compte de position associé au NFT et dans la carte de tick ; collecter les frais accumulés en même temps.
- Swap : parcourir depuis le
sqrt_price_x64actuel dans la direction du trade, consommant la liquidité active jusqu’à ce que l’entrée soit épuisée ou que le prochain tick initialisé soit atteint ; traverser le tick et récupérer ou déposer la liquidité du nouveau côté. - Collecter les frais / récompenses : calculer
fee_growth_inside_now − fee_growth_inside_last×position_liquiditypour chaque côté et chaque flux de récompense ; transférer.
liquidity individuels.
Quand choisir le CLMM
Choisissez le CLMM quand :- Vous fournissez de la liquidité à une paire stable ou mean-reverting (USDC/USDT, jitoSOL/SOL, wBTC/BTC) et voulez vous concentrer près de la parité.
- Vous êtes un market maker disposé à surveiller le prix et à rééquilibrer.
- Vous avez spécifiquement besoin d’émissions d’incitations par pool sans mettre en place une ferme séparée.
- Vous avez besoin d’une comptabilité par position pour votre propre produit LP (vault, produit structuré, etc.).
- Vous lancez un nouveau token avec une découverte de prix inconnue.
- Vous voulez un seul token LP fongible que vous pouvez staker, verrouiller ou composer avec.
- Vous voulez une expérience LP passive.
- Vous avez spécifiquement besoin de la profondeur hybride-CLOB que l’AMM v4 place sur OpenBook.
- Vous migrez des intégrations AMM v4 existantes et n’ouvrez pas de nouvelles positions.
Les positions sont des NFT
Une position CLMM est représentée on-chain par deux comptes :- Un mint NFT de position avec une offre de 1.
- Un compte d’état de position personnelle clé au mint NFT, contenant les ticks, la liquidité et les dernières valeurs de croissance des frais observées de la position.
products/clmm/ticks-and-positions.
Les versions antérieures du CLMM créaient également un compte
ProtocolPositionState par (pool, tick_lower, tick_upper) pour agréger la liquidité pour cette plage. Les versions plus récentes ne le créent ni ne l’utilisent plus — le champ apparaît toujours sur les listes de comptes OpenPosition / IncreaseLiquidity / DecreaseLiquidity comme un UncheckedAccount pour la compatibilité ABI, mais le programme ne le lit ni ne l’écrit. La comptabilité de plage agrégée se trouve sur les extrémités de tick (liquidity_gross, liquidity_net) directement.Où aller ensuite
- Accounts — les mises en page des comptes pool, config, tick-array et position.
- Ticks and positions — la carte de tick, l’espacement de tick, le dimensionnement du tick-array, les positions basées sur NFT.
- Math —
sqrt_price_x64, parcours de swap, dérivation defee_growth_inside. - Instructions —
OpenPosition,IncreaseLiquidity,Swap,CollectRewards, la famille des ordres limites, etCreateCustomizablePool. - Fees and rewards — le modèle de frais par position, les modes de frais unilatéraux, les frais dynamiques, et les trois emplacements de récompense.
- Code demos — procédures pas à pas pour ouvrir / ajuster / swapper / collecter / ordres limites / pool personnalisable en TypeScript.
- Raydium CLMM source —
raydium-io/raydium-clmm - Uniswap v3 whitepaper (« Uniswap v3 Core ») pour les mathématiques que le CLMM hérite directement
reference/program-addressespour les ID de programme canoniques

