[pt-br] Forks do UniswapV2 e AMMs de produto constante
![](https://www.hellhex.com/content/images/2024/12/uniswap-header-1.jpg)
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?
- Compreensão Profunda: Entender por que 1000 e 3 foram escolhidos e como a taxa afeta o
K
. - Auditorias e Verificação Formal: Empresas especializadas, ferramentas como Certora ou Echidna, e testes com fuzzing (Foundry) podem detectar falhas.
- Testes Extensos: Simular cenários extremos, alterando taxas e testando valores mínimos e máximos.
- 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.