Разработка бота отслеживания китов
Представьте: вы торгуете на DEX, и вдруг кит заходит на $10 млн в пул ликвидности. Вы узнаёте об этом через час — цена улетела. Такие сценарии — обыденность без качественного мониторинга. Мы решаем это: наш бот в реальном времени отслеживает крупные транзакции, классифицирует их и отправляет алерты в Telegram или Discord.
"Кит" в контексте on-chain аналитики — адрес с объёмом позиции или транзакций, значимым относительно liquidity конкретного протокола или токена. Отслеживание китов полезно в нескольких сценариях: торговые сигналы (крупный адрес начал накапливать — интересно), риск-менеджмент протокола (один holder накопил >10% supply — риск дампа), compliance (отслеживание адресов из санкционных списков). Согласно исследованию Nansen, адреса с меткой 'Smart Money' в 70% случаев генерируют положительную доходность. Отсутствие бота обходится дорого: пропущенный вход кита может стоить тысячи долларов упущенной прибыли.
Как классифицировать транзакции китов?
Транзакция проходит несколько этапов обработки. Первый — определение источника и получателя через label resolver (Nansen, Etherscan, Arkham). Второй — анализ типа движения: если адрес отправителя — CEX hot wallet, а получателя — новый кошелек, это cex_withdraw. Если оба адреса — известные протоколы, скорее всего dex_swap. Третий — проверка внутренних переводов через кластеризацию.
Источники данных и архитектура
On-chain (первичные): Ethereum (eth_getLogs + eth_subscribe(logs) для ERC-20 Transfer событий), Solana (Helius webhooks с фильтрацией по program ID), DEX события: Uniswap V3 Swap, Curve TokenExchange, dYdX order fills.
Аналитические (вторичные): Nansen API — labelling адресов (Smart Money, CEX hot wallets, known DeFi whales), Arkham Intelligence API — entity-level атрибуция, Etherscan labels API — биржевые кошельки, протоколы, DeBank API — текущий портфель адреса.
Архитектура бота обеспечивает отказоустойчивость: WebSocket-подписка через Tenderly или собственный node, очередь сообщений (Redis Streams), классификатор с кешем меток (TTL 24 ч), генератор сигналов и диспетчер уведомлений.
| Метод | Задержка | Нагрузка на инфраструктуру | Сложность реализации |
|---|---|---|---|
| Direct RPC (polling) | 12-15 сек | Высокая (частые запросы) | Низкая |
| WebSocket (eth_subscribe) | <3 сек | Низкая (push) | Средняя |
| The Graph / subgraph | ~5-10 сек | Зависит от индексации | Высокая |
| Helius webhooks (Solana) | <1 сек | Низкая | Средняя |
Рекомендуем комбинацию WebSocket + webhook для минимальной задержки. Экономия на RPC-запросах по сравнению с polling может достигать $2,000 в месяц.
Детектор значимых транзакций
interface WhaleTx { txHash: string; from: string; to: string; tokenAddress: string; amountUSD: number; labels: { from: string | null; // "Binance Hot Wallet", "Smart Money #42" to: string | null; }; txType: "cex_deposit" | "cex_withdraw" | "dex_swap" | "wallet_transfer" | "unknown"; } async function classifyTransaction(tx: RawTransferEvent): Promise<WhaleTx | null> { const amountUSD = await priceService.toUSD(tx.token, tx.amount); if (amountUSD < WHALE_THRESHOLD_USD) return null; const [fromLabel, toLabel] = await Promise.all([ labelResolver.resolve(tx.from), labelResolver.resolve(tx.to), ]); const txType = inferTxType(fromLabel, toLabel); return { txHash: tx.hash, from: tx.from, to: tx.to, tokenAddress: tx.token, amountUSD, labels: { from: fromLabel, to: toLabel }, txType }; } function inferTxType(fromLabel: string | null, toLabel: string | null): WhaleTx["txType"] { if (CEX_LABELS.some((l) => toLabel?.includes(l))) return "cex_deposit"; if (CEX_LABELS.some((l) => fromLabel?.includes(l))) return "cex_withdraw"; if (DEX_LABELS.some((l) => fromLabel?.includes(l) || toLabel?.includes(l))) return "dex_swap"; return "unknown"; } Почему важна дедупликация и кластеризация?
Одна из сложных задач — понять, что несколько адресов принадлежат одной сущности. Эвристики: dust attack / common input ownership (для UTXO-цепей), nonce-based clustering (адреса, финансируемые из одного источника), temporal correlation (адреса, всегда перемещающие средства в одном блоке). Для EVM: если адрес A часто отправляет gas на адрес B перед транзакциями B — вероятно, A и B один владелец.
Без дедупликации бот генерирует до 90% шума. Одна транзакция может породить несколько событий (например, Uniswap Swap включает Transfer от трейдера к пулу и Transfer от пула к трейдеру). Группируем события по txHash и отправляем одно уведомление. Cooldown на адрес (5 мин) и blacklist технических контрактов (мультисиги протоколов, стейкинг-контракты) дополнительно снижают шум.
Telegram-уведомление
async function sendWhaleAlert(tx: WhaleTx, bot: TelegramBot) { const emoji = tx.txType === "cex_deposit" ? "🔴" : tx.txType === "cex_withdraw" ? "🟢" : "🔵"; const fromStr = tx.labels.from ?? shortenAddress(tx.from); const toStr = tx.labels.to ?? shortenAddress(tx.to); const message = [ `${emoji} <b>Whale Alert</b>`, ``, `<b>Amount:</b> $${formatUSD(tx.amountUSD)}`, `<b>From:</b> ${fromStr}`, `<b>To:</b> ${toStr}`, `<b>Type:</b> ${tx.txType}`, ``, `<a href="https://etherscan.io/tx/${tx.txHash}">View on Etherscan</a>`, ].join("\n"); await bot.sendMessage(CHANNEL_ID, message, { parse_mode: "HTML" }); } Пороги и фильтрация шума
Пороги срабатывания: для топовых токенов от $500k, для long-tail от $50k. Можно задать watchlist конкретных адресов с индивидуальными порогами. Правила фильтрации:
- Дедупликация: одна транзакция → одно уведомление (по
txHash) - Cooldown на адрес: если адрес A уже алертился 5 минут назад — пропускаем
- Blacklist технических адресов: мультисиг treasury протоколов, staking контракты
- Aggregation: если за 60 сек пришло 10+ алертов одного типа — отправляем сводку
| Тип токена | Минимальный порог | Cooldown | Приоритет |
|---|---|---|---|
| Топовые (ETH, BTC, stablecoins) | $500k | 3 мин | Высокий |
| Средние (LINK, UNI, MATIC) | $200k | 5 мин | Средний |
| Long-tail | $50k | 10 мин | Низкий |
Процесс разработки
- Анализ требований и выбор целевых сетей (Ethereum, Solana, BNB Chain)
- Настройка инфраструктуры: RPC-ноды, WebSocket-подписки, очереди
- Реализация классификатора и label-резолвера
- Интеграция Telegram/Discord-бота с форматированием
- Тестирование на исторических данных и деплой
Что входит и сроки
- Event listener с поддержкой reconnect и catchup пропущенных блоков
- Label cache с TTL (Nansen/Arkham данные меняются редко, кешировать на 24ч)
- Классификатор транзакций с расширяемыми правилами
- Telegram/Discord notification с форматированием и дедупликацией
- Dashboard с историей алертов и настройкой порогов
- Поддержка watchlist конкретных адресов (VIP tracking)
Сроки разработки — от 2 до 6 недель в зависимости от набора сетей и сложности классификации. Стоимость рассчитывается индивидуально. Наша команда имеет сертификаты по Solidity и Rust, более 50 успешных проектов в DeFi. Мы гарантируем качество кода и поддержку после запуска. Свяжитесь с нами, чтобы обсудить детали вашего бота. Закажите разработку бота и начните получать прибыльные сигналы.







