Розробка бота для моніторингу ліквідності

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка бота для моніторингу ліквідності
Середній
~3-5 днів
Часті запитання

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

Етапи блокчейн-розробки

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

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

Розроблення бота для мониторингу ліквідності

Uniswap v3 зробив управління ліквідністю активним заняттям. LP-позиція в діапазоні $1800-$2200 по ETH/USDC відмінно працювала тиждень — до того, як ціна вийшла за границю, і позиція перестала заробляти fees, конвертовавшись повністю в один актив. Без мониторингу таке може залишатися непомітним днями. Це прямі втрати від упущених комісій та impermanent loss.

Що реально потрібно відслідковувати у пулах DEX

Uniswap v3: активність позицій та out-of-range события

Кожна позиція у Uniswap v3 задається (tokenId, tickLower, tickUpper). Пул зберігає поточний tick — логарифмічну ціну. Як тільки currentTick < tickLower або currentTick > tickUpper — позиція out-of-range, fees не нараховуються.

Подія Swap у пулі emits новий tick. Бот підписується на Swap через WebSocket (eth_subscribe("logs", {address: poolAddress, topics: [Swap.topic]})), декодує tick із даних события та порівнює з tickLower/tickUpper всіх відслідковуваних позицій. Latency від события до уведомлення — 100-500ms, що достатньо для інформування LP.

Додатково корисно відслідковувати Mint та Burn события — вони показують, коли крупні LP входять або виходять із діапазону, що часто передує руху ціни.

Curve: disbalance пулу та de-peg мониторинг

У Curve StableSwap пул вважається збалансованим, коли долі активів близькі до цільових (зазвичай рівних). При сильному дисбалансі (наприклад, 90% USDT та 10% USDC в 3pool) slippage при свопах різко зростає, а ефективний APY для LP падає.

Метрика для мониторингу: відхилення поточних балансів від ідеальних. Виклик get_balances() + порівняння з total_supply() / N. Якщо один актив займає >70% — алерт. Таке трапилось з 3pool під час de-pegging событій (USDC в березні 2023 кратковременно торгувався по $0.87 на Curve).

The Graph для історичних даних

Для мониторингу TVL та обсягів пулу у реальному часі використовуємо The Graph subgraph Uniswap v3 (subgraph id: 5zvR82QoaXYFyDEKLZ9t6v9adgnptxYpKpSbxtgVENFV). GraphQL запит кожні 60 секунд повертає pool.totalValueLockedUSD, pool.volumeUSD, pool.feesUSD. Для крупних пулів з >$10M TVL це достатньо. Для дрібних пулів з швидкими змінами — прямі события через WebSocket надійніше.

Архітектура бота

Типова система мониторингу складається з трьох компонентів:

Компонент Технологія Задача
Event listener ethers.js / viem WebSocket Підписка на on-chain события
State aggregator Node.js / Python Агрегація та порівняння з порогами
Alert dispatcher Telegram Bot API / PagerDuty Уведомлення по каналах

Event listener підписується через WebSocket на пули із конфігураційного списку. При отриманні события декодує дані через ABI та публікує в чергу (Redis Pub/Sub або in-memory queue).

State aggregator читає чергу, оновлює стан пулів (поточний tick, balances, TVL) та перевіряє умови алертів. Тут же — періодичний polling (кожні 30-60 секунд) для метрик, які не emitять события (наприклад, accumulated fees позиції через NonfungiblePositionManager.collect).

Alert dispatcher дедуплицирует алерти (один алерт у 5 хвилин по одній позиції), форматує повідомлення та відправляє в Telegram або webhook. Для production систем — PagerDuty з severity levels.

Розрахунок accumulated fees без транзакції

Поточні накопленні fees LP-позиції можна порахувати off-chain, не роблячи collect (яка коштує газ). Формула з Uniswap v3 whitepaper через feeGrowthInside:

fees0 = liquidity * (feeGrowthInside0 - feeGrowthInside0Last) / 2^128
fees1 = liquidity * (feeGrowthInside1 - feeGrowthInside1Last) / 2^128

feeGrowthInside розраховується з даних пулу по ticks — це статик-колл, не транзакція. Показувати користувачу накопленні fees у реальному часі корисно для прийняття рішень про rebalancing.

Стек та інтеграції

viem (TypeScript) для on-chain взаємодії — типізовані виклики, вбудований ABI-декодер, підтримка multicall для батчингу запитів. The Graph для історичних даних та агрегованих метрик. Redis для зберігання стану між рестартами та дедупліцирування. Telegram Bot API як основний канал уведомлень.

Для мультичейн мониторингу (Ethereum + Arbitrum + Optimism) — паралельні WebSocket підключення з одним агрегатором. Uniswap v3 розповсюджений на всіх трьох чейнах, адреси пулів різні, але ABI ідентичний.

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

Конфігурація (1 день). Список пулів, позицій, пороговані значення для алертів.

Розроблення (3-5 днів). Event listener + state aggregator + Telegram/webhook інтеграція. Тест на testnet (Sepolia з форкнутим Uniswap v3 станом через Foundry vm.createFork).

Деплой. VPS з мінімум 2 CPU / 4GB RAM, dedicated full node або Alchemy/QuickNode WebSocket endpoint. Мониторинг бота через pm2 + health check endpoint.

Орієнтири за часом

Базовий бот (один DEX, Telegram алерти): 3-5 днів. Мультичейн система з історичними метриками та dashboard: 2-3 тижні.