Большинство эксплойтов на кросс-чейн мостах длятся от одной транзакции до нескольких минут. Атака на Wormhole ($326M) — одна подписанная транзакция, 0 времени на реакцию. Ronin Bridge ($620M) — 5 из 9 валидаторов скомпрометированы, мост жил 6 дней до обнаружения. Если система мониторинга не анализирует как on-chain активность, так и состояние валидаторов — средства теряются безвозвратно. Наша задача: построить систему, которая ловит атаку до или во время, давая время на паузу протокола.
Мы разрабатываем не просто дашборд с графиками. Это продьюктивная система с alert-логикой, circuit breaker-ами и четкими playbook реагирования. Наш опыт включает интеграцию с OpenZeppelin Defender и Tenderly Web3 Actions для автоматизированной остановки моста при аномалиях. За 5+ лет мы реализовали 15+ систем мониторинга для DeFi-протоколов, что позволяет нам гарантировать надежность решения.
Основные угрозы для кросс-чейн мостов
Мосты — критическая инфраструктура DeFi. Основные векторы атак:
- Reentrancy в смарт-контрактах — классическая атака, усиленная cross-chain вызовами.
- Компрометация валидаторов / relayer — злоумышленник получает большинство подписей и подтверждает ложные транзакции.
- Oracle manipulation — манипуляция ценовым фидом для нечестного обмена.
- Flash loan атаки — мгновенный заём средств для создания дисбаланса пула.
Система мониторинга должна отслеживать каждый из этих сценариев как на исходной цепочке, так и на целевой.
Как система детектирует аномалии?
Система строится на трёх уровнях, каждый с разным временем реакции:
Уровень 1 — on-chain real-time (< 1 блок). Мониторинг pending транзакций в mempool на подозрительные паттерны: множественные cross-chain вызовы, необычные объёмы, взаимодействие с новыми контрактами. Технически сложно (нужен доступ к private mempool через Flashbots или Eden), но даёт самое раннее предупреждение.
Уровень 2 — on-chain per-block (< 12 секунд на Ethereum). Анализ каждого нового блока: события моста (BridgeInitiated, BridgeFinalized), изменения балансов в пулах ликвидности, аномальные накопления голосов валидаторов.
Уровень 3 — off-chain aggregated (минуты-часы). Агрегация данных за период, trend analysis, cross-chain корреляции. Выявляет медленно развивающиеся атаки: дрейф лимитов, накопление подписей неактивными валидаторами.
Как работает on-chain circuit breaker для мостов?
Самый ценный компонент — возможность автоматически или полуавтоматически паузить мост при обнаружении атаки. В отличие от стандартного Pausable (OZ), мы используем rate limiting на уровне контракта, который срабатывает автоматически при аномальном объёме перевода:
contract BridgeWithCircuitBreaker is Pausable, AccessControl { bytes32 public constant GUARDIAN_ROLE = keccak256("GUARDIAN_ROLE"); uint256 public maxTransferPerBlock; uint256 public maxTransferPerHour; uint256 private _transferredThisBlock; uint256 private _transferredThisHour; uint256 private _lastBlockNumber; uint256 private _lastHourTimestamp; modifier withinRateLimit(uint256 amount) { _updateRateLimitCounters(); require(_transferredThisBlock + amount <= maxTransferPerBlock, "Block rate limit exceeded"); require(_transferredThisHour + amount <= maxTransferPerHour, "Hour rate limit exceeded"); _transferredThisBlock += amount; _transferredThisHour += amount; _; } function transfer(address token, uint256 amount, address to) external whenNotPaused withinRateLimit(amount) { // ... логика перевода } function emergencyPause() external onlyRole(GUARDIAN_ROLE) { _pause(); emit EmergencyPause(msg.sender, block.timestamp); } function _updateRateLimitCounters() private { if (block.number > _lastBlockNumber) { _transferredThisBlock = 0; } if (block.timestamp >= _lastHourTimestamp + 1 hours) { _transferredThisHour = 0; _lastHourTimestamp = block.timestamp; } } } Rate limits не блокируют нормальную работу, но останавливают drain-атаку с большими объёмами. Установить лимиты на уровне 2-3x типичного объёма моста — баланс между UX и безопасностью.
Почему инвариантный мониторинг эффективен против эксплойтов?
Для каждого кросс-чейн моста существуют математические инварианты, которые всегда должны соблюдаться. Мониторинг инвариантов — элегантный способ поймать эксплойт:
- Bridge с mint/burn:
sum(totalSupplyOnSource) + sum(totalSupplyOnDestination) == constant(без учёта комиссий). - AMM мост:
reserve0 * reserve1 >= kдля каждой пары.
Пример Python-функции для проверки:
async def check_invariants(block_number: int): total_locked = await bridge.functions.totalLocked().call(block_identifier=block_number) total_minted = await bridge.functions.totalMinted().call(block_identifier=block_number) if total_locked != total_minted: await alert_critical(f"INVARIANT VIOLATED at block {block_number}: locked ({total_locked}) != minted ({total_minted})") Нарушение инварианта — верный признак бага или активной атаки.
Автоматическая пауза через off-chain Keeper
OpenZeppelin Defender Actions — serverless функции, реагирующие on-chain события. Пример: мониторинг TVL пула моста и автоматическая пауза при резком падении:
const { ethers } = require("ethers"); module.exports = async function(credentials) { const provider = new ethers.providers.JsonRpcProvider(credentials.secrets.ALCHEMY_URL); const vault = new ethers.Contract(VAULT_ADDRESS, VAULT_ABI, provider); const currentTVL = await vault.totalAssets(); const previousTVL = await storage.get('previousTVL') || currentTVL; const dropPercent = (previousTVL - currentTVL) * 100n / previousTVL; if (dropPercent > 15n) { const signer = credentials.relayer.getSigner(); const guardian = new ethers.Contract(GUARDIAN_ADDRESS, GUARDIAN_ABI, signer); await guardian.emergencyPause(); await notifySlack(`CRITICAL: TVL dropped ${dropPercent}% — bridge paused`); } await storage.put('previousTVL', currentTVL.toString()); }; Alerting и incident response
Severity алертов настроена так:
| Severity | Критерий | Реакция | Время реакции |
|---|---|---|---|
| P1 Critical | Активная атака, потеря funds | Немедленная пауза + звонки команде | < 2 минуты |
| P2 High | Нарушение инварианта, oracle манипуляция | Пауза + ревью в течение часа | < 15 минут |
| P3 Medium | Аномальный объём, необычное поведение | Ревью следующего дня | < 4 часа |
| P4 Low | Статистическое отклонение | Еженедельный ревью | Async |
P1/P2 алерты отправляются в PagerDuty с on-call ротацией, P3 — в Telegram чат, P4 — в Slack daily digest.
Пример Incident Response Playbook
Сценарий: TVL drop > 15% в одном блоке.
- On-call дежурный получает PagerDuty alert (< 2 мин).
- Проверить Etherscan: найти транзакцию, причину TVL drop.
- Если эксплойт — вызвать
emergencyPause()через Defender Relayer. - Уведомить команду в Signal (не в публичный Telegram).
- Через 15 минут: публичное сообщение пользователям о паузе.
- Post-mortem анализ: как атака прошла, как fix, когда unpause.
Playbook тестируем на drill exercises в тестовой среде.
Что входит в нашу работу
- Аудит архитектуры вашего моста и выявление критических инвариантов
- Разработка смарт-контрактов circuit breaker с rate limiting (Solidity)
- Развёртывание event indexer и детектора аномалий (Python / TypeScript)
- Настройка alerting pipeline (PagerDuty, Telegram, Slack)
- ML-модель Isolation Forest для неизвестных атак
- Документация и протестированные playbook реагирования на инциденты
- Обучение вашей команды работе с системой
- Поддержка после запуска
Сроки разработки
| Компонент | Технология | Время разработки |
|---|---|---|
| Event indexer | web3.py / viem subscriptions | 1-2 недели |
| Rule-based detector | Python rules engine | 1-2 недели |
| Invariant monitor | Python + contract calls | 1 неделя |
| Circuit breaker contract | Solidity + OZ Pausable | 1 неделя |
| Alerting pipeline | PagerDuty + Telegram | 3-5 дней |
| ML anomaly detection | scikit-learn | 2-3 недели |
| Defender Autotasks | JavaScript + Defender SDK | 1 неделя |
| Dashboard | Grafana + InfluxDB | 1-2 недели |
MVP система (rule-based + alerting + базовый circuit breaker) — 4-6 недель. Полная система с ML, автоматической паузой, dashboard и playbook-ами — 10-14 недель.
Стоимость рассчитывается после анализа архитектуры моста. Учитывая, что стоимость атаки может достигать сотен миллионов долларов, инвестиции в мониторинг окупаются с первой предотвращённой атакой. Свяжитесь с нами для консультации — оценим ваш проект и предложим оптимальное решение. Закажите разработку системы мониторинга уже сегодня.







