Аудиты от аудитора
Сегодня мы разберемся с аудитами смарт контрактов, а поможет нам в этом Нод Фарм, который имеет опыт в этой сфере и ответит на некоторые вопросы
Что вообще такое аудит? Что он должен выявить и какие задачи выполняет?
Аудит это проверка контракта на уязвимости и так же бекдоры, самая главная задача найти уязвимости до деплоя контракта (это в лучшем случае, но много проектов берут аудиты уже после деплоя), так же проекты с аудитами считаются более проверенными, самыми хорошими аудиторами считаются Certik, SlowMist, Hacken и ConsenSys и если они вам сделали аудит то это явно будет давать вам "гарантию" что контракт не взломают
Можете описать процесс аудирования смарт контрактов? Идет основной упор на нахождение простых дыр или проверка правильности бизнес логики? Каждый ли раз пишутся тесты, или иногда можно обойтись простой «пробежкой глазами»?
Процесс у каждой компании разный, в Cetrik есть подразделения которые отвечают за свою часть логики, кто-то занимается код стайлом а кто-то оптимизацией по газу, в Hacken аудит делают 1-3 человека (в зависимости от количества и сложности кода), кто-то скажет что подход у Cetrik в разы лучше, но при этом у них очень плохая коммуникация между отделами, и из-за этого на больших проектах возможны проблемы. Основной упор идет на нахождения уязвимостей, но в то же время проверяют и код стайл и бест практики по написанию контрактов, я наверное сейчас удивлю людей, но в основном это пробежка глазами, и иногда пишутся тесты (если их нет), знаю компании в которых делают аудиты только на тестах (но зачастую это manual audit), но зачастую в хороших проектах тесты уже прописаны и ты пытаешься найти то что не нашли эти тесты
Как часто к вам приходят действительно уникальные контракты, которые бы было интересно разобрать? Можете рассказать о паре таких
На данный момент 70% заказов приходят уникальных, ибо если твой контракт написан на 90% на библиотеках опензеплина то и аудитить там нечего (только если ради галочки), самым интересным проектом был Sandbox, который деплоит контракты направо и налево, в общей сложности у них было 50+ контрактов, и очень долгое время мы выясняли какие контракты еще актуальные, и еще был заказчик который дал на аудит контракт который был в разработке, и после аудита он просил проверить новую версию и было очень много срача
Какую вы несете ответственность в случае, если контракт после вашего аудита был взломан?
Никакой отвественности, единственная ответственность - репутационная (ибо кому нужны будут аудиты если все контракты и так будут ломать), и вот кстати классный сайт с рект базой
Сколько человек/времени уходит на один контракт? Как между ними бьются задачи?
Как я уже говорил в ответе на второй вопрос, у каждой компании разный подход от разделения по направлениям до разделениям .sol файлов, у каждого подхода есть минусы и плюсы, на контракт времени уходит по разному в зависимости от строчек кода. Когда аудитор не опытный то ему дают наставника который после него перепроверяет контракт, но в целом аудиты делают от пары дней до месяца (опять же зависит от пожелания заказчика, но в целом если контракт большой и очередь большая, то займет это примерно недели 2)
Есть ли у какие-либо шаблоны тестирования, чтобы вы условно могли просто взять контракт, накинуть это шаблонные тесты и сделать так скажем «эксперсс аудит»?
Да, это опенсурс тулзы которыми сразу прогоняют контракты (по типу slither, mythril)
А, про приватные тулзы мне нельзя говорить но они есть, по большей части они не находят ничего полезного, кроме случаев когда это лежит на поверхности
От каких основных факторов зависит стоимость тестирования?
Зависит от статуса компании и количества кода, в некоторых случаях еще идет доплата за срочность
Надеюсь статья была интересной и понятной!