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.
Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Resumo em um parágrafo
CLMM — Concentrated Liquidity Market Maker — é o AMM estilo Uniswap-v3 do Raydium. Em vez de espalhar o depósito de um provedor de liquidez por toda a curva de preço, o CLMM permite que LPs depositem em um intervalo de preço específico. Dentro desse intervalo, cada dólar depositado é muitas vezes mais produtivo do que seria em um pool CPMM; fora do intervalo, o depósito não gera rendimento e fica como um saldo de um único lado. O programa rastreia liquidez por tick (um bucket de preço discretizado), precifica o estado do pool pela raiz quadrada do preço codificado como um número de ponto fixo Q64.64 (sqrt_price_x64), e cria um NFT para cada posição de LP em vez de um token LP fungível.
Novidades
O lançamento mais recente do CLMM adiciona três funcionalidades ao núcleo estilo Uniswap-v3. Elas são opcionais no momento da criação do pool e compatíveis com versões anteriores com pools e posições existentes:- Limit orders. Os LPs agora podem definir uma ordem de um único tick em um preço específico e ter o caminho de swap preenchê-la FIFO quando o swap cruza esse tick. As ordens são liquidadas na ATA do proprietário ao preço limite; um guardião fora da cadeia (
limit_order_admin) pode coletar ordens preenchidas sem o proprietário estar online. Veja Instructions → OpenLimitOrder / SettleLimitOrder e Math → Limit-order matching during swap. - Taxa de um único lado (
CollectFeeOn). Os pools podem ser configurados para cobrar taxas de swap do lado de entrada (comportamento legado, modo0), ou sempre detoken_0(1), ou sempre detoken_1(2). Útil quando um lado do par é o token de contabilidade canônico (por exemplo, USDC). Veja Fees → Single-sided fee. - Taxa dinâmica. Os pools podem optar por uma sobretaxa de taxa que rastreia volatilidade e sobe com o movimento rápido de ticks, decaindo ao longo do tempo. Calibrada por um
DynamicFeeConfigpor tier e umDynamicFeeInfopor pool. Veja Fees → Dynamic fee e Math → Dynamic fee derivation.
CreateCustomizablePool, expõe todos os três controles no momento da criação do pool. A instrução clássica CreatePool continua funcionando para pools com taxa padrão, sem limit orders ou taxas dinâmicas.
O que o CLMM oferece
- Eficiência de capital. Um LP stablecoin-stablecoin concentrando liquidez em uma faixa de ±0,1% ao redor da paridade pode gerar 100×+ as taxas por dólar de TVL comparado a um pool CPMM do mesmo par.
- Contabilidade de taxas por posição. As taxas acumulam por posição, não por mint de LP. Duas posições no mesmo pool ganham quantidades diferentes de taxa com base em seus intervalos e no caminho que o preço percorreu.
- Múltiplos tiers de taxa por par. Um par pode ter vários pools CLMM, cada um vinculado a um
AmmConfigdiferente com sua própria taxa de negociação e espaçamento de ticks. A UI e os roteadores exibem qualquer tier que tenha mais liquidez ao preço atual. - Incentivável diretamente no pool. Até três fluxos de token de recompensa podem ser anexados a um pool; posições coletam recompensas pro-rata com base nos segundos × liquidez em intervalo que contribuem. Veja
products/clmm/fees. - Posições em NFT. Cada posição é um token não fungível com mint igual a um PDA determinístico. Transferir o NFT transfere a posição; carteiras e UIs podem exibir posições da mesma forma que exibem colecionáveis.
- Suporte a Token-2022 em ambos os lados do par, com as mesmas restrições de extensão que CPMM.
O que o CLMM não é
- Não é configure-e-esqueça. Um intervalo definido quando SOL está em $160 não renderá nada se SOL se mover para $80, a menos que você o ajuste ativamente. O CLMM recompensa LPs ativos; LPs passivos devem ficar com o CPMM.
- Não é gratuito de abrir. Cada novo tick-array que a posição cruza deve ser inicializado, custando aluguel. Intervalos amplos são mais baratos; intervalos estreitos não são.
- Não é um CLOB. Diferentemente do AMM v4, o CLMM não tem dependência do OpenBook. Toda a liquidez fica no mapa de ticks.
- Não é um superconjunto do CPMM. Uma posição CLMM abrangendo
[tick_min, tick_max]em intervalo máximo se comporta similarmente ao CPMM, mas com custos de gás diferentes, um modelo de contabilidade de taxa diferente e nenhum token LP fungível. Se você quiser um pool LP fungível simples, use CPMM.
Como o CLMM difere do CPMM e AMM v4
| Dimensão | AMM v4 | CPMM | CLMM |
|---|---|---|---|
| Curva | Produto constante | Produto constante | Concentrada (baseada em tick) |
| Compartilha de LP | Mint LP fungível | Mint LP fungível | NFT por posição |
| Liquidez fica… | Em todos os preços | Em todos os preços | Em um intervalo escolhido pelo usuário |
| Tiers de taxa | Fixo 0,25% | Por AmmConfig (ex., 0,25%, 1%) | Por AmmConfig × espaçamento de tick |
| Gerenciamento ativo | Não aplicável | Não aplicável | Obrigatório |
| Contabilidade de taxa | Nível de pool | Nível de pool | Por posição |
| Farms de recompensa | Programa Farm separado | Programa Farm separado | Integrado (até 3 recompensas) |
| Token-2022 | Não | Sim | Sim |
| Oracle on-chain | Não | Anel de observation | Array de observation por pool |
Modelo mental
Pense em um pool CLMM como três estruturas de dados sobrepostas:- Uma curva contínua no espaço
sqrt_price. O preço do pool é representado comosqrt_price_x64, um ponto fixo Q64.64. Os swaps caminham ao longo dessa curva; dentro de um limite de tick, a matemática é a matemática padrão de AMM de liquidez concentrada (vejaalgorithms/clmm-math). - Um mapa de tick discreto. Os preços são quantizados em ticks — potências inteiras de
1.0001. Cada tick tem umsqrt_priceconhecido. As posições fazem referência a seus pontos finais como índices de tick inteiros. Os índices de tick são agrupados em arrays de tick de tamanho fixo para armazenamento. - Contabilidade de taxa e recompensa por posição. Cada posição armazena o
fee_growth_insideglobal no momento de sua última atualização. Quando o LP toca a posição (abrir, fechar, ajustar, coletar), o programa subtrai o valor armazenado do global atual para calcular o que é devido. Este é o padrãofeeGrowthInside0X128 / feeGrowthInside1X128do Uniswap-v3.
- Abrir posição: escolha o intervalo de tick, deposite tokens, crie NFT, insira liquidez no mapa de tick dentro do intervalo, inicialize qualquer array de tick previamente vazio.
- Aumentar / diminuir liquidez: ajuste o valor armazenado na conta de posição associada ao NFT e no mapa de tick; colete taxas acumuladas ao mesmo tempo.
- Swap: caminhe do
sqrt_price_x64atual na direção da negociação, consumindo liquidez ativa até que a entrada seja esgotada ou o próximo tick inicializado seja alcançado; cruze o tick e pegue ou solte liquidez no novo lado. - Coletar taxas / recompensas: calcule
fee_growth_inside_now − fee_growth_inside_last×position_liquiditypara cada lado e cada fluxo de recompensa; transfira para fora.
liquidity.
Quando escolher CLMM
Escolha CLMM quando:- Você está fornecendo liquidez para um par estável ou que reverte à média (USDC/USDT, jitoSOL/SOL, wBTC/BTC) e quer se concentrar perto da paridade.
- Você é um criador de mercado disposto a monitorar o preço e rebalancear.
- Você especificamente precisa de emissões de incentivo por pool sem configurar uma farm separada.
- Você precisa de contabilidade por posição para seu próprio produto de LP (vault, produto estruturado, etc.).
- Você está lançando um novo token com descoberta de preço desconhecida.
- Você quer um único token LP fungível que possa fazer stake, travar ou compor com.
- Você quer uma experiência de LP passiva.
- Você especificamente precisa da profundidade AMM híbrida-CLOB que o AMM v4 coloca no OpenBook.
- Você está migrando integrações existentes do AMM v4 e não está abrindo novas posições.
Posições são NFTs
Uma posição CLMM é representada on-chain por duas contas:- Um mint de NFT de posição com suprimento 1.
- Uma conta de estado de posição pessoal chaveada ao mint de NFT, contendo os ticks, liquidez e últimos valores de crescimento de taxa observados da posição.
products/clmm/ticks-and-positions.
Lançamentos CLMM mais antigos também criavam uma conta
ProtocolPositionState por (pool, tick_lower, tick_upper) para agregar liquidez para esse intervalo. Lançamentos mais novos não a criam nem usam mais — o campo ainda aparece nas listas de contas OpenPosition / IncreaseLiquidity / DecreaseLiquidity como um UncheckedAccount para compatibilidade com ABI, mas o programa não a lê nem escreve. A contabilidade de intervalo agregado fica nos pontos finais de tick (liquidity_gross, liquidity_net) diretamente.Próximos passos
- Accounts — os layouts de contas de pool, config, tick-array e posição.
- Ticks and positions — o mapa de ticks, espaçamento de ticks, tamanho de tick-array, posições baseadas em NFT.
- Math —
sqrt_price_x64, passo a passo de swap, derivação defee_growth_inside. - Instructions —
OpenPosition,IncreaseLiquidity,Swap,CollectRewards, a família de limit-order, eCreateCustomizablePool. - Fees and rewards — o modelo de taxa por posição, modos de taxa de um único lado, taxa dinâmica, e os três slots de recompensa.
- Code demos — walkthroughs de abrir / ajustar / swap / coletar / limit-order / customizable-pool em TypeScript.
- Raydium CLMM source —
raydium-io/raydium-clmm - Uniswap v3 whitepaper (“Uniswap v3 Core”) para a matemática que o CLMM herda diretamente
reference/program-addressespara IDs de programa canônicos


