Чего стоит аудит

Аудит — это проверка кода по методике, с отчётом на выходе. Считать его знаком безопасности — самая частая ошибка на этом рынке, и обычно об этом написано в самом отчёте.

Коротко

  • Аудит ищет известные классы уязвимостей: повторный вход, переполнение, неверный контроль доступа, сломанную арифметику.
  • Находки делятся по критичности, и отчёт имеет смысл, только если прочитать, что нашли и что команда исправила.
  • Проверка кода ничего не говорит о том, может ли работать экономика за этим кодом.
  • Бейдж — маркетинговый актив; документ — это отчёт, и рассказывают они нередко разные истории.
  • Снятое владение одним движением убирает и админский риск, и возможность починить.

Из чего состоит работа

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

Это полезно и ограниченно. Это поднимает стоимость простого эксплойта. Доказать отсутствие ошибок это не может и не претендует: откройте дисклеймер любого отчёта — там написано ровно это.

Вопрос, который аудиты обычно обходят

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

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

Как прочитать отчёт за пять минут

Открывайте отчёт, а не бейдж. Найдите таблицу находок, прочитайте все записи уровня high и critical и посмотрите на реакцию: исправлено, принято к сведению или оспорено. Затем загляните в раздел про объём проверки — какие контракты и какой коммит проверяли на самом деле.

И проверьте дату. Аудит покрывает версию кода на конкретный момент, а развёрнутый позже контракт может оказаться не тем, который проверяли.

Что это меняет в чтении TurboLoop

  • Аудиторских документов три, и два из них стоит открыть, а не пересчитать.
  • SolidityScan дал протоколу 99.99 без находок critical, high, medium и low — это результат по коду, а не по экономике.
  • HazeCrypto до экономики дошёл: в его отчёте находка высокой критичности на модель ROI и указание, что дивиденды платятся из депозитов других участников.