НовостиSmartAlert5 мин чтения

400 публичных страниц контрактов и блог о реальных инцидентах

У SmartAlert появились публичные страницы 400 активных контрактов в Ethereum и BNB Chain. Что на странице есть, чего там не будет никогда, как команда забирает страницу своего контракта одной подписью и зачем мы начинаем блог, где реальные инциденты разобраны по минутам.

Сегодня стартуют две вещи: публичный каталог контрактов и этот блог.

Публичный каталог из 400 контрактов

В каталоге есть страница для каждого из 400 активных контрактов: 200 в Ethereum и 200 в BNB Chain1. Открыть её может любой, учётная запись не нужна.

Каталог контрактов на /c: карточки с именем контракта, адресом и сетью

Как отбирали 400

Не по размеру. Крупнейшие контракты сети по числу транзакций — в основном стейблкоины и роутеры ботов. Страница о них никому ничего нового не скажет, и за ними нет команды, которая её ждёт.

Контракт попадает в каталог, если за последние 30 дней он:

  • выпустил минимум три разных события — признак прикладной логики, а не простого токена;
  • выпустил хотя бы одно событие, то есть страница не мёртвая;
  • развёрнут больше 30 дней назад — это отсекает свежий спам и тестовые развёртывания.

Среди них контракты ранжируются по активности и берутся, пока не кончится бюджет сети. Один контракт не может занять больше 5% бюджета, иначе один загруженный пул вытеснил бы сотню интересных контрактов2. В итоге в каталоге токены с настоящей логикой, пулы AMM, рынки кредитования, оракулы, мосты и реестры. Пулы названы по паре и площадке, например «USDC/WETH 0.05% · Uniswap V3». Тестовых сетей в каталоге нет.

Что показывает страница контракта

Публичная страница Compound V3 cUSDCv3: счётчики, блок «забрать страницу», транзакции по часам

На каждой странице — нейтральные факты, те же, что дал бы обозреватель блоков, но уже посчитанные:

  • событий в сутки, сколько разных событий выпускает контракт и какое чаще всего;
  • транзакции по часам, графиком;
  • события по часам, свой график на каждую сигнатуру;
  • дата, с которой есть данные.

Публичная страница — это шаг в час, задержка 15 минут и последние 7 дней1. Храним мы по каждому контракту каталога 30 дней. Оставшиеся 23 дня публично не показываются: они лежат для команды, которая заберёт страницу, об этом ниже.

Чего на странице не будет никогда

  • алертов и правил, которые кто-то поставил на контракт;
  • отклонений от нормы и аномалий;
  • доли неудачных вызовов;
  • того, кто ещё следит за контрактом.

Это решение, а не недоделка. Страница, которую мы выложили без спроса, с надписью «30% вызовов падает» читается как обвинение, даже если число верное. Без знания протокола никто не скажет, проблема это или норма для этого контракта. Такие числа принадлежат команде, которая ведёт контракт, в закрытой части продукта2.

Заберите страницу, если контракт ваш

На каждой странице есть блок «Это ваш контракт?» с кнопкой «Забрать страницу». Доказательство — одна подпись:

  1. SmartAlert выдаёт сообщение для подписи. В нём сеть, контракт и ваш проект. Оно одноразовое и живёт пять минут.
  2. Вы подписываете его адресом, который сам контракт называет управляющим. Подходит любой из трёх:
    • адрес, который возвращает owner();
    • держатель DEFAULT_ADMIN_ROLE;
    • админ прокси или владелец контракта ProxyAdmin.
  3. Если этот адрес — Safe, подписывает Safe. Совладельцы собирают подписи в Safe{Wallet} как обычно, а сообщение живёт сутки, чтобы они успели.
  4. SmartAlert читает текущего владельца из сети и проверяет, что подпись от него.

«Я его развернул» мы доказательством не считаем. Доказательство одно: текущее право управлять контрактом, прочитанное из сети. Если контракт отказался от владельца и у него нет ни роли админа, ни админа прокси, подписать за него некому, и мы так и говорим2.

