Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Dois conceitos distintos
Impacto de preço e slippage são frequentemente confundidos em interfaces, mas referem-se a coisas diferentes.-
Impacto de preço é uma propriedade determinística de uma negociação contra um estado específico do pool. Dado
(Δin, reserves), o impacto de preço é totalmente computável antes da negociação ser enviada. - Slippage é a diferença realizada entre o preço que você esperava no momento da cotação e o preço que você realmente obteve no momento da execução. É uma função de latência, transações concorrentes e ordem de inclusão de blocos — não da matemática do pool.
Definições formais
Impacto de preço
impact ≈ 2 · Δin / reserve_in para negociações pequenas. Para CLMM: depende de quantos ticks a negociação cruza; frequentemente plano dentro do intervalo de tick atual, saltando em cada cruzamento de tick.
Slippage realizado
Dimensionando minAmountOut e maxAmountIn
Cada swap do Raydium leva um limite de proteção contra slippage:
SwapBaseInput(amount_in, min_amount_out)— entrada exata, limite inferior da saída.SwapBaseOutput(max_amount_in, amount_out)— saída exata, limite superior da entrada.
minAmountOut é amountOut × (1 − slippage) e é o que vai on-chain como limite; priceImpact é determinístico apenas do estado do pool; fee é o total cobrado.
A tolerância de slippage é um buffer em torno do impacto de preço, não o impacto de preço em si. Uma tolerância de 0,5% significa “aceitar no máximo 0,5% pior que minha cotação” — independentemente de o impacto de preço ter sido 0,01% (uma negociação minúscula) ou 2% (uma negociação grande). Para uma negociação com impacto de preço de 2% com tolerância de 0,5%, minAmountOut é 2,5% abaixo do spot pré-negociação — essencialmente a soma do impacto e tolerância.
Tolerâncias de slippage recomendadas
Não há um número único correto; o limite correto depende de:- Estabilidade do par. Pools stablecoin-stablecoin podem usar com segurança 0,1%. Pools de pares meme voláteis frequentemente precisam de 3–5% apenas para pousar com confiabilidade.
- Tamanho da negociação. Negociações maiores têm impactos de preço maiores, então a tolerância precisa escalar com eles para evitar reversão. Os padrões de auto-slippage do SDK são em torno de
max(0.5%, 2 × price_impact)por essa razão. - Latência de inclusão de bloco. Transações que ficam no mempool por vários blocos são expostas a mais negociações concorrentes. Bundles Jito e taxas de prioridade reduzem isso.
Diferenças entre tipos de AMM
CPMM
O impacto de preço é suave e contínuo (forma fechada2 · Δin / reserve_in). A tolerância de slippage escala linearmente com o tamanho da negociação.
AMM v4
Mesma matemática de curva que CPMM. Desde a remoção do OpenBook, as “reservas efetivas” são apenas os dois saldos de vault:- Cotação fora dos saldos de vault brutos. Não há componente on-book para adicionar —
Initialize2escreveAmmInfo.open_orders = Pubkey::default()em cada novo pool, e nenhuma instrução lê uma contaOpenOrders. - Subtraia o PnL de protocolo acumulado (
state_data.need_take_pnl_coin/need_take_pnl_pc) dos saldos de vault para obter as reservas que o invariante realmente usa. - Não há crank para pré-executar:
MonitorStepagora entra em pânico comunimplemented!e não deve ser enviado.
CLMM
O impacto de preço é por partes. Dentro do intervalo de tick atual, o impacto é aproximadamente linear emΔin / L. Cruzar um limite de tick pode mudar L discretamente, causando um salto repentino no preço marginal. Uma negociação que cruza vários ticks pouco populados pode ter muito mais impacto do que a regra prática 2 · Δin / reserve sugere.
A cotação CLMM do SDK itera o passo de swap deterministicamente para retornar um amountOut esperado exato, então minAmountOut = amountOut · (1 − slippage) está correto. Mas o valor de retorno priceImpact deve ser interpretado como “o spread entre spot pré-negociação e spot pós-negociação”, que em CLMM pode ser muito maior que o slippage efetivo da negociação para um usuário que se importa apenas com amount_out.
Curva LaunchLab
Semelhante a CPMM, mas com uma curva assimétrica (quadrática ou virtual-reserves). O impacto cresce mais rápido para compradores tardios conforme a curva se inclina em direção à graduação. Interfaces pré-comprador devem avisar quando uma compra deve empurrar a curva mais de ~5% dequote_reserve_target em uma transação.
Considerações de MEV
Em Solana, a extração de MEV contra swaps principalmente assume a forma de ataques sanduíche: um bot coloca uma transação back-run que negocia depois da sua, mais um front-run que negocia antes, ambos no mesmo slot. Sua negociação é preenchida a um preço pior do que teria sido sem o sanduíche; o back-run captura a diferença. Mitigações:minAmountOutapertado. Limites de slippage agressivos fazem a transação da vítima reverter se sanduichada pesadamente, protegendo fundos (mas desperdiçando gás). Em Solana, essa é prática padrão — rejeição é barata.- Bundles Jito. Enviar através do Jito com uma dica agrupada exclui intermediários de reordenar sua tx. Bundles pousam como blocos atômicos.
- Taxas de prioridade. Uma taxa de prioridade alta aumenta a chance de sua negociação pousar no bloco do líder atual antes de um sanduichador reagir. Menos robusto que bundles, mais padrão.
- RPC privado. Enviar através de um RPC privado (ou via endpoint direto de um validador) reduz a janela durante a qual um sanduichador de mempool pode observar sua transação.
integration-guides/routing-and-mev para padrões.
Slippage para rotas multi-hop
Quando um swap roteia através de múltiplos pools (por exemplo,USDC → SOL → RAY), a tolerância de slippage deve ser aplicada por-hop, não apenas end-to-end:
raydium.tradeV2.swap. (A fachada é tradeV2 — raydium.trade não existe.) Para roteadores customizados, replique o padrão.
Relatando para usuários
Regras práticas para uma boa interface de swap:- Exiba ambos impacto de preço esperado e tolerância de slippage separadamente.
- Destaque quando o impacto de preço excede ~2% — aviso de “impacto alto”.
- Destaque quando o impacto de preço excede tolerância — a transação quase certamente reverterá.
- Para pares voláteis, ofereça um “modo de slippage alto” que relaxa o limite e mostra um aviso mais forte.
Referências
products/cpmm/math,products/amm-v4/math,products/clmm/math— derivações de impacto por tipo de pool.integration-guides/routing-and-mev— roteamento multi-hop + defesas de MEV.integration-guides/priority-fee-tuning— dimensionando taxas de prioridade para reduzir slippage.
- Implementação de slippage / impacto do SDK Raydium v2.
- Flashbots / Jito em MEV Solana.

