Saltar para o conteúdo principal

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, modo 0), ou sempre de token_0 (1), ou sempre de token_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 DynamicFeeConfig por tier e um DynamicFeeInfo por pool. Veja Fees → Dynamic fee e Math → Dynamic fee derivation.
Uma nova instrução, 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 AmmConfig diferente 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ãoAMM v4CPMMCLMM
CurvaProduto constanteProduto constanteConcentrada (baseada em tick)
Compartilha de LPMint LP fungívelMint LP fungívelNFT por posição
Liquidez fica…Em todos os preçosEm todos os preçosEm um intervalo escolhido pelo usuário
Tiers de taxaFixo 0,25%Por AmmConfig (ex., 0,25%, 1%)Por AmmConfig × espaçamento de tick
Gerenciamento ativoNão aplicávelNão aplicávelObrigatório
Contabilidade de taxaNível de poolNível de poolPor posição
Farms de recompensaPrograma Farm separadoPrograma Farm separadoIntegrado (até 3 recompensas)
Token-2022NãoSimSim
Oracle on-chainNãoAnel de observationArray de observation por pool

Modelo mental

Pense em um pool CLMM como três estruturas de dados sobrepostas:
  1. Uma curva contínua no espaço sqrt_price. O preço do pool é representado como sqrt_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 (veja algorithms/clmm-math).
  2. Um mapa de tick discreto. Os preços são quantizados em ticks — potências inteiras de 1.0001. Cada tick tem um sqrt_price conhecido. 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.
  3. Contabilidade de taxa e recompensa por posição. Cada posição armazena o fee_growth_inside global 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ão feeGrowthInside0X128 / feeGrowthInside1X128 do Uniswap-v3.
Cada ação do usuário se decompõe em transições de estado nessas três estruturas:
  • 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_x64 atual 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_liquidity para cada lado e cada fluxo de recompensa; transfira para fora.
O pool é indiferente de outra forma sobre quais posições estão abertas. Dois LPs no mesmo intervalo veem o mesmo caminho de crescimento de taxa, escalado pelos seus valores individuais de 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.).
Prefira CPMM quando:
  • 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.
Prefira AMM v4 quando:
  • 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.
Transferir o NFT transfere a posição — a autoridade da conta de estado pessoal-posição é o proprietário do NFT. Este é o mesmo padrão que o Uniswap v3 pionerou, implementado no modelo de conta da Solana. Um tratamento detalhado está em 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.
  • Mathsqrt_price_x64, passo a passo de swap, derivação de fee_growth_inside.
  • InstructionsOpenPosition, IncreaseLiquidity, Swap, CollectRewards, a família de limit-order, e CreateCustomizablePool.
  • 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.
Fontes: