Мониторинг TVL (Total Value Locked)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Мониторинг TVL (Total Value Locked)
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1258
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    873
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1092
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    830

Мониторинг TVL (Total Value Locked)

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

Как правильно считать 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.

Архитектура системы мониторинга

On-chain vs off-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 минут для исторических данных.

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 минут).

Алерты при резких изменениях

Паттерн обнаружения аномалий:

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 мониторинг.

Интеграция с дашбордами

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.

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

Процесс работы

Аналитика (1 день). Инвентаризация контрактов протокола, типы принимаемых активов, события для отслеживания, требования к latency алертов.

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

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

Ориентиры по срокам

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

Стоимость зависит от количества контрактов, типов активов и требований к latency.