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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска 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)