Free

Pozwól Claude'owi przeczytać pulę Uniswap V3 w 5 minut

Pole liquidity puli Uniswap V3 to ani pieniądze, ani głębokość swapa. Niech Claude przeprowadzi cię przez każde łatwe do błędnego odczytu pole.


Każdy, kto dotyka DeFi, prędzej czy później wgapia się w dane puli Uniswap V3. A w tej kratce liczb na stronie puli jest co najmniej jedno pole, które prawie wszyscy źle odczytują za pierwszym razem —— odczyt na tyle błędny, że można uwierzyć, że pula warta 100 milionów dolarów ma 3,2 tryliona dolarów „płynności" w środku.

Ten wpis czyta pulę od początku do końca w pięć minut, używając smarts MCP plus Claude. Prawdziwe dane, pula USDC/WETH 0.05% na mainnecie.

Wyciągnąć cały stan puli jednym zdaniem

Po podłączeniu smarts MCP Claude woła get_uniswap_v3_pool ze slugiem univ3-usdc-weth-eth i dostaje to:

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

Same dane są proste. Sęk w tym, że w każdym polu czai się pułapka. Po kolei.

token0 i token1 nie są ułożone tak, jak podpowiada intuicja biznesowa

Ludzie zakładają, że w puli USDC/WETH USDC jest „walutą główną", a WETH „aktywem wycenianym". Błąd. Uniswap V3 układa token0 i token1 ściśle według wartości liczbowej adresów. Adres USDC 0xa0b8... jest mniejszy od adresu WETH 0xc02a..., więc token0 = USDC, token1 = WETH.

Ta kolejność rządzi każdym wewnętrznym obliczeniem: w którą stronę wskazuje cena, w którą stronę idą ticki, w czym wyrażona jest płynność. Przejdź do innej puli, np. WETH/DAI, a role token0/token1 mogą się odwrócić —— każdą intuicję typu „ETH idzie w górę czy w dół?" trzeba przeliczyć od nowa.

Jeden z plusów, gdy pulę czyta Claude: zwraca cenę z etykietami w obu kierunkach, więc nie trzeba w głowie wymyślać, „która strona ticka to który token".

fee 0.05% to znak puli „pary stabilnej"

Cztery typowe poziomy opłat w Uniswap V3 to 0.01% / 0.05% / 0.30% / 1.00%.

  • 0.01%: stablecoin do stablecoina (USDC/USDT)
  • 0.05%: silnie skorelowane aktywa (USDC/WETH i podobne —— głębokie, mało zmienne pary)
  • 0.30%: zwykłe pary
  • 1.00%: long-tail, wysoka zmienność

To, że USDC/WETH używa 0.05% zamiast 0.30%, mówi: animatorzy obstawiają wolumen, nie tłuste opłaty od transakcji, bo zmienność jest ograniczona, a przepływ ogromny.

Wiedząc to, w chwili gdy widzisz nową pulę z fee 1%, możesz zgadnąć: albo nowy token, albo nikogo nie obchodzi ta para.

price wynika prosto z bieżącego ticka —— nie ma „ostatniej ceny transakcji"

Stan puli V3 nie ma osobnego pola „ostatnia cena transakcji". Bieżąca cena to to, co mówi slot0.sqrtPriceX96, a tick to jej logarytmiczne wyrażenie. Innymi słowy: dopóki nikt nie handluje, cena po prostu wisi w miejscu, to zupełnie inny model niż „ostatnie wykonanie" na CEX.

(Do cen historycznych używa się wbudowanego oracle V3 —— stan puli przechowuje tablicę akumulatorów observation, z której można wyprowadzić TWAP. To osobny mechanizm.)

Odczytane przez nas 1 WETH = 2310.34 USDC to „bieżące notowanie" puli; następny swap startuje od tej ceny i pcha ją wzdłuż krzywej do nowego ticka.

tick to dyskretna współrzędna ceny w skali log

tick: 198868 to liczba, która za pierwszym razem dezorientuje wszystkich. Wygląda jak jakaś cena, ale to nie dolary.

V3 dyskretyzuje cenę logarytmicznie: raw_price = 1.0001^tick, gdzie raw_price to wei tokena1 podzielone przez wei tokena0 —— a nie cena wyświetlana. Aby zamienić to w „1 ETH w USDC", trzeba jeszcze pomnożyć przez 10^(decimals_token0 - decimals_token1). Po tej korekcie tick 198868 odpowiada w przybliżeniu 1 ETH ≈ 2310 USDC.

Po co cały ten obejście? Bo gdy cena jest logarytmiczna, animatorzy mogą umieścić płynność tylko w określonym przedziale cenowym —— np. „tylko między 2200 a 2400". Dyskretne ticki to etykiety tych przedziałów. To znak rozpoznawczy V3 wobec V2: skoncentrowana płynność.

