Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
TL;DR para integradores
- Limit orders agora são primitivos CLMM de primeira classe. LPs podem abrir uma ordem de um único tick em um pool que as suporte; a ordem é preenchida FIFO quando um swap cruza o tick, e um keeper off-chain (
limit_order_admin) pode liquidar a saída preenchida sem o proprietário estar online. Sete novos métodos SDK (openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,closeLimitOrder,closeAllLimitOrder,settleAllLimitOrder) e três novos endpoints da Temp API sob/limit-order/(ordens ativas, histórico por usuário, log de eventos por PDA) cobrem o fluxo completo. - Taxa unilateral (
CollectFeeOn) permite que um pool coleta taxas de swap do lado de entrada (legado, modo0), ou sempre detoken_0(modo1), ou sempre detoken_1(modo2). Útil quando um lado do par é o token de contabilidade canônico. - Taxa dinâmica permite que um pool opte por uma sobretaxa rastreadora de volatilidade que aumenta com movimento rápido de tick e decai ao longo do tempo, calibrada por uma
DynamicFeeConfigpor tier e umaDynamicFeeInfopor pool. O novo endpoint/main/clmm-dynamic-configexpõe a lista de tiers. - Uma nova instrução,
CreateCustomizablePool, expõe todos os três controles no momento da criação do pool. OCreatePoolclássico continua funcionando para pools padrão sem limit orders. - Mudança de quebra do indexador: os contadores de volume por direção (
swap_in_amount_token_{0,1},swap_out_amount_token_{0,1}) e contadores de taxa vitalícia (total_fees_token_{0,1},total_fees_claimed_token_{0,1}) emPoolStateforam aposentados em padding para abrir espaço parafee_onedynamic_fee_info. Indexadores que leem esses campos diretamente devem migrar para o ringObservationon-chain ou para a API.
Por que isso importa (para traders, LPs e integradores)
- Traders obtêm cotações mais apertadas em pares long-tail e orientados por eventos: taxa dinâmica permite que o pool absorva sobrecargas de volatilidade do taker sem LPs terem que ampliar ativamente os ranges, e escadas de limit orders aprofundam a liquidez on-chain em preços específicos sem comprometer capital em toda a faixa.
- LPs obtêm uma terceira estratégia ao lado de ranges concentrados e posições full-range: estacione ordens de preço exato, seja preenchido quando o preço visita, liquide no token de cotação. Nenhum rebalanceamento ativo necessário para a porção preenchida.
- Integradores podem modelar pools com taxa dinâmica deterministicamente — o algoritmo e parâmetros estão totalmente on-chain, os tiers de calibração são consultáveis, e o caminho de swap é inalterado em forma (apenas a taxa por etapa varia).
O que mudou no programa
Novas contas
DynamicFeeConfig— registro de calibração por tier (período de filtro, período de decaimento, fator de redução, controle de taxa dinâmica, acumulador máximo de volatilidade). Criado porCreateDynamicFeeConfig(admin), referenciado porCreateCustomizablePoolquando taxa dinâmica está habilitada.LimitOrderState— conta por ordem (seeds PDA:[owner, limit_order_nonce, order_nonce]) contendo o pool, tick, lado, quantidade de entrada, razão não preenchida, fase de cohort FIFO e snapshots de contabilidade. O ciclo de vida é implícito (filled_amountvstotal_amount, mais existência da conta):Open → Filled → Settled → Closed.LimitOrderNonce— contador monotonicamente crescente por (proprietário, nonce_index) que obtém as seeds PDA de limit order. Ononce_index: u8permite que o mesmo proprietário particione ordens em até 256 fluxos de nonce independentes.
Reestruturação de PoolState
| Grupo de campo | Layout antigo | Novo layout |
|---|---|---|
| Contadores de volume por direção | swap_in_amount_token_0, swap_out_amount_token_0, swap_in_amount_token_1, swap_out_amount_token_1 | Incorporados em padding5: [u128; 4] |
| Contadores de taxa vitalícia | total_fees_token_0, total_fees_claimed_token_0, total_fees_token_1, total_fees_claimed_token_1 | Incorporados em padding6: [u64; 4] |
| Taxa unilateral | — | fee_on: u8 (0 = FromInput, 1 = Token0Only, 2 = Token1Only) |
| Taxa dinâmica | — | dynamic_fee_info: DynamicFeeInfo (incorporado) |
PoolState para o ring Observation ou para a API. Os contadores aposentados não são zerados em pools existentes (eles contêm o que quer que tenham carregado por último), então relê-los após a atualização retornará dados obsoletos.
Adições de TickState (sem mudança de quebra)
Quatro novos campos são adicionados no final de TickState, substituindo parte de seu padding final:
order_phase: u64— contador que desambigua cohorts de limit order neste tick.orders_amount: u64— entrada total comprometida por todas as ordens abertas neste tick (nem todas totalmente não preenchidas).part_filled_orders_remaining: u64— entrada ainda não preenchida no cohort sendo consumido por swaps.unfilled_ratio_x64: u128— razão Q64.64 usada para calcular a parcela de preenchimento de cada ordem.
Novas instruções
CreateDynamicFeeConfig(admin) — criar um tierDynamicFeeConfigcalibrado. Autoridade: mesmo multisig de tesouro queCreateAmmConfig.UpdateDynamicFeeConfig(admin) — atualizar parâmetros de um tier existente.CreateCustomizablePool— ponto de entrada de criação de pool que expõecollect_fee_on,enable_dynamic_feeedynamic_fee_config. Coexiste comCreatePool; recomendamosCreateCustomizablePoolpara qualquer novo pool que necessite dos novos controles.OpenLimitOrder— abrir uma limit order de um único tick. IncrementaLimitOrderNonce, alocaLimitOrderState, insere a ordem no cohort FIFO no tick.IncreaseLimitOrder/DecreaseLimitOrder— ajustar a porção não preenchida de uma ordem. Reverte em uma ordem totalmente preenchida comInvalidOrderPhase.SettleLimitOrder— varrer saída preenchida para o ATA do proprietário. O chamador pode ser o proprietário ou o keeperlimit_order_admindo pool.CloseLimitOrder— fechar uma ordem totalmente liquidada para recuperar aluguel.
Mudanças de comportamento de SwapV2
O caminho de swap em si é inalterado em forma, mas três coisas agora acontecem ao longo do caminho:
- Taxa dinâmica (quando habilitada): a
DynamicFeeInfodo pool é atualizada a cada etapa (decaimento → acumulação → limite), e a sobretaxa resultante é adicionada à taxa base para essa etapa. - Correspondência de limit order (quando a etapa cruza um tick inicializado que tem ordens abertas): parte da entrada de swap é consumida FIFO para preencher o cohort naquele tick, com
unfilled_ratio_x64atualizado atomicamente. - Roteamento de taxa unilateral (quando
fee_on != 0): a taxa é retirada detoken_0outoken_1independentemente da direção do swap, em vez de sempre do lado de entrada.
Novos códigos de erro
O enumErrorCode foi renumerado neste lançamento: cinco variantes legadas (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) foram removidas, e onze novas variantes foram anexadas. Como Anchor numera erros por ordem de enum a partir de 6000, cada código de erro nas posições removidas ou depois delas foi deslocado — clientes que codificaram numericamente códigos precisam remapear.
Os novos códigos são:
6040OrderAlreadyFilled6041InvalidOrderPhase6042InvalidLimitOrderAmount6043OrderPhaseSaturated6044InvalidDynamicFeeConfigParams6045InvalidFeeOn6046ZeroSqrtPrice6047ZeroLiquidity6048MissingBaseFlag6049MissingMintAccount6050MissingTokenProgram2022
O que mudou no SDK (@raydium-io/raydium-sdk-v2)
- Novos métodos em
raydium.clmm:createCustomizablePool,openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,settleAllLimitOrder,closeLimitOrder,closeAllLimitOrder. - Novos helpers REST em
raydium.api:getClmmDynamicConfigs,getClmmLimitOrderConfigs. - Novos tipos: enum
CollectFeeOn,DynamicFeeConfig,DynamicFeeInfo,LimitOrderState,LimitOrderConfig. - Reorganização interna:
utils/movido paralibraries/. O barrel do pacote é inalterado; apenas importações profundas sob@raydium-io/raydium-sdk-v2/utils/...precisam ser atualizadas para…/libraries/....
products/clmm/code-demos.
O que mudou nas APIs
api-v3— dois novos endpoints sob/main/:GET /main/clmm-dynamic-config— lista de tiersDynamicFeeConfig.GET /main/clmm-limit-order-config— configuração de limit order por pool.
temp-api-v1— três novos endpoints sob/limit-order/:GET /limit-order/order/list?wallet=…— ordens atualmente estacionadas de uma carteira (abertas e parcialmente preenchidas, servidas do cache Redis do indexador; mesmo payload cobre ambas as fases viatotalAmount/filledAmount/pendingSettle).GET /limit-order/history/order/list-by-user?wallet=…— limit orders históricas de uma carteira. Filtros opcionais:poolId,mint1,mint2,hideCancel. Paginação por cursor vianextPageId/size(máx 100).GET /limit-order/history/event/list-by-pda?pda=…— log de eventos por PDA (open/increase/decrease/settle/close) para um ou mais PDAs de limit order separados por vírgula. Paginação por cursor vianextPageId/size(máx 100).
Superfície de autoridade
Olimit_order_admin é um keeper operacional off-chain, não um multisig. Ele pode apenas chamar SettleLimitOrder e CloseLimitOrder em ordens existentes, e a saída de uma liquidação sempre vai para o ATA do proprietário. Ele não pode mutar campos de pool, abrir ou modificar ordens, ou assinar qualquer outra coisa. Veja Admin keys and multisig → CLMM.
Páginas atualizadas
products/clmm/overview— nova seção “What’s new” e ponteiros de próximas etapas atualizados.products/clmm/accounts— três novas contas, reestruturação dePoolStatecom aviso de migração, adições deTickState, novos helpers PDA.products/clmm/instructions— sete novas instruções, adendo de comportamento deSwapV2, matriz de mudança de estado atualizada.products/clmm/fees— seção de taxa unilateral, seção de taxa dinâmica com tabela de parâmetros.products/clmm/math— pseudo-código de correspondência de limit order, derivação de taxa dinâmica.products/clmm/code-demos— demo decreateCustomizablePool, passo a passo completo de limit order, novas armadilhas.algorithms/clmm-math— referência cruzada para correspondência de limit order e taxa dinâmica no loop de swap multi-tick.sdk-api/typescript-sdk— seção de adições do módulo CLMM, nota de migraçãoutils/→libraries/.api-reference/openapi/api-v3.yaml— dois novos endpoints com esquemas de resposta.api-reference/openapi/temp-api-v1.yaml— três novos endpoints de limit order (/limit-order/order/list,/limit-order/history/order/list-by-user,/limit-order/history/event/list-by-pda) com seus esquemas de requisição e resposta.api-reference/api-v3/overview— nota sobre os novos endpoints de configuração CLMM.api-reference/temp-api-v1/overview— nota sobre os novos endpoints de ordens ativas, histórico por usuário e eventos por PDA.reference/error-codes— onze novos códigos de erro CLMM (6040–6050) mais cinco códigos legados removidos; códigos numéricos após os pontos de remoção foram deslocados.security/admin-and-multisig— nova linha de adminDynamicFeeConfige linha de keeperlimit_order_admin, com explicador de autoridade limitada.
- fonte de
raydium-clmm. - fonte de
@raydium-io/raydium-sdk-v2. - fonte de
api-v3etemp-api-v1.

