Free

Leia uma pool da Uniswap V3 em 5 minutos — deixe o Claude fazer

O campo liquidity de uma pool da Uniswap V3 não é dinheiro nem profundidade de swap. Deixe o Claude explicar cada campo fácil de ler errado.


Quem mexe com DeFi acaba olhando dados de pools da Uniswap V3 mais cedo ou mais tarde. E naquela grade de números na página da pool, tem pelo menos um campo que quase todo mundo lê errado da primeira vez —— um erro de leitura grande o suficiente para te fazer achar que uma pool de 100 milhões de dólares tem 3,2 quintilhões de dólares de "liquidez" lá dentro.

Este post lê uma pool de ponta a ponta em cinco minutos, usando o smarts MCP junto com o Claude. Dados reais, a pool USDC/WETH 0.05% na mainnet.

Puxar o estado inteiro da pool em uma frase

Com o smarts MCP conectado, o Claude chama get_uniswap_v3_pool com o slug univ3-usdc-weth-eth e recebe isto:

protocol: Uniswap V3
pair: USDC/WETH
fee: 0.05%
price:
  1 WETH in USDC: 2310.3381
  1 USDC in WETH: 0.00043283
tick: 198868
liquidity: 3243712254364037809
liquidity_note: Uniswap V3 sqrt-formula virtual liquidity
                at the current tick. Not a USD amount and
                not the depth available to swap.
tvl_usd: 100,645,897.62
tokens:
  token0: USDC (decimals 6)
  token1: WETH (decimals 18)
block_number: 24959248

Os dados em si são simples. O ponto é que cada campo tem uma armadilha. Um por um.

token0 e token1 não vêm ordenados como você esperaria

As pessoas presumem que numa pool USDC/WETH o USDC é a "moeda principal" e o WETH é "o ativo precificado". Errado. A Uniswap V3 ordena token0 e token1 estritamente pelo valor numérico dos endereços. O endereço do USDC 0xa0b8... é menor que o do WETH 0xc02a..., então token0 = USDC, token1 = WETH.

Essa ordenação determina todos os cálculos internos: para que lado o preço aponta, para que lado os ticks se movem, em que unidade a liquidez é denominada. Troca para outra pool, digamos WETH/DAI, e os papéis de token0/token1 podem inverter —— toda intuição sobre "o ETH está subindo ou caindo" precisa ser refeita.

Uma das vantagens de deixar o Claude ler a pool: ele já te entrega o preço rotulado nas duas direções, então você não precisa descobrir de cabeça "que lado do tick é qual token".

fee 0.05% significa que é uma pool de "par estável"

Os quatro fee tiers comuns na Uniswap V3 são 0.01% / 0.05% / 0.30% / 1.00%.

  • 0.01%: stablecoin contra stablecoin (USDC/USDT)
  • 0.05%: ativos altamente correlacionados (USDC/WETH e semelhantes —— pares profundos, baixa volatilidade)
  • 0.30%: pares comuns
  • 1.00%: pares de cauda longa, alta volatilidade

USDC/WETH usar 0.05% em vez de 0.30% diz: market makers estão apostando em volume, não em fee gordo por trade, porque a volatilidade é limitada e o fluxo é enorme.

Sabendo disso, no momento em que você vê uma pool nova com fee de 1% já pode chutar: ou é um token recém-lançado ou ninguém se importa com o par.

price vem direto do tick atual —— não existe "último preço negociado"

O estado da pool V3 não tem um campo separado de "último preço negociado". O preço atual é o que slot0.sqrtPriceX96 diz, e o tick é a expressão logarítmica dele. Em outras palavras: enquanto ninguém negocia, o preço simplesmente fica lá, um modelo totalmente diferente do "última execução" de uma CEX.

(Para preços históricos, usa-se o oracle integrado da V3 —— o estado da pool guarda um array de acumuladores de observation que permite derivar um TWAP. É um mecanismo separado.)

O 1 WETH = 2310.34 USDC que acabamos de ler é a "cotação atual" da pool; o próximo swap parte desse preço e empurra a curva até um novo tick.

tick é uma coordenada discreta do preço em log

tick: 198868 é o número que confunde todo mundo na primeira vez. Parece que deveria ser algum tipo de preço, mas não é dólar.

A V3 discretiza o preço de forma logarítmica: raw_price = 1.0001^tick, onde raw_price é wei do token1 dividido por wei do token0 —— não o preço de exibição. Para virar "1 ETH em USDC" ainda é preciso multiplicar por 10^(decimals_token0 - decimals_token1). Depois desse ajuste, o tick 198868 corresponde a aproximadamente 1 ETH ≈ 2310 USDC.

