[pt-br] Forks do UniswapV2 e AMMs de produto constante

No ecossistema DeFi, os Automated Market Makers (AMMs) representam uma inovação fundamental ao eliminar intermediários e order books tradicionais. Entre eles, o Uniswap V2 se consolidou como um dos principais protocolos, servindo de base para inúmeros forks. A chave da eficiência e robustez do Uniswap V2 é o “Constant Product Market Maker” (CPMM), cuja premissa central é manter o produto das reservas de dois tokens, X e Y, constante.

Este invariável matemático não é um mero capricho: ele garante que, após qualquer swap, a liquidez total não seja reduzida, assegurando a proteção dos liquidity providers (LPs) e a integridade econômica do sistema. Neste artigo, exploraremos a arquitetura do Uniswap V2, a matemática por trás do invariante K, as implicações de taxas, a interação com arbitragem, oráculos e MEV, e mostraremos, através do caso Uranium Finance, o quão desastroso pode ser mexer indevidamente nas engrenagens matemáticas do protocolo.


Constant K: O Invariante que Molda o Preço e Mantém a Integridade

Em um AMM de produto constante, cada pool contém dois tokens, por exemplo Token X e Token Y. A fórmula fundamental é K = X * Y.

Este produto K deve permanecer constante (ou não diminuir) antes e depois do swap. Na prática, o Uniswap V2 aplica uma taxa de 0,3% sobre o montante de entrada, resultando em um fator de ajuste (por exemplo, multiplicador 1000 e taxa de 3, equivalendo a 0,3%). Sem taxa, teríamos (X + ΔX) * (Y - ΔY) = K.

Com a taxa, a quantidade efetiva de ΔX que entra no pool após o desconto é menor, garantindo que K' (o novo produto após o swap) seja no mínimo igual ou maior que K. Isso beneficia os LPs, pois o valor total do pool aumenta a cada trade.

Este mecanismo assegura o equilíbrio interno: se o preço do par diverge do preço de mercado, arbitradores intervêm para restaurar o equilíbrio. Desta forma, o AMM funciona como um sistema autônomo de descoberta de preços, sem a necessidade de ordens limit típicas de order books.


A Arquitetura do Uniswap V2: Simplicidade no Núcleo, Flexibilidade na Periferia

O Uniswap V2 segue um padrão arquitetural “core/periphery”:

  • UniswapV2Factory: Cria novos pares (pools) para qualquer combinação de tokens.
  • UniswapV2Pair: Cada par é um contrato separado que mantém dois tokens e permite swaps, fornecimento e remoção de liquidez. O próprio par é um ERC-20 representando a participação dos LPs.
  • Router (Periphery): Facilita interações complexas, como trades entre múltiplas pools em uma só transação.

Essa separação reduz a possibilidade de bugs no core, que mantém apenas a lógica essencial. É um design minimalista mas poderoso. O Uniswap V2 também tem custo de gás relativamente baixo em comparação a um order book on-chain, já que o contrato só mantém dois saldos e segue a regra K = X * Y.


AMMs, Descoberta de Preço e Oráculos

O preço marginal de um token no AMM é determinado pela razão entre as quantidades do par. Se X é abundante, seu preço relativo a Y cai, incentivando trades que restauram o equilíbrio. Assim, o AMM também atua como oráculo de preço. Porém, esse oráculo é suscetível a manipulações de curto prazo, especialmente via flash loans. Por isso, protocolos que usam o Uniswap V2 como oráculo costumam aplicar técnicas como o TWAP (Time-Weighted Average Price).


Slippage, MEV e Sandwich Attacks

Diferente de um order book, mesmo pequenas ordens em um AMM deslocam o preço, gerando slippage. Esse comportamento, em que qualquer trade altera a razão X/Y, abre espaço para ataques MEV (Maximal Extractable Value).

  • Sandwich attacks: Um invasor insere uma compra antes da ordem da vítima, aumentando o preço, e logo após a vítima comprar mais caro, o invasor vende, obtendo lucro. É um efeito colateral inevitável em AMMs, pois qualquer transação move o preço.

Liquidity Providers: Impermanent Loss e Restrições

Os LPs fornecem liquidez adicionando quantidades proporcionais de X e Y. O invariante K = X * Y exige essa proporção. Não é possível estabelecer preços específicos de venda ou compra; o LP “segue o mercado”. Isso resulta em impermanent loss (IL) quando um token aprecia ou deprecia. Embora o K aumente ao longo do tempo, o LP pode ter lucrado mais apenas hodlando os ativos separadamente, sem prover liquidez.


O Caso Uranium Finance: Quando Parâmetros Mal Ajustados Quebram o K

O Uniswap V2 original usa fatores cuidadosamente escolhidos (ex: 1000 e 3) para aplicar a taxa de 0,3%. Já na Uranium Finance, um fork do Uniswap V2 na BNB Chain, trocaram-se os multiplicadores para 10000 e 16, mas o require final do invariante K permaneceu usando 1000^2.

Isso criou um descompasso: as contas ajustadas eram baseadas em 10000, mas a checagem final ainda usava 1000. Esse erro permitiu que o contrato aceitasse swaps impossíveis, drenando quantidades absurdas de um dos tokens sem quebrar, do ponto de vista do código, o invariante K. O resultado? Mais de US$ 50 milhões foram perdidos em um dos ataques mais devastadores da época.


A Matemática por Trás dos CFMMs

K = X * Y é um caso específico de Constant Function Market Makers (CFMMs). Pesquisas acadêmicas mostram que essas funções sustentam a eficiência de capital e a robustez econômica dos AMMs. Pequenos erros, como o do Uranium Finance, abrem oportunidades de arbitragem infinita ou criação de valor do nada, destruindo o equilíbrio do sistema.


Boas Práticas: Auditorias, Testes e Entendimento Profundo

Como evitar problemas semelhantes ao Uranium Finance?

  1. Compreensão Profunda: Entender por que 1000 e 3 foram escolhidos e como a taxa afeta o K.
  2. Auditorias e Verificação Formal: Empresas especializadas, ferramentas como Certora ou Echidna, e testes com fuzzing (Foundry) podem detectar falhas.
  3. Testes Extensos: Simular cenários extremos, alterando taxas e testando valores mínimos e máximos.
  4. Estudo de Casos Reais (Post-Mortems): Analisar exploits famosos ajuda a não repetir erros passados.

Conclusão:

O Uniswap V2 e seus forks mostram como a matemática simples do K = X * Y criou um ecossistema DeFi vibrante. Porém, o caso Uranium Finance alerta: mexer nesses “magic numbers” sem coerência em todo o código é brincar com a força gravitacional que mantém o AMM estável.

No fim, segurança em AMMs não é apenas código impecável, mas também raciocínio econômico sólido. O K não é um detalhe supérfluo; é o coração que bombeia o equilíbrio do AMM. Alterar sem cuidado é acender um pavio que pode custar milhões.

Em suma, o Constant K não é só uma fórmula — é a alma do AMM. E alterá-la sem precaução é arriscar tudo, em um mercado onde a matemática é lei.

Subscribe to HellHex

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe