Розробка бота моніторингу китів

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

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

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

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

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

Розробка бота відслідковування китів

"Кит" в контексті on-chain аналітики — адреса з обсягом позиції чи трансакцій, значимим щодо liquidity конкретного протоколу чи токена. Відслідковування китів корисно в кількох сценаріях: торгові сигнали (крупна адреса почала накопичувати — цікаво), риск-менеджмент протоколу (один holder накопив >10% supply — ризик дампу), compliance (відслідковування адресу зі списків санкцій OFAC).

Ключова технічна складність — не сам моніторинг, а класифікація: відрізнити реальне переміщення коштів кита від внутрішніх переводів між його власними гаманцями, від wash trading, від технічних операцій (rebalancing LP позицій).

Джерела даних

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 — поточний портфель адреси

Архітектура бота

Block Producer (WebSocket/Helius webhook)
        │
        ▼
Event Queue (Redis Streams або BullMQ)
        │
        ▼
Transaction Classifier
   ├── Filter: whale threshold check (>$X USD)
   ├── Label resolver (CEX deposit? Internal transfer? DEX swap?)
   └── Dedup (одна трансакція може викликати N подій)
        │
        ▼
Signal Generator
   ├── Accumulation pattern detector
   ├── Large withdrawal from CEX (bullish signal)
   └── Large deposit to CEX (potential sell)
        │
        ▼
Notification Dispatcher
   ├── Telegram Bot API
   ├── Discord Webhooks
   └── WebSocket push (для dashboard)

Детектор значимих трансакцій

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> {
  // Поріг: мінімум $500k для топовых токенів, $50k для long-tail
  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: адреси, завжди перемішаючі кошти в одному блоці чи з малим lag

Для EVM: якщо адреса A часто відправляє gas на адресу B перед трансакціями B — ймовірно, A і B один власник.

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" });
}

Фільтрація шуму

Без фільтрації бот буде спамити. Правила:

  • Дедупліцікація: одна трансакція → одно уведомлення (по txHash)
  • Cooldown на адресу: якщо адреса A вже алертилась 5 хвилин назад — пропускаємо
  • Blacklist технічних адресу: мультисіг treasury протоколів, staking контракти
  • Aggregation: якщо за 60 сек прийшло 10+ алертів одного типу — відправляємо сводку

Що входить в розробку

  • Event listener з підтримкою reconnect і catchup пропущених блоків
  • Label cache з TTL (Nansen/Arkham дані мінять рідко, кешувати на 24ч)
  • Класифікатор трансакцій з розширюваними правилами
  • Telegram/Discord notification з форматуванням і дедупліцікацією
  • Dashboard з історією алертів і настройкою порогів
  • Підтримка watchlist конкретних адресу (VIP tracking)