Por que essa enrolação? Porque ao tornar o preço logarítmico, os market makers podem colocar liquidez somente em uma faixa específica de preço —— por exemplo "só entre 2200 e 2400". Os ticks discretos são os rótulos dessas faixas. Essa é a inovação característica da V3 sobre a V2: liquidez concentrada.

Na prática você não precisa calcular ticks. Só precisa saber: um tick maior não significa preço maior (depende de qual token é o token0), e um passo de tick equivale a uma mudança de preço de 0.01%.

O campo liquidity: o mais fácil de ler errado

Aqui está a armadilha grande: liquidity: 3243712254364037809.

Tem 19 dígitos, parece wei. Mas não é dinheiro.

É a "liquidez virtual" L da matemática da Uniswap V3 —— um parâmetro interno que expressa a inclinação da curva de market making em uma faixa de sqrt-price. As unidades dele não são USD e ele não é comparável com o que a pool realmente possui.

A resposta da ferramenta inclusive avisa com um liquidity_note:

Uniswap V3 sqrt-formula virtual liquidity at the current tick. Not a USD amount and not the depth available to swap.

Por que a segunda parte? Porque outro erro comum é ler liquidity como "quanto eu posso trocar agora sem slippage". Também errado. A profundidade de swap na V3 é calculada por trechos: dentro da faixa de tick atual, você usa este valor de L com a fórmula sqrt-price; assim que um swap empurra o preço para fora de um limite de tick, você cruza para a próxima faixa e troca para o L dela. Cada limite cruzado troca um L novo, até a operação terminar. Então "quanto você consegue trocar sem slippage" depende de quanto L está em cada faixa ao longo do caminho —— um único número do slot0 não te diz nada.

A lição: não compare o campo liquidity com USD nem use para comparar "profundidade" entre pools —— isso induz a erro.

TVL: quanto dinheiro está realmente na pool

tvl_usd: 100,645,897.62. Isto sim é o dinheiro real da pool.

De onde vem esse número? É o saldo real de USDC do contrato somado ao saldo real de WETH, cada um multiplicado pelo preço atual em USD vindo da DefiLlama, somados.

Comparado ao campo liquidity:

Campo Valor Significado
liquidity 3.24 × 10¹⁸ parâmetro matemático interno V3, sem unidade
tvl_usd $100,645,897 dinheiro real mantido pela pool

Ambos são traduzidos como "liquidez" no linguajar casual, mas são coisas diferentes. Para contar a história, olhe TVL; para fazer matemática, olhe liquidity. Nunca misture.

block_number: você está olhando um snapshot

Um último detalhe: block_number: 24959248.

Dados on-chain sempre vêm com número de bloco. Cada campo que o Claude puxou foi lido no mesmo bloco. Isso significa duas coisas:

  1. Preço, liquidez e TVL são mutuamente consistentes (sem aquela deriva tipo "o preço é de 5 minutos atrás, o TVL é de agora")
  2. Eles podem já estar diferentes um segundo depois

Para lógica de monitoramento ou arbitragem essa consistência é a propriedade-chave —— uma puxada te dá uma visão coerente do mundo, sem precisar se preocupar com desencontros temporais entre campos.

Pondo em prática

Uma vez entendido tudo isso, a caixa de ferramentas se abre:

  • Checagem de saúde da pool: puxe os saldos reais de token0/token1 (não o campo liquidity) e veja se batem matematicamente com o TVL. Saldos altos com preço longe do valor justo podem indicar espaço de arbitragem.
  • Comparação entre fee tiers: USDC/WETH tem pools tanto a 0.05% quanto a 0.30%; os preços costumam andar muito juntos —— um spread maior é sinal de arbitragem.
  • Comparação entre cadeias: compare USDC/WETH na Ethereum mainnet com USDC/WETH na Base —— o spread fala do custo da bridge e da liquidez.
  • Monitoramento de tick: acompanhe movimentos de tick para detectar "o preço acabou de cruzar um limite".

Tudo isso antes exigia instalar web3.py, escrever um script, manter um ABI e alugar RPC. Agora é tudo no nível de conversa com Claude + MCP —— você pergunta, ele lê.

Você não precisa da matemática para ler a pool

O modelo matemático da V3 tem um muro. sqrtPriceX96, ticks, L, liquidez concentrada —— esses conceitos espantam muita gente. Mas na prática 90% do que você precisa é "essa pool está saudável, tem dinheiro, qual é o preço?" —— sem fórmula.

Deixa o Claude ser seu tradutor de V3, transformando liquidez virtual e codificação de ticks num simples "1 ETH = 2310 USDC, a pool tem 100M$ dentro". As decisões, daí em diante, são suas.