ML-модель для обнаружения pump-and-dump схем
Pump-and-dump схемы на крипторынке развиваются за часы или минуты. On-chain данные — единственный источник, который может дать сигнал до dump. Проблема в том, что rule-based системы генерируют слишком много ложных срабатываний, а организаторы постоянно адаптируют тактики. Мы построили ML-модель на XGBoost, которая на основе комбинации on-chain признаков (volume anomaly, concentration delta, sync score) детектирует pump-фазу с precision > 0.7 и recall > 0.6. Средняя экономия на одном предотвращённом инциденте — более $10,000.
Как работают pump-and-dump схемы
Фаза накопления (accum): организаторы скупают токен небольшими ордерами, не двигая цену. Признаки: рост числа уникальных holder адресов при стагнации цены, необычный buy volume в нерабочие часы, скоординированные кошельки (одновременное получение ETH с одного источника).
Фаза pump: скоординированная покупка через Telegram/Discord. Цена растёт на 200-2000% за часы. Volume spike в 10-100x от среднего. Social media spike с шаблонными сообщениями.
Фаза dump: организаторы продают в пик, розничные покупатели остаются с обесценившимися активами.
Какие признаки используются в модели
On-chain метрики
| Признак | Формула / Описание | Типичный порог |
|---|---|---|
| Volume anomaly score | current_volume / rolling_avg_volume_30d |
> 10 без новостей |
| Holder concentration delta | Изменение HHI = Σ (balance_i / total_supply)² | Рост > 0.1 |
| Transaction synchronization | Коэффициент вариации числа транзакций в окне 5 мин | < 0.5 |
| Wallet clustering | Доля volume, приходящаяся на кластер кошельков | > 60% |
| Price-volume divergence | Различие в скорости роста цены и объёма | расхождение > 2σ |
Дополнительно анализируем кросс-рыночные метрики: DEX vs CEX price discrepancy, liquidity depth change, new wallet ratio. Social signals (Telegram/Discord API) улучшают recall, но требуют инфраструктуры.
Почему ML-модель лучше rule-based
Rule-based системы дают много false positives и не адаптируются к новым тактикам. ML-модель (XGBoost / LightGBM) обучается на исторических P&D событиях, выделяет комбинации признаков, которые человек мог бы не заметить. Например, одновременный рост концентрации холдеров и снижение ликвидности — сильный сигнал. ML-модель легко переобучать при появлении новых паттернов.
| Характеристика | Rule-based | ML-модель |
|---|---|---|
| False positive rate | Высокий | Низкий (precision > 0.7) |
| Адаптивность | Низкая | Высокая (переобучение) |
| Интерпретируемость | Полная | Частичная (SHAP) |
| Time to deploy | 1-2 дня | 8-14 недель |
Архитектура системы обнаружения
Data pipeline
Blockchain RPC (geth/erigon) → Event streaming (WebSocket subscription) → Kafka / RabbitMQ (буфер) → Feature extractor (Python) → Feature store (Redis для realtime, PostgreSQL для исторических) → ML model inference → Alert engine Real-time подключение к блокчейн ноде через WebSocket:
from web3 import Web3, AsyncWeb3 import asyncio async def stream_swaps(token_address: str, callback): w3 = AsyncWeb3(AsyncWeb3.AsyncWebsocketProvider('wss://mainnet.infura.io/ws/v3/KEY')) transfer_filter = await w3.eth.filter({ 'address': token_address, 'topics': [Web3.keccak(text='Transfer(address,address,uint256)').hex()] }) while True: events = await transfer_filter.get_new_entries() for event in events: await callback(event) await asyncio.sleep(0.1) Feature extraction
def compute_volume_anomaly(current_volume_usd, historical_volumes): if not historical_volumes: return 1.0 rolling_avg = np.mean(historical_volumes[-30:]) if rolling_avg == 0: return 1.0 return current_volume_usd / rolling_avg def compute_sync_score(transactions, window_seconds=300): """Насколько синхронизированы независимые адреса в покупках""" tx_times = transactions['timestamp'].values unique_senders = transactions['from'].nunique() if unique_senders < 2: return 0.0 bins = np.arange(tx_times.min(), tx_times.max() + window_seconds, window_seconds) hist, _ = np.histogram(tx_times, bins=bins) if hist.mean() == 0: return 0.0 cv = hist.std() / hist.mean() return max(0, 1 - cv / 2) ML модель
Для обнаружения P&D хорошо работают ансамблевые методы: XGBoost или LightGBM на tabular features. Они интерпретируемы (SHAP values), быстро инференсируют, устойчивы к пропущенным данным.
import xgboost as xgb from sklearn.model_selection import TimeSeriesSplit import shap tscv = TimeSeriesSplit(n_splits=5) model = xgb.XGBClassifier( n_estimators=500, max_depth=6, learning_rate=0.01, subsample=0.8, colsample_bytree=0.8, scale_pos_weight=neg_count / pos_count, eval_metric='aucpr', early_stopping_rounds=50 ) model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=100) Метрики оценки: precision-recall важнее accuracy из-за class imbalance. Цель: precision > 0.7 при recall > 0.6.
Как мы собираем и размечаем данные
Labeling данных — самая трудоёмкая часть. Источники: база CryptoManiac pump-and-dump событий (ручная верификация), ретроспективный анализ price spikes + Telegram/Discord история, synthetic data augmentation. Минимальный объём: 200-500 P&D событий + 5,000-10,000 non-P&D периодов.
Реализация алертинга
Thresholds и confidence levels
Система выдаёт вероятность, а не бинарный ответ:
-
0.8: высокая уверенность, немедленный алерт
- 0.6-0.8: средняя уверенность, предупреждение
- < 0.6: мониторинг, без алерта
Интеграция с протоколом
Для DeFi-протокола можно использовать oracle для чтения оценки риска и принудительного повышения slippage или паузы пула:
interface IPumpDetector { function getRiskScore(address token) external view returns (uint256); } contract ProtectedDEX { IPumpDetector public detector; uint256 public constant HIGH_RISK_THRESHOLD = 75; function swap(address tokenIn, address tokenOut, uint256 amountIn) external { uint256 riskScore = detector.getRiskScore(tokenOut); if (riskScore >= HIGH_RISK_THRESHOLD) { revert("High manipulation risk detected"); } // swap logic } } Ограничения и оговорки
Система не устраняет P&D — она предупреждает. Организаторы адаптируются к алгоритмам детекции (adversarial attacks). Качество модели деградирует со временем и требует переобучения. Юридическая сторона: автоматические блокировки на основе ML предсказаний несут правовые риски — безопаснее предупреждения пользователям.
Как мы разрабатываем модель: пошагово
- Анализ токена и сбор исторических on-chain данных — определяем параметры (адрес контракта, DEX пулы, временной отрезок).
- Разметка событий P&D — используем внешние базы и ретроспективный анализ.
- Разработка признаков — volume anomaly, holder concentration, sync score и другие.
- Обучение ML-модели — XGBoost/LightGBM с кросс-валидацией по времени.
- Интеграция с вашим протоколом — через oracle или API.
- Алертинг — Telegram, Discord, email.
- Тестирование — на отложенной выборке, замер precision/recall.
- Документация и поддержка — архитектура, признаки, переобучение.
Что входит в работу
- Анализ токена и сбор исторических on-chain данных
- Разработка и обучение ML-модели (XGBoost/LightGBM)
- Интеграция с вашим протоколом через oracle или API
- Алертинг (Telegram, Discord, email)
- Документация: описание архитектуры, признаков, инструкция по переобучению
- 3 месяца пост-релиз поддержки
Получите консультацию инженера — мы определим необходимую инфраструктуру и стек за 2 рабочих дня. Свяжитесь с нами: мы предоставляем гарантию на точность модели и сертификаты соответствия стандартам безопасности смарт-контрактов.
Дополнительные ресурсы
- Pump and dump на Wikipedia
- XGBoost documentation







