Free

Lascia che Claude legga una pool Uniswap V3 in 5 minuti

Il campo liquidity di una pool Uniswap V3 non è né denaro né profondità di swap. Lascia che Claude ti spieghi ogni campo facile da fraintendere.


Chi tocca DeFi prima o poi finisce a guardare i dati di una pool Uniswap V3. E in quella griglia di numeri sulla pagina della pool, c'è almeno un campo che quasi tutti leggono male la prima volta —— una lettura sbagliata abbastanza grande da farti credere che una pool da 100 milioni di dollari abbia 3,2 trilioni di "liquidità" dentro.

Questo articolo legge una pool dall'inizio alla fine in cinque minuti, usando smarts MCP più Claude. Dati veri, la pool USDC/WETH 0.05% sulla mainnet.

Tirar fuori l'intero stato della pool in una frase

Una volta connesso smarts MCP, Claude chiama get_uniswap_v3_pool con lo slug univ3-usdc-weth-eth e si ritrova questo:

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

I dati in sé sono semplici. Il punto è che ogni campo ha la sua trappola. Andiamo uno per uno.

token0 e token1 non sono ordinati come ti aspetti

Si presume che in una pool USDC/WETH USDC sia la "valuta principale" e WETH "l'asset prezzato". Sbagliato. Uniswap V3 ordina token0 e token1 strettamente per il valore numerico dei loro indirizzi. L'indirizzo USDC 0xa0b8... è inferiore a quello WETH 0xc02a..., quindi token0 = USDC, token1 = WETH.

Quest'ordine governa ogni calcolo interno: in che direzione punta il prezzo, in che direzione si muovono i tick, in che unità è espressa la liquidità. Cambia pool, ad esempio WETH/DAI, e i ruoli di token0/token1 possono ribaltarsi —— ogni intuizione su "ETH sale o scende" va ricalcolata.

Uno dei vantaggi di lasciare leggere la pool a Claude: ti restituisce il prezzo etichettato in entrambe le direzioni, così non devi capire a mente "che lato del tick è quale token".

fee 0.05% indica una pool di "coppia stabile"

I quattro fee tier comuni in Uniswap V3 sono 0.01% / 0.05% / 0.30% / 1.00%.

  • 0.01%: stablecoin contro stablecoin (USDC/USDT)
  • 0.05%: asset altamente correlati (USDC/WETH e simili —— coppie profonde, a bassa volatilità)
  • 0.30%: coppie ordinarie
  • 1.00%: coppie long-tail, ad alta volatilità

Che USDC/WETH usi 0.05% invece di 0.30% dice: i market maker scommettono sul volume, non su fee grasse per trade, perché la volatilità è limitata e il flusso enorme.

Sapendo questo, vedendo una nuova pool al 1% di fee puoi indovinare: o è un token appena uscito o nessuno tiene a quella coppia.

price viene direttamente dal tick corrente —— non esiste "ultimo prezzo eseguito"

Lo stato della pool V3 non ha un campo separato "ultimo prezzo eseguito". Il prezzo corrente è quello che dice slot0.sqrtPriceX96, e il tick è la sua espressione logaritmica. In altre parole: finché nessuno fa trading, il prezzo resta lì, un modello totalmente diverso dall'"ultima esecuzione" di una CEX.

