Разработка Telegram-бота для мониторинга DeFi-позиций

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка Telegram-бота для мониторинга DeFi-позиций
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1062
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка Telegram-бота для мониторинга DeFi-позиций

Позиция в Aave: $80k USDC залог, $50k USDT долг. Health factor 1.21. Рынок падает ночью — через три часа health factor пересекает 1.0, позиция ликвидирована, штраф 10%. Пользователь просыпается, смотрит в кошелёк. Стандартный сценарий, который бот с правильно настроенными алертами предотвращает за 15 минут до ликвидации.

Технические сложности, которые закапываются в продакшне

Polling vs WebSocket: задержка имеет значение

Наивная реализация — cron каждую минуту опрашивает RPC. Для health factor это работает, но при волатильности блоки на Ethereum выходят каждые 12 секунд, а цена оракула Chainlink обновляется per heartbeat (1 час) или при отклонении >0.5%. Минутный polling пропускает резкие движения.

Правильный подход: подписка на события через eth_subscribe("logs") по WebSocket. Aave v3 эмитит LiquidationCall(address collateralAsset, address debtAsset, address user, ...). Ловим это событие — и немедленно уведомляем. Для мониторинга health factor слушаем ReserveDataUpdated и пересчитываем позицию локально, не дожидаясь следующего eth_call.

Проблема с WebSocket: соединение рвётся. В продакшне нужен reconnect с exponential backoff, persistent subscription ID и replay пропущенных блоков при восстановлении через eth_getLogs с fromBlock: lastProcessedBlock.

Мультичейн: разные адреса, разные ABI

Пользователь держит позиции в Aave v3 на Ethereum, Optimism и Polygon одновременно. Три инстанса с разными PoolAddressesProvider. APY на Polygon может отличаться от Ethereum вдвое — это информация, которую пользователь хочет видеть в одном месте.

Архитектура: отдельный воркер на каждый чейн, общая PostgreSQL с таблицей positions(user_address, chain_id, protocol, collateral, debt, health_factor, updated_at). Telegram-бот читает из базы, а не из чейна — это даёт быстрый ответ на команды и снижает нагрузку на RPC.

Расчёт APY: пул не стоит на месте

Compound APY в Aave = (1 + APR/secondsPerYear)^secondsPerYear - 1. APR берётся из getReserveData().currentLiquidityRate (для депозитов) или currentVariableBorrowRate (для долга) — оба в ray (1e27). Ошибка на каждом втором проекте: делить на 1e18 вместо 1e27. Получают APY в тысячи процентов, пользователи радуются, пока не видят реальные цифры.

Что строим

Стек

Слой Технология
Чейн-мониторинг viem (WebSocket transport), ethers.js fallback
Протоколы Aave v3 Pool ABI, Compound v3 Comet ABI
Оракулы Chainlink Price Feed (прямые вызовы + The Graph)
База данных PostgreSQL — позиции, алерты, история
Очередь BullMQ (Redis) — обработка уведомлений без пиков
Бот grammY (TypeScript) или python-telegram-bot
Деплой Docker + PM2, VPS с аптаймом 99.9%

Алерт-логика

Конфигурируемые пороги на пользователя: health factor < 1.3, health factor < 1.1 (критично), изменение APY >20% за 24 часа, появление новой ликвидации по адресу. Дедупликация через Redis с TTL: одно уведомление на событие, повтор через 30 минут если ситуация не изменилась.

Для health factor: не просто текущее значение, а тренд — бот показывает "снизился на 0.15 за последние 6 часов". Это actionable информация.

Команды бота

/positions — все открытые позиции с health factor и текущим APY. /alerts — управление порогами. /history [address] — история изменений health factor за 7 дней, в виде текстового sparkline. /liquidations — последние ликвидации по отслеживаемым адресам.

Мультиаккаунт: один Telegram-пользователь может мониторить несколько адресов (собственные + командные кошельки).

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

Аналитика (1-2 дня). Список протоколов, чейнов, типов позиций. Определяем, нужен ли мониторинг LP-позиций Uniswap v3 (impermanent loss, out-of-range алерты) — это отдельный модуль.

Разработка (3-5 дней). Chain listener + position calculator + Telegram bot + PostgreSQL schema. Юнит-тесты на расчёт APY и health factor с моками RPC.

Деплой и мониторинг. Docker Compose, логи в Loki, метрики задержки уведомлений в Grafana. SLA на алерт: <30 секунд от события в чейне до Telegram-сообщения.

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

Базовый бот для Aave v3 на одном чейне с health factor алертами — 3-4 дня. Мультичейн с поддержкой Aave + Compound + мониторингом LP-позиций — 1.5-2 недели. Интеграция с собственным протоколом через кастомный ABI добавляет 2-3 дня.

Стоимость рассчитывается после анализа требований.