«Audited by CertiK» в шапке сайта продаёт токен так же надёжно, как логотип платёжной системы продаёт интернет-магазин. Проблема в том, что сама по себе эта строчка ничего не гарантирует, и рынок доказывал это раз за разом. В марте 2023-го протокол Euler Finance потерял около 200 миллионов долларов на баге в функции донейшенов — баге, который прошёл мимо как минимум четырёх независимых аудиторских компаний, включая тех, чьи отчёты и правда лежат в открытом доступе. Тебе не обязательно читать Solidity, чтобы отличить настоящую проверку от бумажки для галочки. Нужно знать, куда смотреть в самом отчёте и вокруг него — и это можно сделать за двадцать минут, вооружившись только браузером.

Слово «аудит» — это факт найма, а не гарантия

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

Кто именно смотрел код и на каких условиях

Дальше — вопрос репутации и стимулов. У серьёзных фирм — OpenZeppelin, Trail of Bits, Consensys Diligence, Spearbit, Zellic, Certora с её формальной верификацией — есть публичная история отчётов, узнаваемый стиль работы и репутация, которую жалко терять из-за халтуры. Их имя на отчёте — не гарантия, но серьёзный аргумент. Другое дело — фирма без единого узнаваемого прошлого проекта, чей сайт появился за месяц до аудита, или ситуация, когда оплата прошла токеном самого проекта: аудитор в этом случае прямо заинтересован в том, чтобы токен вырос, а значит — в мягком отчёте. Проверь имя фирмы отдельным поиском: сколько у неё известных клиентов, упоминалась ли она в разборах взломов как пропустившая уязвимость, есть ли у неё живой сайт с архивом отчётов или только страница-визитка.

Читай отчёт, а не значок

Если отчёт вообще существует и доступен по ссылке (а не просто упомянут словами «мы прошли аудит»), в нём стоит проверить четыре вещи за пару минут.

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

Границы проверки (scope). Аудит мог покрывать только токен-контракт, а не мост, не хранилище, не механизм апгрейда — именно там чаще всего и случаются самые дорогие взломы. Раздел «Scope» в начале отчёта прямо перечисляет, какие файлы смотрели.

Список находок и их статус. Каждая уязвимость помечена уровнем серьёзности — Critical, High, Medium, Low, Informational — и статусом: Resolved (исправлено), Acknowledged (признано, но не исправлено) или Won't Fix. Отчёт с десятком закрытых Medium — это нормальная рабочая история. Отчёт, где Critical или High стоит с пометкой Acknowledged без объяснения — красный флаг вне зависимости от того, чей логотип сверху.

Публичность самого документа. Настоящий отчёт лежит на сайте аудиторской фирмы или в её собственном GitHub, с указанием даты и подписью команды. PDF, который хостит только сам проект и нигде больше не встречается, стоит перепроверять вдвойне.

Сверь бумагу с блокчейном

Это шаг, который пропускает почти каждый, хотя он не требует ничего, кроме блокчейн-эксплорера. Открой Etherscan (или его аналог для нужной сети), найди контракт по адресу и посмотри на вкладку «Contract»: помечен ли код как Verified — то есть совпадает ли опубликованный исходник с тем, что реально исполняется. Если контракт не верифицирован, аудит теряет смысл: ты не можешь знать, действительно ли развёрнутый байт-код соответствует тому, что смотрели аудиторы.

Дальше зайди во вкладку «Read Contract» и «Write Contract» и поищи функции с модификатором вроде onlyOwner: mint, pause, setFee, withdraw, upgrade. Это рычаги, которые дают владельцу контракта прямую власть над твоими деньгами — вплоть до бесконечной допечатки токенов или полной остановки вывода средств. Сам по себе такой рычаг — не приговор, у многих легитимных протоколов есть административные функции на случай экстренной ситуации. Вопрос в том, кто именно владелец. Один анонимный кошелёк — риск. Мультиподпись из трёх-пяти известных участников с публичным таймлоком в 24–48 часов на любое изменение — совсем другой уровень доверия, потому что у сообщества есть время заметить и отреагировать до того, как решение вступит в силу.

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

Признаки, которые видно без единой строчки кода

Есть набор сигналов, читаемых чисто по оформлению, без технической подготовки. Аудита нет вообще, есть только зелёная галочка на сайте без ссылки на отчёт — это не аудит, это дизайн-элемент. Аудит датирован тем же днём, что и запуск токена, при явно сложном контракте — на серьёзную проверку большого кода нужны недели, а не сутки. Найденные Critical- или High-уязвимости закрыты словом «исправлено» без диффа кода, который можно было бы свериться. У проекта нет программы bug bounty — притом что у серьёзных протоколов с крупным TVL она почти всегда есть, потому что живое сообщество исследователей безопасности ловит больше, чем разовая проверка. И, наконец, сам факт, что маркетинг напирает на слово «аудит» сильнее, чем на то, что именно аудит нашёл — это тоже сигнал, только уже не про код, а про то, кому и зачем нужно, чтобы ты не читал отчёт целиком.

Ты не станешь аудитором за один вечер, и это не требуется. Требуется не отдавать суждение целиком в чужие руки — ни маркетингу проекта, ни логотипу известной фирмы, наклеенному на футер сайта. Пять проверок из этого текста — дата и scope отчёта, статус находок, верификация кода на эксплорере, права владельца контракта — не докажут тебе, что протокол безопасен. Но они за двадцать минут покажут, врёт ли кто-то в шапке сайта или нет. В мире, где решение доверить деньги смарт-контракту принимаешь ты сам и в одиночку, это не паранойя — это минимальная плата за то, чтобы взвешивание твоего Иб проходило по твоим собственным весам, а не по чужим.