Поле liquidity пулу Uniswap V3 — це ні гроші, ні глибина свопу. Хай Claude розбере кожне поле, яке легко прочитати неправильно.
Кожен, хто торкається DeFi, рано чи пізно починає вдивлятися в дані пулів Uniswap V3. І в тій сітці чисел на сторінці пулу є щонайменше одне поле, яке майже всі першого разу читають неправильно —— настільки неправильно, що можна повірити, ніби в пулі на 100 мільйонів доларів лежить 3,2 квінтильйона доларів «ліквідності».
Ця стаття читає пул від початку до кінця за п'ять хвилин, використовуючи smarts MCP разом із Claude. Реальні дані, пул USDC/WETH 0.05% на мейннеті.
Коли smarts MCP підключений, Claude викликає get_uniswap_v3_pool зі слагом univ3-usdc-weth-eth і отримує таке:
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
Самі по собі дані прості. Суть у тому, що в кожному полі є пастка. Розберемо по черзі.
Багато хто думає, що в пулі USDC/WETH USDC — це «основна валюта», а WETH — «оцінюваний актив». Не так. Uniswap V3 строго впорядковує token0 і token1 за числовим значенням адрес. Адреса USDC 0xa0b8... менша за адресу WETH 0xc02a..., тому token0 = USDC, token1 = WETH.
Цей порядок керує всіма внутрішніми розрахунками: куди вказує ціна, в який бік рухаються тіки, в чому виражається ліквідність. Перейдіть до іншого пулу, скажімо WETH/DAI, і ролі token0/token1 можуть помінятися —— будь-яку інтуїцію щодо «ETH росте чи падає?» доведеться перерахувати.
Один із плюсів того, що пул читає Claude: він одразу повертає ціну з мітками для обох напрямів, тож не доводиться в голові з'ясовувати, «який бік тіка — який токен».
Чотири поширених рівні комісії в Uniswap V3 — 0.01% / 0.05% / 0.30% / 1.00%.
Те, що USDC/WETH використовує 0.05%, а не 0.30%, говорить: маркетмейкери ставлять на обіг, а не на жирні комісії за угоду, бо волатильність обмежена, а потік величезний.
Знаючи це, побачивши новий пул із комісією 1%, можна здогадатися: або це свіжий токен, або парою ніхто не цікавиться.
У стані пулу V3 немає окремого поля «остання ціна угоди». Поточна ціна — це те, що каже slot0.sqrtPriceX96, а тік — її логарифмічне вираження. Інакше кажучи: поки ніхто не торгує, ціна просто стоїть там, модель цілком відмінна від «останнього виконання» на CEX.
(Для історичних цін використовується вбудований oracle V3 —— у стані пулу зберігається масив акумуляторів observation, з яких можна вивести TWAP. Це окремий механізм.)
Прочитані нами 1 WETH = 2310.34 USDC — це «поточне котирування» пулу; наступний swap починається з цієї ціни і штовхає її вздовж кривої до нового тіка.
tick: 198868 — число, яке першого разу збиває з пантелику всіх. На відчуття це якась ціна, але не долари.
V3 дискретизує ціну логарифмічно: raw_price = 1.0001^tick, де raw_price — це wei токена1, поділені на wei токена0 —— не відображувана ціна. Щоб перетворити це на «1 ETH в USDC», ще треба помножити на 10^(decimals_token0 - decimals_token1). Після цього коригування tick 198868 справді відповідає 1 ETH ≈ 2310 USDC.
Навіщо така заплутана схема? Тому що коли ціна логарифмічна, маркетмейкери можуть розміщувати ліквідність лише в певному ціновому діапазоні —— наприклад, «лише між 2200 та 2400». Дискретні тіки і є мітками цих діапазонів. Це фірмова новація V3 порівняно з V2: концентрована ліквідність.
На практиці тіки рахувати не треба. Достатньо знати: більший тік не обов'язково означає вищу ціну (залежить від того, хто token0), і крок в один тік — це зміна ціни на 0.01%.
Ось велика пастка: liquidity: 3243712254364037809.
19 цифр, виглядає як wei. Але це не гроші.
Це «віртуальна ліквідність» L з математики Uniswap V3 —— внутрішній параметр, що виражає нахил кривої маркетмейкінгу в діапазоні sqrt-price. Одиниці його не USD, і його не можна порівнювати з реальними активами пулу.
Відповідь інструмента прямо попереджає через liquidity_note:
Uniswap V3 sqrt-formula virtual liquidity at the current tick. Not a USD amount and not the depth available to swap.
Чому друга половина? Тому що ще одна часта помилка — читати liquidity як «скільки я можу обміняти зараз без прослизання». Теж неправильно. Глибина swap у V3 рахується по шматках: усередині поточного діапазону тіків використовується цей L і формула sqrt-price; щойно swap виводить ціну за межу тіка, переходимо в наступний діапазон і перемикаємося на його L. Кожна перейдена межа міняє L, поки угода не закінчиться. Тому «скільки можна обміняти без прослизання» залежить від того, скільки L укладено в кожному діапазоні на шляху —— одне число зі slot0 цього не каже.
Запам'ятати: не порівнюйте поле liquidity з USD і не використовуйте його для порівняння «глибини» між пулами —— це вводить в оману.
tvl_usd: 100,645,897.62. Ось це — реальні гроші пулу.
Звідки береться це число? Це фактичний баланс контракту в USDC плюс фактичний баланс у WETH, кожен помножений на поточну ціну в USD з DefiLlama, і додано.
Порівняно з полем liquidity:
| Поле | Значення | Сенс |
|---|---|---|
| liquidity | 3.24 × 10¹⁸ | внутрішній математичний параметр V3, без одиниць |
| tvl_usd | $100,645,897 | реальні гроші, утримувані пулом |
Обидва зазвичай перекладають як «ліквідність», але це різні речі. Для розповіді дивіться на TVL, для математики — на liquidity, ніколи не плутайте.
Остання деталь: block_number: 24959248.
Дані on-chain завжди йдуть з номером блока. Кожне поле, яке витяг Claude, прочитане в одному й тому ж блоці. Це означає два:
Для логіки моніторингу або арбітражу це ключова властивість —— одне читання дає узгоджений зріз світу, і не треба боятися розбіжності полів у часі.
Коли все це зрозумієш, інструментарій відкривається:
Раніше все це вимагало встановити web3.py, написати скрипт, підтримувати ABI, орендувати RPC. Тепер усе це на рівні бесіди з Claude + MCP —— ви питаєте, він читає.
У математичній моделі V3 є стіна. sqrtPriceX96, тіки, L, концентрована ліквідність —— ці поняття відлякали багатьох. Але на практиці 90% того, що потрібно, це «чи здоровий цей пул, чи є в ньому гроші, яка ціна?» —— без формул.
Зробіть Claude своїм перекладачем V3, що перетворює віртуальну ліквідність і кодування тіків на просте «1 ETH = 2310 USDC, у пулі 100 мільйонів доларів». Рішення далі — за вами.