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.
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.
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".
Cztery typowe poziomy opłat w Uniswap V3 to 0.01% / 0.05% / 0.30% / 1.00%.
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.
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: 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%.
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_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.
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:
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.
Gdy to wszystko zrozumiesz, skrzynka z narzędziami się otwiera:
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.
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.