TVL DeFi-протокола: настройка мониторинга и алерты

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

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1451
  • 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 день — свяжитесь с нами.