Розробка системи моніторингу DeFi-позицій

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

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

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

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

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

Розроблення системи мониторингу DeFi-позицій

Health factor 1.05 в Aave — це 5% до ліквідації. При високій волатильності ринку від 1.05 до ліквідації може пройти кілька хвилин. Користувач без системи мониторингу дізнається про проблему після: позиція ліквідирована, liquidation bonus (8-15%) пішов ліквідатору. На великих позиціях це тисячі доларів, які можна було б зберегти, додавши collateral вчасно.

Що та як мониторити: технічні деталі

Health factor: формула та пороги для алертів

У Aave v3 health factor розраховується як:

HF = (sum(collateral_i * liquidationThreshold_i * price_i)) / (sum(debt_j * price_j))

Через смарт-контракт: IPool.getUserAccountData(address) повертає healthFactor у форматі 1e18 = 1.0. Значення нижче 1e18 — позиція ліквідируєма.

Пороги для алертів:

  • HF < 1.5 — попередження: додайте collateral
  • HF < 1.2 — критично: негайне дія
  • HF < 1.05 — екстренно: ліквідація неминуча

Polling через multicall (MakeDao Multicall3 на 0xcA11bde05977b3631167028862bE2a173976CA11) — за один RPC виклик запитуємо HF для всіх відслідковуваних адрес. Для 100 адрес — один eth_call замість 100. Інтервал polling: кожні 30 секунд у нормальному режимі, кожні 5 секунд при HF < 1.3.

Compound v3 та Euler: відмінності механіки

У Compound v3 немає єдиного health factor — є isLiquidatable(address) bool метод та окремо borrowBalanceOf + collateralBalanceOf. Для розуміння близькості до ліквідації: borrowBalance / (collateralBalance * collateralFactor * price).

Euler (до паузи у 2023 році) мав subaccount систему — один адрес = 256 незалежних субсчётів. Система мониторингу повинна перебирати субсчёти через eulerAccount = address(uint160(mainAddress) ^ subAccountId). Це неочевидно та багато систем мониторингу Euler ігнорували субсчёти.

LP-позиції Uniswap v3: fee накопління та out-of-range

Для LP-мониторингу потрібні три метрики: поточна USD вартість позиції, накопленні fees, статус in/out-of-range.

Поточна вартість через NonfungiblePositionManager.positions(tokenId) + розрахунок amount0/amount1 по поточному tick пулу. Можна робити через статик-колл до view функції або через The Graph subgraph (запит кожні 5 хвилин).

Fees — періодично через NonfungiblePositionManager.collect з amount0Max = type(uint128).max у режимі симуляції (eth_call, не транзакція). Або через розрахунок feeGrowthInside як описано у Uniswap v3 whitepaper.

Out-of-range: підписка на Swap» события пулу, порівняння currentTickзtickLower/tickUpper` позиції.

Архітектура системи

Компоненти

Indexer — сервіс, який читає on-chain дані та зберігає у базу даних. Два режими: polling (кожні N секунд через multicall) та event-driven (WebSocket subscriptions). Для мониторингу HF — polling. Для LP out-of-range событій — event-driven.

Alert engine — применяет правила до поточних даних. Підтримує кастомні пороги: кожен користувач налаштовує свої HF thresholds, мінімальні fees для сповіщення, preferred notification channels.

Notification dispatcher — відправляет уведомлення. Канали: Telegram Bot (найпопулярніший у DeFi), Email через SendGrid/Resend, Webhook для кастомних інтеграцій, Push notifications через Web Push API.

API/Frontend — dashboard для користувачів: поточні позиції, історія змін HF, історія ліквідацій, APY за період.

Зберігання даних

PostgreSQL для time-series даних про позиції. Схема:

CREATE TABLE position_snapshots (
  id BIGSERIAL PRIMARY KEY,
  address VARCHAR(42) NOT NULL,
  protocol VARCHAR(20) NOT NULL,  -- 'aave_v3', 'compound_v3', 'uniswap_v3'
  chain_id INTEGER NOT NULL,
  health_factor NUMERIC,
  collateral_usd NUMERIC,
  debt_usd NUMERIC,
  snapshot_at TIMESTAMPTZ NOT NULL
);
CREATE INDEX ON position_snapshots (address, protocol, snapshot_at DESC);

Для часових рядів з високою частотою запису — TimescaleDB extension для PostgreSQL з automatic partitioning за часом.

The Graph subgraph для Uniswap v3 позицій знижує навантаження на RPC: замість виклику positions() для кожного tokenId — один GraphQL запит по owner address. Але The Graph має затримку ~1-5 хвилин, тому для real-time мониторингу out-of-range — WebSocket subscriptions.

Мультичейн та газ-алерти

Сучасні користувачі DeFi працюють на Ethereum, Arbitrum, Optimism, Polygon одночасно. Система повинна агрегувати позиції зі всіх чейнів у єдиному dashboard. Для кожного чейну — окреме WebSocket підключення до ноди.

Додатково корисно: мониторинг gas price (Ethereum base fee через eth_gasPrice) + сповіщення «зараз дешево, хороший час для rebalancing». Ethereum base fee нижче 10 gwei у нерабочий час — rare event, але користувачі цінують такі сповіщення.

Стек розроблення

Backend: Node.js (TypeScript) + viem для on-chain взаємодій. Redis для черги алертів та дедупліцирування. PostgreSQL + TimescaleDB для зберігання. Bull.js для job scheduling (polling jobs).

Frontend: React + wagmi для wallet connection (користувач логінується через гаманець, не email/password). TanStack Query для data fetching. Recharts або TradingView Lightweight Charts для HF timeline.

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

Проектування (2-3 дні). Список протоколів, чейнів, метрик. Схема бази даних.

Розроблення indexer + alert engine (1 тиждень). Multicall polling, WebSocket subscriptions, alert rules.

Notification dispatcher (2-3 дні). Telegram bot, email, webhook.

Frontend dashboard (3-5 днів). Positions overview, HF timeline, alert configuration.

Деплой. VPS + managed PostgreSQL. Мониторинг самого сервісу через Uptime Robot.

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

Базова система (Aave + Compound, Telegram alerts): 1 тиждень. Мультичейн система з LP мониторингом, dashboard та кастомними правилами: 2-3 тижні.