W praktyce nie trzeba liczyć ticków. Wystarczy wiedzieć: większy tick nie oznacza koniecznie wyższej ceny (zależy od tego, kto jest tokenem0), a krok jednego ticka to zmiana ceny o 0.01%.

Pole liquidity: najłatwiej je odczytać błędnie

Oto wielka pułapka: liquidity: 3243712254364037809.

19 cyfr, wygląda jak wei. Ale to nie pieniądze.

To „płynność wirtualna" L z matematyki Uniswap V3 —— wewnętrzny parametr wyrażający nachylenie krzywej animowania rynku w przedziale sqrt-price. Jego jednostki to nie USD i nie da się go porównać z faktycznymi zasobami puli.

Odpowiedź narzędzia ostrzega wprost przez liquidity_note:

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

Czemu druga część? Bo kolejnym częstym błędem jest czytanie liquidity jako „ile mogę teraz wymienić bez poślizgu". Też nieprawda. Głębokość swap w V3 liczy się odcinkami: wewnątrz bieżącego przedziału ticków używasz tego L z formułą sqrt-price; gdy swap przesunie cenę poza granicę ticka, przechodzisz do następnego przedziału i przełączasz na jego L. Każda przekroczona granica zmienia L, aż do końca transakcji. Więc „ile można wymienić bez poślizgu" zależy od tego, ile L leży w każdym przedziale wzdłuż drogi —— pojedyncza liczba ze slot0 nic o tym nie mówi.

Zapamiętaj: nie porównuj pola liquidity z USD i nie używaj go do porównywania „głębokości" między pulami —— to jest mylące.

TVL: ile pieniędzy faktycznie jest w puli

tvl_usd: 100,645,897.62. To są prawdziwe pieniądze puli.

Skąd ta liczba? To rzeczywiste saldo kontraktu w USDC plus rzeczywiste saldo w WETH, każde pomnożone przez bieżącą cenę w USD z DefiLlama, zsumowane.

W porównaniu z polem liquidity:

Pole Wartość Znaczenie
liquidity 3.24 × 10¹⁸ wewnętrzny parametr matematyczny V3, bez jednostki
tvl_usd $100,645,897 realne pieniądze utrzymywane przez pulę

W mowie potocznej oba tłumaczy się jako „płynność", ale to różne rzeczy. Do opowieści patrz na TVL, do matematyki na liquidity, nigdy nie mieszaj.

block_number: patrzysz na migawkę bloku

Ostatni szczegół: block_number: 24959248.

Dane on-chain zawsze przychodzą z numerem bloku. Każde pole, które wyciągnął Claude, zostało odczytane w tym samym bloku. Daje to dwie konsekwencje:

  1. Cena, płynność i TVL są ze sobą spójne (bez dryfu typu „cena sprzed 5 minut, TVL teraz")
  2. Sekundę później mogą już być inne

Dla logiki monitoringu lub arbitrażu jest to kluczowa własność —— jedno odczytanie daje spójny obraz świata i nie trzeba bać się rozjazdów czasowych między polami.

Wykorzystanie w praktyce

Gdy to wszystko zrozumiesz, skrzynka z narzędziami się otwiera:

  • Sprawdzenie zdrowia puli: wyciągnij rzeczywiste salda token0/token1 (nie pole liquidity) i sprawdź, czy matematycznie zgadzają się z TVL. Wysokie salda przy cenie odległej od wartości godziwej mogą wskazywać przestrzeń do arbitrażu.
  • Porównanie między poziomami opłat: USDC/WETH ma pule zarówno przy 0.05%, jak i 0.30%; ich ceny zwykle idą blisko siebie —— większy spread to sygnał arbitrażu.
  • Porównanie między łańcuchami: porównaj USDC/WETH w mainneckie Ethereum z USDC/WETH na Base —— spread mówi o koszcie mostu i płynności.
  • Monitoring ticków: śledź ruchy ticków, by wykryć „cena właśnie przekroczyła granicę".

Wszystko to wcześniej wymagało zainstalowania web3.py, napisania skryptu, utrzymywania ABI, wynajęcia RPC. Teraz to wszystko na poziomie rozmowy z Claude + MCP —— pytasz, on czyta.

Do odczytania puli matematyka nie jest konieczna

Model matematyczny V3 ma swój mur wejściowy. sqrtPriceX96, ticki, L, skoncentrowana płynność —— te pojęcia odstraszyły wielu. Ale w praktyce 90% potrzeb sprowadza się do „czy ta pula jest zdrowa, czy ma pieniądze, jaka jest cena?" —— bez wzorów.

Niech Claude będzie twoim tłumaczem V3, zamieniającym wirtualną płynność i kodowanie ticków w proste „1 ETH = 2310 USDC, pula ma 100 mln dolarów". Decyzje stąd dalej należą do ciebie.