Уявіть: OTC-трейдеру потрібно миттєво дізнатися про вхідний USDT на $100k, інакше угода піде конкуренту. Десятки гаманців, сотні транзакцій на день — ручна перевірка блок-експлорера неможлива. Ми розробляємо мобільні додатки, які вирішують це завдання: підписуються на ончейн-події через WebSocket, фільтрують за сумою та типом, і надсилають push за 1-2 секунди. Така система економить години ручної роботи та знижує ризик пропуску великої угоди.
За п'ять років ми реалізували понад 15 проектів для DeFi-протоколів та криптофондів, включаючи рішення для моніторингу стейблкоїнів з фільтрацією за порогами. Кожен додаток проходить навантажувальне тестування на 1000+ сповіщень за хвилину та аудит безпеки. Результат — стабільна робота під високим навантаженням та гарантована доставка сповіщень.
Як влаштований моніторинг транзакцій?
Є чотири основні підходи, і вибір залежить від вимог до швидкості, навантаження та складності.
| Метод | Затримка | Навантаження на RPC | Надійність |
|---|---|---|---|
| HTTP Polling | 10-30 с | Висока | Низька |
| WebSocket RPC | 1-3 с | Середня | Висока |
| Webhooks (Alchemy/QuickNode) | 1-2 с | Низька | Дуже висока |
| Blockchain indexer (The Graph) | 5-15 с | Низька | Середня |
WebSocket через Infura забезпечує затримку 1-2 секунди, що в 30 разів швидше за HTTP polling. Для мобільного додатку з push-сповіщеннями оптимальний третій варіант: Alchemy Notify → бекенд webhook → FCM/APNs → телефон.
Чому фільтрація транзакцій критична?
Сповіщення при кожній транзакції — це занадто багато для активних адрес (whale-гаманці роблять сотні транзакцій на день). Потрібні фільтри:
- Мінімальна сума (наприклад, сповіщати тільки при > $500)
- Тип події (тільки incoming, або тільки DEX swap)
- Тихі години: з 23:00 до 08:00 — батчити сповіщення, показати одним зведеним push вранці
На iOS кастомізація сповіщень через UNNotificationContent з UNNotificationServiceExtension — можна збагатити push даними перед показом. На Android — NotificationCompat.Builder з InboxStyle для батчингу. Така фільтрація дозволяє суттєво економити трафік та енергію батареї, а також зменшити навантаження на сервер.
Підтримувані блокчейни
Різні ланцюжки — різні RPC, різні формати адрес, різні стандарти токенів. Ethereum та EVM-сумісні (Polygon, BSC, Arbitrum, Base) — один адаптер з різним RPC URL та chain ID. Solana — окремий SDK, адреси base58, токени через SPL.
Для кожної ланцюжка — окремий адаптер:
interface ChainMonitor { val chainId: Int suspend fun subscribeToAddress(address: String, listener: TxEventListener) suspend fun unsubscribe(address: String) suspend fun getRecentTransactions(address: String, limit: Int): List<Transaction> } class EthereumMonitor(private val alchemyWsUrl: String) : ChainMonitor { override val chainId = 1 // ... } class SolanaMonitor(private val heliusApiKey: String) : ChainMonitor { override val chainId = 101 // Solana mainnet // ... } Порівняння RPC-провайдерів для push-сповіщень
| Провайдер | WebSocket | Webhooks | Безкоштовний ліміт | Затримка |
|---|---|---|---|---|
| Alchemy | Так | Так | 300М обчислювальних одиниць/міс | 1-2 с |
| QuickNode | Так | Так | 100М обчислювальних одиниць/міс | 1-2 с |
| Infura | Так | Ні | 100К запитів/день | 1-3 с |
| Moralis | Ні | Так | 40К запитів/день | 2-5 с |
Для мобільного додатку з push ми рекомендуємо використовувати Alchemy або QuickNode через низьку затримку та вбудовану підтримку webhook. Вибір провайдера впливає на бюджет: Alchemy та QuickNode дорожчі за Infura, але забезпечують меншу затримку та вбудовані webhooks, що економить час розробки.
Архітектура додатку
Головний екран — хронологічна стрічка всіх відстежуваних подій. Фільтри: за ланцюжком, за адресою, за типом події. Пошук за tx hash. Тап — детальна картка з посиланням на блок-експлорер. Дані завантажуються з власного бекенду, який зберігає історію подій (тому що блокчейн не дає зручного «дай мені події цієї адреси за місяць» без архівної ноди). Пагінація cursor-based.
struct FilterConfig: Codable { var minAmountUSD: Double var eventTypes: [EventType] var quietHoursStart: Date? var quietHoursEnd: Date? } enum EventType: String, Codable { case incoming, outgoing, swap, contractInteraction } Процес налаштування моніторингу
- Збір вимог — визначаємо ланцюжки, адреси, фільтри та сценарії сповіщень.
- Вибір RPC-провайдера — Alchemy, QuickNode або Infura з урахуванням бюджету та навантаження.
- Розробка адаптерів — створюємо модулі для кожної ланцюжка з підтримкою WebSocket та webhook.
- Конфігурація фільтрів — налаштовуємо пороги, тихі години та батчинг.
- Інтеграція з бекендом — бекенд отримує події, зберігає їх та надсилає push через FCM/APNs.
- Тестування під навантаженням — симулюємо 1000 транзакцій за хвилину, перевіряємо стабільність.
- Деплой та моніторинг — розгортаємо на продакшн та відстежуємо метрики.
Що входить в роботу під ключ
- Мультичейн архітектура (EVM + Solana опціонально)
- Управління списком відстежуваних адрес та контрактів
- Стрічка подій з фільтрами та пошуком
- Push-сповіщення з фільтрами за сумою та типом, тихі години
- Детальна картка транзакції з посиланням на блок-експлорер
- Offline-режим з кешуванням останніх подій
- Інтеграція з Alchemy Notify, QuickNode, Moralis (за вибором)
Терміни та вартість
Терміни — 7–12 робочих днів залежно від кількості підтримуваних ланцюжків та глибини інтеграції. Вартість розраховується індивідуально після аналізу вимог. В середньому окупність проекту становить 2-3 місяці за рахунок зниження витрат на ручний моніторинг та зменшення простоїв. Зв'яжіться з нами для попередньої оцінки — ми підготуємо архітектуру та оптимізуємо бюджет під ваш стек. Замовте консультацію, щоб обговорити деталі.







