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.
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.
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".
Os quatro fee tiers comuns na Uniswap V3 são 0.01% / 0.05% / 0.30% / 1.00%.
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.
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: 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%.
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_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.
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:
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.
Uma vez entendido tudo isso, a caixa de ferramentas se abre:
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ê.
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.