Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
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, 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 bien plus productif qu’il ne le serait dans un pool CPMM ; en dehors de la plage, le dépôt ne génère rien et demeure sous forme de solde unilatéral. Le programme suit la liquidité par tick (un bucket de prix discrétisé), évalue l’état du pool en fonction de 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 jeton LP fongible.
Quoi de neuf
La dernière version de CLMM apporte trois additions au-dessus du cœur de style Uniswap v3. Elles sont optionnelles au moment de la création du pool et rétro-compatibles avec les pools et positions existants :- Limit orders. Les LP peuvent désormais placer une commande à un tick unique à un prix spécifique et faire remplir le chemin de swap FIFO lorsque le swap franchit ce tick. Les commandes se règlent dans l’ATA du propriétaire au prix limite ; un gardien hors chaîne (
limit_order_admin) peut collecter les commandes remplies sans que le propriétaire soit en ligne. Voir Instructions → OpenLimitOrder / SettleLimitOrder et Math → Limit-order matching during swap. - Single-sided fee (
CollectFeeOn). Les pools peuvent être configurés pour prélever les frais de swap du côté d’entrée (comportement legacy, mode0), ou toujours depuistoken_0(1), ou toujours depuistoken_1(2). Utile quand l’un des côtés de la paire est le jeton comptable canonique (par exemple, USDC). Voir Fees → Single-sided fee. - Dynamic fee. Les pools peuvent activer un surcoût de frais de suivi de la volatilité qui augmente avec les mouvements de tick rapides et décroît au fil du temps. Calibré par un
DynamicFeeConfigpar tier et unDynamicFeeInfopar pool. Voir Fees → Dynamic fee et Math → Dynamic fee derivation.
CreateCustomizablePool, expose tous les trois paramètres au moment de la création du pool. L’instruction classique CreatePool continue à fonctionner pour les pools avec frais par défaut, sans limit orders ni frais dynamiques.
Ce que CLMM vous apporte
- Efficacité du capital. Un LP stablecoin-stablecoin concentrant la liquidité dans une bande ±0,1 % autour de la parité peut gagner 100× ou plus de 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, non par LP-mint. Deux positions sur le même pool gagnent des montants de frais différents selon leurs plages et le chemin qu’a pris le prix.
- Plusieurs tiers de frais par paire. Une paire peut avoir plusieurs pools CLMM, chacun lié à un
AmmConfigdifférent avec son propre taux de frais de trading et son espacement de tick. L’interface web et les routers affichent le tier ayant le plus de liquidité au prix actuel. - Incitations directes sur le pool. Jusqu’à trois flux de jetons de récompense peuvent être attachés à un pool ; les positions collectent les récompenses au prorata en fonction des secondes × liquidité in-range qu’elles apportent. Voir
products/clmm/fees. - Positions en NFT. Chaque position est un jeton non-fongible avec un mint égal à un PDA déterministe. Transférer le NFT transfère la position ; les portefeuilles et UI peuvent afficher les positions de la même manière qu’ils affichent les objets de collection.
- Support de Token-2022 des deux côtés de la paire, avec les mêmes restrictions d’extension que CPMM.
Ce que CLMM n’est pas
- Pas du type « définir et oublier ». Une plage définie quand SOL est à 160 $ ne générera aucun revenu si SOL baisse à 80 $, à moins que vous ne la réajustiez activement. CLMM récompense les LP actifs ; les LP passifs devraient rester sur CPMM.
- Pas sans frais d’ouverture. Chaque nouvelle tick-array que franchit la position doit être initialisée, ce qui coûte du rent. Les plages larges sont moins chères ; les étroites ne le sont pas.
- Pas un CLOB. Contrairement à AMM v4, CLMM n’a aucune dépendance OpenBook. Toute la liquidité est sur la carte de ticks.
- Pas un sur-ensemble de CPMM. Une position CLMM couvrant
[tick_min, tick_max]à plage maximale se comporte de façon similaire à CPMM, mais avec des coûts de gas différents, un modèle de comptabilité des frais différent, et aucun jeton LP fongible. Si vous voulez un pool LP fongible simple, utilisez CPMM.
Comment CLMM diffère de CPMM et AMM v4
| Dimension | AMM v4 | CPMM | CLMM |
|---|---|---|---|
| Courbe | Produit constant | Produit constant | Concentré (basé sur les ticks) |
| Part LP | Mint LP fongible | Mint LP fongible | NFT par position |
| La liquidité se trouve… | Sur tous les prix | Sur tous les prix | Dans une plage choisie par l’utilisateur |
| Tiers de frais | Fixe 0,25 % | Par AmmConfig (p. ex. 0,25 %, 1 %) | Par AmmConfig × espacement de tick |
| Gestion active | Non applicable | Non applicable | Obligatoire |
| Comptabilité des frais | Au niveau du pool | Au niveau du pool | Par position |
| Farms de récompenses | Programme Farm séparé | Programme Farm séparé | Intégré (jusqu’à 3 récompenses) |
| Token-2022 | Non | Oui | Oui |
| Oracle on-chain | Non | Ring observation | Tableau observation par pool |
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é parsqrt_price_x64, un nombre à virgule fixe Q64.64. Les swaps parcourent cette courbe ; à l’intérieur d’une limite de tick, les mathématiques sont celles d’un AMM à liquidité concentrée standard (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 font référence à leurs points d’extrémité comme des indices de tick entiers. Les indices de tick sont regroupés en tick arrays de taille fixe pour le stockage. - Comptabilité des frais et récompenses par position. Chaque position stocke le global
fee_growth_insideau moment de sa dernière mise à jour. Quand le LP touche la position (ouverture, fermeture, ajustement, collecte), le programme soustrait la valeur stockée du global actuel pour calculer ce qui est dû. C’est le motif Uniswap v3feeGrowthInside0X128 / feeGrowthInside1X128.
- Ouvrir une position : choisir une plage de ticks, déposer des jetons, émettre un NFT, insérer la liquidité dans la carte de ticks au sein de la plage, initialiser 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 ticks ; collecter les frais accumulés en même temps.
- Swap : parcourir depuis le
sqrt_price_x64actuel dans la direction du trade, en consommant la liquidité active jusqu’à ce que l’entrée soit épuisée ou que le prochain tick initialisé soit atteint ; franchir le tick et prendre ou laisser tomber 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 CLMM
Choisissez 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 farm séparée.
- Vous avez besoin d’une comptabilité par position pour votre propre produit LP (vault, produit structuré, etc.).
- Vous lancez un nouveau jeton avec une découverte de prix inconnue.
- Vous voulez un seul jeton LP fongible que vous pouvez staker, locker ou composer avec.
- Vous voulez une expérience LP passive.
- Vous avez spécifiquement besoin de la profondeur hybrid-CLOB qu’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 fourniture 1.
- Un compte d’état de position personnelle keyed au mint NFT, tenant les ticks de la position, la liquidité, et les dernières valeurs de croissance des frais observées.
products/clmm/ticks-and-positions.
Les versions plus anciennes de 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 l’utilisent plus — le champ apparaît toujours sur les listes de comptes OpenPosition / IncreaseLiquidity / DecreaseLiquidity comme UncheckedAccount pour la compatibilité ABI, mais le programme ne le lit ni ne l’écrit. La comptabilité de plage agrégée réside sur les endpoints de tick (liquidity_gross, liquidity_net) directement.Où aller ensuite
- Accounts — les layouts des comptes pool, config, tick-array et position.
- Ticks and positions — la carte de ticks, l’espacement de ticks, le dimensionnement des tick-arrays, les positions basées sur NFT.
- Math —
sqrt_price_x64, walk-through de swap, dérivation defee_growth_inside. - Instructions —
OpenPosition,IncreaseLiquidity,Swap,CollectRewards, la famille des limit-orders, etCreateCustomizablePool. - Fees and rewards — le modèle de frais par position, les modes de frais unilatéraux, les frais dynamiques, et les trois slots de récompense.
- Code demos — walkthroughs ouverture / ajustement / swap / collecte / limit-order / customizable-pool en TypeScript.
- Raydium CLMM source —
raydium-io/raydium-clmm - Uniswap v3 whitepaper (« Uniswap v3 Core ») pour les mathématiques que CLMM hérite directement
reference/program-addressespour les IDs de programme canoniques


