Розробка бота відстеження китів
Уявіть: ви торгуєте на DEX, і раптом кит заходить на $10 млн у пул ліквідності. Ви дізнаєтеся про це через годину — ціна полетіла. Такі сценарії — звичайність без якісного моніторингу. Ми вирішуємо це: наш бот у реальному часі відстежує великі транзакції, класифікує їх і надсилає алерти в Telegram або Discord.
«Кит» у контексті on-chain аналітики — адреса з обсягом позиції або транзакцій, значущим відносно ліквідності конкретного протоколу чи токена. Відстеження китів корисне в кількох сценаріях: торгові сигнали (велика адреса почала накопичувати — цікаво), ризик-менеджмент протоколу (один холдер накопичив >10% supply — ризик дампу), compliance (відстеження адрес із санкційних списків). Згідно з дослідженням Nansen, адреси з міткою 'Smart Money' у 70% випадків генерують позитивну дохідність. Відсутність бота коштує дорого: пропущений вхід кита може коштувати $1,500 втраченого прибутку.
Як класифікувати транзакції китів?
Транзакція проходить кілька етапів обробки. Перший — визначення джерела та отримувача через 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 для мінімальної затримки — WebSocket у 5 разів швидший за polling. Економія на 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) — займає до 2 днів
- Налаштування інфраструктури: 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. Ми гарантуємо якість коду та підтримку після запуску. Зв'яжіться з нами, щоб обговорити деталі вашого бота. Замовте розробку бота під ключ та почніть отримувати прибуткові сигнали. Оцініть ваш проект — пишіть!