Если ключа владельца под рукой нет, контракт всё равно можно добавить в проект по адресу. Данные те же, только без claim.

Что вы получаете, забрав страницу

  • Уже собранную историю. Страница показывает 7 дней, а ваш проект читает всё, что мы сохранили. Новый проект 14 дней работает как Pro и читает до 90 дней назад3. Для контракта из каталога эта история уже есть: догружать нечего и ждать нечего.
  • Предложенные правила, проверенные на этой истории. SmartAlert предлагает правила для контракта, и до включения видно, как каждое сработало бы на прошлых данных. Порог, проверенный на месяце данных, не разбудит вас в три ночи впустую.
  • Управление страницей. Скрыть её из каталога можно в один клик, без письма в поддержку. Скрытие мгновенное, и следующий пересчёт каталога её не вернёт. Вернуть её можете только вы2.
  • Публичную статус-страницу, если захотите. Проект с подтверждённым владением может включить /status/<имя> со сбоями, которые подтвердила его команда, и бейдж для README. Ничего закрытого туда не попадает: ни метрик, ни порогов, ни значений2.

Блог о реальных инцидентах

Легко сказать, что мониторинг поймал бы последний взлом. Мы показываем минуты.

В каждом посте — взлом, который признал сам протокол, со ссылкой на его разбор. Дальше по шагам:

  • как устроен атакованный контракт, простыми словами, для тех, кто пост-мортем не читал;
  • атака по шагам: каждая транзакция со временем блока и ссылкой на Etherscan;
  • где сработало бы правило SmartAlert: имя правила, когда пришёл бы алерт и сколько минут оставалось до вывода;
  • где наши правила не помогли бы и почему.

Задержка — наша реальная. В Ethereum мы читаем блок после 12 подтверждений, это около 144 секунд, поэтому реорг не пришлёт ложную тревогу. Вместе с опросом сети, записью и проверкой правила раз в 60 секунд на Pro алерт приходит примерно через 2,5–4 минуты после блока4.

Правила этих постов:

  • Мы пишем «сигнал за N минут до вывода», но не «предотвратил бы». Алерт даёт время. Средства спасают люди с ключами, и могли ли они успеть — отдельный вопрос, который мы задаём в каждом посте.
  • В каждом посте сказано, чего правило не ловит. Bybit и KiloEx потеряли средства за секунды или пару минут после первого признака. Ни один мониторинг событий или состояния не успевает, и мы так и пишем.
  • У каждого числа есть источник. Сноски ведут на пост протокола, Rekt и аудиторов. То, что мы проверили по сети сами (время блоков, балансы, eth_call на архивных блоках), помечено отдельно.

Первые три поста:

  • IoTeX ioTube, февраль 2026: сигнал о смене владельца за 14 минут до первого вывода из резервов, а команда узнала почти через семь часов.
  • Orbit Bridge, декабрь 2023: пять переводов за 17 минут; после первого алерта в хранилище оставалось $61,5 млн.
  • Ronin Bridge, август 2024: за 48 минут до первого вывода порог голосов был равен 0, и ни одно событие об этом не сказало.

Чтобы не пропускать новые посты, подпишитесь на @smartalert_alex в X.

Источники

  1. 1.Публичный API каталога SmartAlert, GET /api/public/contracts, проверено 2026-10-23: 200 живых контрактов в ethereum-mainnet, 200 в bsc-mainnet. Шаг, задержка и глубина — как напечатано на каждой странице контракта. ↩
  2. 2.SmartAlert, бизнес-правила публичного каталога: критерии отбора, что публично, claim, статус-страница и снятие страницы. ↩
  3. 3.SmartAlert, правила тарифов: 14 дней Pro у нового проекта и глубина чтения 90 дней. ↩
  4. 4.SmartAlert, модель задержки алерта в Ethereum: 12 подтверждений, опрос головы сети до 12 с, запись P95 до 15 с, проверка правила раз в 60 с на Pro. ↩

Попробуйте бесплатно

Достаточно адреса. Первые 14 дней действуют лимиты Pro, а правила проверяются на истории до включения.

Ещё статьи