Представьте: 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 месяца за счёт снижения издержек на ручной мониторинг и уменьшения простоев. Свяжитесь с нами для предварительной оценки — мы подготовим архитектуру и оптимизируем бюджет под ваш стек. Закажите консультацию, чтобы обсудить детали.