(Per i prezzi storici si usa l'oracle integrato di V3 —— lo stato della pool contiene un array di accumulatori observation che permette di derivare un TWAP. È un meccanismo a parte.)

Il 1 WETH = 2310.34 USDC che abbiamo appena letto è la "quotazione attuale" della pool; il prossimo swap parte da quel prezzo e spinge il prezzo lungo la curva fino a un nuovo tick.

tick è una coordinata discreta del prezzo in scala log

tick: 198868 è il numero che la prima volta confonde tutti. Sembra un qualche tipo di prezzo, ma non sono dollari.

V3 discretizza il prezzo in modo logaritmico: raw_price = 1.0001^tick, dove raw_price è wei di token1 diviso wei di token0 —— non il prezzo di visualizzazione. Per trasformarlo in "1 ETH in USDC" bisogna ancora moltiplicare per 10^(decimals_token0 - decimals_token1). Dopo questo aggiustamento, il tick 198868 corrisponde a circa 1 ETH ≈ 2310 USDC.

Perché tutto questo giro? Perché una volta resa logaritmica la scala dei prezzi, i market maker possono mettere liquidità solo in un determinato range di prezzo —— ad esempio "solo tra 2200 e 2400". I tick discreti sono le etichette di quei range. È l'innovazione caratteristica di V3 rispetto a V2: liquidità concentrata.

In pratica non hai bisogno di calcolare i tick. Devi solo sapere: un tick più grande non significa necessariamente prezzo più alto (dipende da chi è il token0), e un passo di tick è una variazione di prezzo dello 0.01%.

Il campo liquidity: il più facile da leggere male

Ecco la grossa trappola: liquidity: 3243712254364037809.

19 cifre, sembra wei. Ma non sono soldi.

È la "liquidità virtuale" L della matematica di Uniswap V3 —— un parametro interno che esprime la pendenza della curva di market making in un range sqrt-price. Le sue unità non sono USD e non è confrontabile con i possedimenti reali della pool.

La risposta dello strumento avvisa esplicitamente con un liquidity_note:

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

Perché la seconda parte? Perché un altro errore comune è leggere liquidity come "quanto posso swappare adesso senza slippage". Anche sbagliato. La profondità di swap V3 si calcola a tratti: dentro il range di tick corrente usi questo L con la formula sqrt-price; non appena uno swap spinge il prezzo oltre un confine di tick, passi al range successivo e cambi al suo L. Ogni confine attraversato cambia un L nuovo, finché il trade è chiuso. Quindi "quanto si può swappare senza slippage" dipende da quanto L è posizionato in ogni range lungo il percorso —— un singolo numero da slot0 non te lo dice.

Da ricordare: non confrontare il campo liquidity con USD, e non usarlo per confrontare la "profondità" tra pool —— è fuorviante.

TVL: quanti soldi ci sono davvero nella pool

tvl_usd: 100,645,897.62. Questi sì che sono i soldi reali della pool.

Da dove esce il numero? È il saldo USDC effettivo del contratto più il saldo WETH effettivo, ciascuno moltiplicato per il prezzo USD corrente preso da DefiLlama, sommati.

Confrontato con il campo liquidity:

Campo Valore Significato
liquidity 3.24 × 10¹⁸ parametro interno matematica V3, senza unità
tvl_usd $100,645,897 denaro reale tenuto dalla pool

Entrambi vengono tradotti come "liquidità" nel parlato, ma sono cose diverse. Per raccontare la storia guarda il TVL, per fare matematica guarda liquidity, mai mescolare.

block_number: stai guardando uno snapshot

Ultimo dettaglio: block_number: 24959248.

I dati on-chain arrivano sempre con un numero di blocco. Ogni campo che Claude ha tirato è stato letto allo stesso blocco. Significa due cose:

  1. Prezzo, liquidità e TVL sono mutuamente coerenti (niente drift tipo "il prezzo è di 5 minuti fa, il TVL è attuale")
  2. Possono già essere diversi un secondo dopo

Per la logica di monitoraggio o arbitraggio è la proprietà decisiva —— un'unica lettura ti dà una visione coerente del mondo, senza dover temere disallineamenti temporali tra campi.

Metterlo a frutto

Capito tutto questo, la cassetta degli attrezzi si apre:

  • Controllo di salute della pool: tira i saldi reali di token0/token1 (non il campo liquidity) e verifica che tornino matematicamente con il TVL. Saldi grossi ma prezzo lontano dal valore equo? Possibile spazio di arbitraggio.
  • Confronto tra fee tier: USDC/WETH ha pool sia a 0.05% sia a 0.30%; i prezzi di solito viaggiano molto vicini —— uno spread più largo è segnale di arbitraggio.
  • Confronto cross-chain: confronta USDC/WETH su Ethereum mainnet con USDC/WETH su Base —— lo spread parla di costo del bridge e liquidità.
  • Monitoraggio dei tick: traccia i movimenti di tick per rilevare "il prezzo ha appena attraversato un confine".

Tutto questo prima richiedeva installare web3.py, scrivere uno script, mantenere un ABI e affittare RPC. Ora è tutto a livello conversazionale con Claude + MCP —— tu chiedi, lui legge.

Non serve la matematica per leggere la pool

Il modello matematico di V3 ha un suo muro. sqrtPriceX96, tick, L, liquidità concentrata —— questi concetti hanno respinto parecchia gente. Ma in pratica il 90% di ciò che ti serve è "questa pool è in salute, ha soldi, qual è il prezzo?" —— senza formule.

Lascia che Claude faccia da tuo traduttore V3, trasformando liquidità virtuale e codifica dei tick in un semplice "1 ETH = 2310 USDC, la pool ha 100M$ dentro". Le decisioni, da lì in poi, sono tue.