Два метода решают разные задачи. Путать их дорого. Аудит — чтение кода людьми, ищущими известные классы ошибок, а формальная верификация — математическое доказательство того, что заданные свойства контракта выполняются при любых входных данных без исключений.

Что находит аудит

  • Ошибки доступа: около 953 млн долларов исторических потерь.
  • Повторный вход: 6 типовых схем.
  • Ошибки округления, дающие утечку в доли процента с каждой операции — за год это складывается в заметную сумму.
  • Отклонения от документации: контракт делает не то, что обещано в описании, и такое находят регулярно.

Обзор разработки протоколов перечисляет типовые классы, против которых проектируют защиту: повторный вход, манипуляция оракулом, атаки с флеш-займами, ошибки контроля доступа и просчёты округления или учёта, — и отмечает, что каждый из них уже уносил из протоколов десятки миллионов долларов. Источник

Что доказывает верификация

Она доказывает инварианты. На мой взгляд, это самый недооценённый инструмент отрасли.

  • Сумма балансов всегда равна общему предложению.
  • Вывести можно не больше внесённого — проверяется для 100 % входов.
  • Доказательство работает для всех входов, а не для придуманных проверяющим.

Ограничение одно, зато принципиальное. Верификация подтверждает только сформулированные свойства. Не описали нужное — метод его не проверит и об этом не сообщит.

Разбор уязвимостей формулирует границу применимости жёстко: автоматические сканеры находят синтаксические ошибки, но не экономический замысел, а логика бизнес-уровня требует ручного анализа проектных допущений. Источник

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

Чего не покрывает ни то ни другое

Разбор IOSG критикует сложившуюся культуру: аудиты изучают логику контрактов, программы вознаграждений платят за ошибки модификаторов доступа, верификация доказывает инварианты, а всё вне контракта — мультиподписи, ключи разработчиков, валидаторы мостов, каналы связи команды — негласно считается чужой заботой. Источник

Допущение работает ровно до тех пор, пока атакующие ломают код. В апреле 2026 года оно перестало работать.

Мой способ читать отчёт: сначала раздел об области проверки, а не список находок. Что именно не проверялось — куда полезнее перечня исправленного.

Вывод

Аудит ловит известные ошибки. Верификация доказывает заданные свойства. Операционная безопасность остаётся вне обоих, и разумная позиция вкладчика — считать оба метода необходимыми, но заведомо недостаточными. Подробнее — о чтении отчётов и о правах на обновление.

Частые вопросы

Сколько стоит полноценная проверка?

Разработка протокола с многоэтапным аудитом оценивается в диапазоне примерно от 80 тысяч до миллиона долларов и выше. Сам аудит занимает в этой сумме заметную долю, что и объясняет, почему мелкие проекты его пропускают.

Нужна ли верификация небольшому протоколу?

Как правило нет: метод дорог и оправдан для критичной логики с большим объёмом средств, а небольшому проекту практичнее заказать два независимых аудита у разных команд.

Что важнее: имя аудитора или содержание отчёта?

Содержание. Список из 15–20 исправлений и честное описание области проверки говорят больше, чем логотип на обложке.