TVL DeFi-протоколу: налаштування моніторингу та алерти

TVL — операційний показник DeFi-протоколу, не маркетинговий. Ми стикалися із завданнями моніторингу для протоколів з TVL від $1M до $500M. Різке падіння на 30% за годину — або злом, або «rug» великого LP. Зростання на 500% за день без відповідного збільшення транзакцій — підозріла накрутка для лісти

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1011

TVL — операційний показник DeFi-протоколу, не маркетинговий. Ми стикалися із завданнями моніторингу для протоколів з TVL від $1M до $500M. Різке падіння на 30% за годину — або злом, або «rug» великого LP. Зростання на 500% за день без відповідного збільшення транзакцій — підозріла накрутка для лістингу на DeFiLlama. Обидва випадки потребують системи, яка бачить зміни в реальному часі та вміє їх інтерпретувати. Наш досвід 10+ років у DeFi та 50+ реалізованих проєктів гарантує точність і надійність. Залиште заявку на консультацію, щоб обговорити вашу архітектуру моніторингу. Chainlink Data Feeds

Як правильно рахувати TVL

Проблема мультивалютного обліку

Наївний підхід: підсумувати balanceOf всіх токенів у контрактах протоколу в USD за поточними цінами. Працює, доки немає наступних сценаріїв:

  • Протокол приймає LP-токени Uniswap V2 як collateral. balanceOf(LP_token) — кількість LP-токену, не USD. Потрібно обчислити underlying assets через getReserves() пулу.
  • Synthetic токени (sUSD, stETH): їх ціна ≠ ціні базового активу при депегу. Потрібен окремий price feed, не завжди доступний.
  • Concentrated liquidity позиції (Uniswap V3 NFT): вартість залежить від поточної ціни та діапазону позиції — потрібна off-chain математика tick/sqrtPrice.

Правильна архітектура: кожен тип активу — окремий адаптер з логікою resolveToUSD(address asset, uint256 amount) → uint256. Це паттерн, який використовує DeFiLlama у своїх adapters.

Chainlink vs AMM-ціни

Chainlink Data Feeds — еталон для основних активів (ETH, BTC, USDC, основні ERC-20). Heartbeat 1 година для стейблкоінів, 1 година для великих активів. Проблема: для long-tail токенів немає Chainlink feed.

Fallback: Uniswap V3 TWAP через IUniswapV3Pool.observe() з periodSecond = 1800 (30 хвилин). TWAP захищає від flash loan маніпуляцій, але при низькій ліквідності пулу — неточний.

Важно: Chainlink feed може повернути stale дані. Завжди перевіряти answeredInRound >= roundId та updatedAt > block.timestamp - staleness_threshold.

Чому off-chain розрахунок ефективніший за on-chain?

Рахувати TVL повністю on-chain через смарт-контракт getTVL() — привабливо для прозорості, але:

  • Дорого в gas при складних обчисленнях
  • Обмежено розміром call stack
  • LP-токени Uniswap потребують зовнішніх calls, що збільшує gas експоненційно

Кращий підхід: off-chain сервіс з доступом до архівної ноди. Алгоритм:

  1. Отримати баланси через eth_call батчами (Multicall3 для ефективності)
  2. Запитати ціни з Chainlink + DeFiLlama API + CoinGecko Pro
  3. Розрахувати TVL з нормалізацією по decimals
  4. Записати снапшот в базу даних з блок-номером та timestamp
  5. Видати в API та дашборд

Частота: кожен блок для критичних алертів (~12 сек на Ethereum), кожні 5 хвилин для історичних даних.

Off-chain сервіс в 10 разів швидший за Dune Analytics по latency і дає економію до 60% на інфраструктурних витратах. Наприклад, при TVL $100M економія може становити до $5,000 на місяць. Зв'яжіться з нами для точного розрахунку.

The Graph subgraph для TVL

The Graph дозволяє підписатися на події смарт-контрактів та агрегувати дані в GraphQL. Для TVL моніторингу subgraph обробляє події:

  • Deposit(address user, address asset, uint256 amount) — збільшення TVL
  • Withdraw(address user, address asset, uint256 amount) — зменшення
  • Liquidation(...) — зміна collateral

Проблема subgraph: ціни не зберігаються on-chain, потрібна oracle інтеграція через @priceOracle handler. Це уповільнює індексацію та додає залежність.

Альтернатива для швидкого деплою: Dune Analytics з SQL-запитами поверх indexed Ethereum даних. Працює без розробки, але latency вища (5-15 хвилин).

Як налаштувати алерти при різких змінах TVL?

Паттерн виявлення аномалій:

currentTVL < previousTVL * (1 - threshold) → CRITICAL alert currentTVL > previousTVL * (1 + spike_threshold) → WARNING (possible manipulation) 

Threshold для critical: 10% за один блок — явна аномалія. 30% за 5 хвилин — критичний інцидент.

Канали алертів: Telegram Bot API для оперативних оповіщень, PagerDuty для on-call ротації, Slack webhooks для командних нотифікацій. Для DeFi-протоколів з TVL > $1M — обов'язково 24/7 моніторинг.

Метод Latency Вартість (діапазон) Складність
Власний off-chain сервіс ~блок (12s) Висока (нода) Висока
The Graph subgraph 1-5 хв Середня (хостинг) Середня
Dune Analytics 5-15 хв Низька (SQL) Низька
DeFiLlama API 5-15 хв Нульова Низька
Деталі розрахунку TVL для LP-токенів

Для Uniswap V2 LP-токенів: отримати резерви пулу через getReserves(), потім частку LP-токену в пулі: (balanceOf(LP) / totalSupply) * (reserve0 * price0 + reserve1 * price1). Для Uniswap V3 NFT: використовується off-chain бібліотека, що розраховує вартість позиції на основі tick, sqrtPrice та діапазону.

Інтеграція з дашбордами

Grafana + InfluxDB — стандартний стек для часових рядів TVL. Метрики: tvl_total, tvl_by_asset, tvl_by_chain, tvl_change_1h, tvl_change_24h.

DeFiLlama adapter: якщо протокол хоче потрапити на DeFiLlama — потрібен PR з адаптером у їх репозиторій. Адаптер — це JavaScript функція tvl(api), яка використовує їх api.add(token, balance) інтерфейс. Ми пишемо та підтримуємо ці адаптери.

Custom дашборд: React + recharts або Dune Analytics embedded charts для public-facing сторінки протоколу. Дані через власний API endpoint або прямо з subgraph через Apollo Client.

Тип активу Адаптер Джерело цін
ERC-20 Прямий баланс Chainlink
LP-токени Uniswap V2 getReserves() + частка Chainlink / TWAP
Uniswap V3 NFT off-chain tick-математика TWAP

Що входить в роботу

  • Інвентаризація контрактів протоколу та типів активів
  • Розробка адаптерів для кожного типу активів
  • Вибір та налаштування стеку (off-chain сервіс, subgraph, Dune)
  • Налаштування алертів (Telegram, PagerDuty, Slack)
  • Створення дашбордів Grafana або custom React
  • Інтеграція з DeFiLlama (адаптер + PR)
  • Документація та навчання команди
  • Підтримка при додаванні нових пулів або міграціях

Процес роботи

Аналітика (1 день). Інвентаризація контрактів протоколу, типи активів, що приймаються, події для відстеження, вимоги до latency алертів.

Розробка (1-3 дні). Вибір стеку виходячи з вимог → імплементація → налаштування алертів → деплой дашборду.

Підтримка. При додаванні нових пулів або активів — оновлення адаптерів. При форку мережі або міграції контрактів — оновлення адрес.

Орієнтири за термінами

Базовий моніторинг через The Graph + Telegram алерти — 1-2 дні. Повноцінна система з власним сервісом, Grafana дашбордом та DeFiLlama інтеграцією — 3-5 днів.

Вартість розраховується індивідуально і залежить від кількості контрактів, типів активів та вимог до latency. Отримайте консультацію та попередній розрахунок за 1 день — зв'яжіться з нами.