Аудит смарт-контрактов: интервью
Оглавление:
- Кто такой Рамиль?
- Как давно учится кодингу?
- Что сподвигло учить Solidity?
- Что можно изучить за 3 месяца?
- Как Рамиль нашел работу?
- Что по распорядку дня?
- Какие есть виды аудитов?
- Сколько можно зарабатывать?
- Как AI влияет на аудит?
- С чего вообще начать?
- Топ три совета по обучению?
- Что по карьерному росту?
- Что можно сделать прямо сейчас?
Всем wuzzup! На связи Яша, а вот мой канал. Сегодня погрузимся в тонкости web-3 Security Research'а и узнаем много интересного об этой профессии.
А для того, чтобы рассказ получился полезным и практичным — я решил сделать его в формате интервью. Нашим сегодняшним гостем будет Рамиль с канала Noobing Security Research. Он уже работает аудитором в part-time формате и имеет глубокое понимание по этому карьерному треку. Погнали разбираться!
1. Расскажи про себя. Как в крипту пришел? Чем до этого занимался?
Про крипту знаю давно, сначала просто услышал что-то про биткоин, про принципы децентрализации и всё такое, на уровне идеи мне тогда понравилось всё. В 2017 купил немного эфира по 300$, который успешно улетел в трубу в ICO-лихорадке, после чего я забил на 5 лет.
По образованию я геофизик и какое-то время вахтовал на северах, но работать бок о бок с медведями мне надоело, так что с 2019 я подался в программисты.
В 2022 я вернулся уже с намерением работать в криптовалютах, но без понимания что и как делать. Поэтому вписался в Венчурез. Это такая школа/сообщество, которая за небольшую плату погружает тебя в комьюнити с еженедельными вебинарами, гайдами по выносу проектов и прочее. Состою там до сих пор, а первый дроп мне прилетел за отработку Arbitrum. Сейчас это уже звучит дико, но в конце 22 года проект прислал токенов на тысячу долларов за 23 транзакции в сети. Так что я понял, что найду чем заняться в этой области.
2. Я так понимаю, что до аудита смарт-контрактов, ты уже был погружен в кодинг? Как давно прогаешь и как оценишь свой скил?
С 2019 года я начал работать и параллельно учиться программированию. Меня взяли на испытательный срок с околонулевыми знаниями, но вакансия не предполагала чистый кодинг. Надо было быть еще менеджером, работать паяльником и вообще познать все радости приборостроения. Так что первые пару лет я набирал базу.
С 2023 работаю только с кодом. За всё это время у меня практически не было стабильного стека, он менялся раз в 1-2 года. В общем, делал то, что надо делать здесь и сейчас. Так что лезть в новые сферы и в них копаться можно назвать одним из моих скилов.
Оцениваю себя как зрелого программиста. Много в чем шарю, еще больше — в чем не шарю. Но это меня не расстраивает, тк всё необходимое приобретается со временем по дороге.
3. Что вообще сподвигло пойти учить Solidity и копать в Security Research?
Хорошо, когда знаешь свои сильные стороны. Становиться инфлом, крутить ретро, ботоводить, сидеть в мем-тренчах - всё это я пробовал, но быстро от этого уставал, потому что это просто не моё. С другой стороны, разработка мне нравится, но я не знал никого, кто писал бы на солидити, надо было придумать план.
Начать учить солидити я собирался год, но то времени нет, то еще что-то. Попытки были, но не системные.
Весной 2024 я подумал, что откладывать вечно меня не устраивает. Кто-то из окружения как раз рассказывал про школу GUIDE DAO, отзывы были сугубо положительные. Я к этому моменту уже понимал силу сообществ, так что взял кредит на 150к и вписался в обучение.
Это был правильный ход. Одна из фишек гайд дао в том, что они проводят хакер хаусы, где собирают команды студентов и те пилят проекты на тему, которую выбирают все вместе. Собственно, вы по факту делаете рабочий проект.
Хакер хаус стартовал в ноябре, то есть у меня было 6 месяцев, чтобы неспешно проходить курсы, тк их там несколько по уровням и по технологиям. Я прошел курс по JS, базовый по Solidity и часть продвинутого по Solidity.
Писали мы его где то месяцев 5-6, пару раз переписывали, кто-то отваливался в процессе, это нормальная история. В итоге мы решили не расходиться по завершении хакер хауса.
В общем, в какой-то момент я искал как нам подтянуть прайс фиды (информация о цене актива) в свой контракт для расчета свапа. Искал я это на сайте Chainlink, который на этом и специализируется. Там мне попалась плашка о профессиональной сертификации разработчиков Solidity компанией Cyfrin.
Cyfrin - это одни из крутейших спецов, которые занимаются вопросами безопасности в solidity, так что я не помню с чего началось конкретно (скорее всего, это был rekt test), но на очередном созвоне с командой я сказал, что походу ухожу в сторону аудита, потому что то, что мы делаем сейчас, не пройдет проверку примерно сразу.
Кстати, корректно говорить security research, но, поскольку везде по миру укоренился термин аудит, продолжим использовать его.
4. Твой канал создан в начале лета. По твоему опыту, насколько глубоко можно за 3 месяца погрузиться в это направление? Ну и к какому результату реально прийти?
Сильно зависит от базы. Я слышал мнение, что в аудит можно идти с 1-2 годами опыта в Solidity разработке. В целом, это звучит корректно, потому что для того, чтобы понимать откуда может прилететь атака, неплохо бы разобраться, как это всё вообще работает.
Если ты уже умеешь в разработку, то и перекат на Solidity, и дальнейший уход в Security Research будет быстрее, чем у человека без такой подготовки, это понятно. Если брать мой опыт, то через пару месяцев практически ежедневного обучения по 1-2-5 часов можно выйти на уровень, когда ты готов делать адекватный аудит. Возможно, не потрясающий, но такой, который не стыдно показывать людям из индустрии.
5. Знаю, что ты уже нашел part-time работу по аудиту. Расскажи поподробнее про устройство: как нашел? В каком формате был собес и что спрашивали?
Прозвучу банально, но помог нетворкинг. Мне написал разработчик, с которым мы строили протокол на хакер хаусе. Он описал концепцию, которую они на работе хотят воплотить в смарт контракте. Спросил, насколько это по моему мнению безопасно звучит. Там было два подхода, и я просто в сообщении описал ему вектора атак для обоих случаев, он передал мои рассуждения своему начальнику, а того это впечатлило. Так что на следующее утро у меня уже был созвон с ним и его руководством.
Я рассказал про свой опыт в разработке, про то, какие трудности и уязвимости у них скорее всего могут возникнуть в реализации концепта. Этого оказалось достаточно для подтверждения моей экспертности, так что мы договорились по часовой ставке, и уже со следующего дня я приступил к работе.
6. Как проходят рабочие будни? Что по рутине и распорядку дня?
Мой распорядок дня не сильно поменялся, тк никуда не делась основная работа. Аудитом я занимаюсь около 5-10 часов в неделю по этому проекту + посвящаю ему свободное время, тоже часов 10 в неделю.
В целом, распорядок дня в идеале такой:
- Подъем в 7:00-7:30
- Тренировка
- Завтрак
- Рабочий день начинается в 10-12, заканчивается в 19-21.
В процессе пара больших перерывов (до часа) и несколько перерывов поменьше (5-15 минут). В понятие работы я закладываю и рабочие задачи с основной работы, и обучение, и вообще всё, что заставляет мозг трудиться - Трогать траву
- К 12 хорошо бы уже лечь спать
Конечно, это примерный план дня, он достаточно гибкий, потому что я работаю из дома или из коворкинга, да и жизнь может вносить коррективы. Главное — не забывать спать, двигаться и нормально питаться.
На выходных стараюсь отключаться от того, что делал на неделе. Но если, например, не было времени на учебу или я считаю, что мало узнал, то на выходных, скорее всего, один день будет занят какой-нибудь статьей.
7. Насколько я понял, в этом направлении есть разные варианты по работе: можно фрилансить, можно в баг-баунти программах сидеть, а 3ий вариант — фултайм в каком-либо проекте или аудиторской компании воркать. Поделись своим мнением по поводу этих разновидностей. Где какие особенности, плюсы и минусы?
На самом деле, видов аудитов в широком понимании два: competitive и private.
Первый вид подразумевает, что ты видишь код и ищешь в нем баги. Есть специальные площадки, куда протоколы приносят код, который хотят пропустить через competitive аудит, есть баг-баунти программы, есть возможность исследовать код протоколов и стучаться к ним, если нашел что-то. В общем, на первый план полностью выходит поиск хотя бы одной, но мощной уязвимости.
Второй вид - это частные аудиты, а конечная цель здесь — сделать код безопасным. К поиску уязвимостей тут добавляется комплексная оценка кодовой базы. То есть для тебя важным становится и уровень покрытия тестами, и актуальность документации, и газоэффективность. Понятно, что во главе угла всё равно остается поиск уязвимостей, но для таких аудитов в отчетах будут указаны не только они. Это хлеб аудиторских компаний.
Заниматься и тем и другим видом аудита можно в любой форме: на фрилансе, на постоянке, тут каждый сам выбирает, какой вид занятости ему ближе. Единственное, что если ты работаешь на проекте фуллтайм, то вряд ли твоя работа будет прямо аудиторской. Скорее всего, это будет разработчик, отвечающий за безопасность. Хотя может где-то и нанимают прямо внутреннего аудитора на несколько команд, как бывает с другими редкими экспертами.
Что касается баг-баунти, то надо быть готовым к тому, что это будет фрустрирующий опыт. Если посмотреть на аудиты условного Uniswap, которых десятки, то там в основном не находят ничего. Поэтому, когда крупный протокол выкатывает какой-то новый кусок на аудит в баг-баунти, есть не нулевой шанс, что ты потратишь N часов без находок, как и десятки других спецов.
Еще можно разрабатывать инструменты безопасности, это тоже часть Security research системы. Это одно из направлений в OpenZeppelin, которые являются поставщиками множества безопасных решений для веб3 разработки.
Для меня идеальным вариантом будет устройство в аудиторскую фирму, но я рассматриваю и устройство разрабом с уклоном в безопасность
8. Поговорим про деньги. Давай разобьем позицию на три стадии, аля джун, мидл и сеньор. Сколько можно зарабатывать спустя 3-6 месяцев работы? Сколько после 1,5 лет? Ну и какие возможности открываются, когда ты в нише уже хотя бы года 3?
Естественно, это будет зависеть от рынка, где ты нашел вакансию, хотя веб3 — это наверное самое глобализованное явление, из тех что я знаю.
Еще сразу исключим токены, которые могут выдавать команде как бонусы, потому что этот фактор может сыграть очень по-разному.
Если брать самый широкий диапазон, то я думаю джун может стартовать с 20-50к$ в год, средние зарплаты по ощущениям (это не значит, что мидл, просто средние) примерно в диапазоне 90-150к$ в год, топы получают от 200к$, верхняя планка как будто около 400-500к$.
Надо понимать, что это очень примерно, но кажется соответствует действительности. Думаю, за год работы до сотки точно добраться реально, а дальше уже все зависит только от человека.
Оплата на competitive аудитах и баг баунти зависит от того, сколько человек нашли конкретную уязвимость. За среднюю можно получить 500-1000$, если ее нашло несколько человек. Самая высокая награда, про которую я слышал, составила 100к$
9. Как AI влияет на аудит? Ты часто используешь нейронки в работе? Если да, то какие и где? Также давай дадим пару аргументов, почему в ближайшие лет 5 ИИ агенты не заменят человека в этом деле?
По-моему, пока-что влияет слабо. Я использую нейронки часто, у меня платная версия IDE Cursor, там внутри вшит мультивыбор. Я предпочитаю Sonnet, еще плачу за Грока в X. Соответственно, в курсоре они мне помогают по рабочим вопросам, а с гроком я делаю ресерч.
В апреле выходила статья исследование, я делал её перевод. Там лонгрид из 4 частей, так что я не буду здесь повторяться.
Я не ручаюсь за 5 лет, потому что прогресс даже за последний год очень впечатляющий, но могу подсветить что не так:
Нейронкам сложно в бизнес логику, это просто данность. Если у тебя N контрактов и ты пропишешь ей что где и почему, она все равно может допускать ошибки в части бизнес логики. Просто не увидит, что, например, переменную надо контролировать жестче, потому что на нее много чего завязано. Не поймет, что функция должна быть более защищенной, потому что к ней можно подобраться, если сломать другой контракт. Это всё общие слова, но без конкретных примеров только так.
Мое предположение такое, что сфера очень новая и в обучающих данных просто мало материала про Solidity и аудит. Ну то есть базовые примеры она тебе предоставит, объяснит концепты, но шаг влево — и она начинает плыть, причем достаточно сильно. Проблема в том, что «плывет» она правдоподобно, так что учиться лучше у людей, а нейронки использовать как справочник по конкретным вопросам.
Особенно заметна бесполезность нейронки стала недавно, когда я погрузился в OP коды и знакомился с языком HUFF.
Не стоит забывать, что человеку нужен человек, что настоящего эксперта нейронке не заменить. Есть еще много других аргументов в пользу людей, начиная от устранения последствий вайбкодинга, заканчивая юридическими вопросами типа "кто будет платить, если нейронка ошибется?".
10. Теперь, когда разобрались со всеми тонкостями этой работы, ответь на самый базовый вопрос: а с чего начать вообще? Предлагаю ответить в 2ух вариациях — для тех, кто уже смешарик (шарит в кодинге) и для новеньких (никогда не прогал).
Если никогда не прогал, то начать надо с базы. Есть возможность поступить в профильный универ — поступай. Это реально хороший путь и относительно нетворкинга, и относительно знаний. Если универ позади и надо просто вкатываться - бери курсы. В веб3 знать английский - имба, им надо заниматься параллельно.
Если уже есть опыт в программировании и просто хочется перекатиться, то очень много вакансий требуют Rust.
Что касается солидити, могу посоветовать курсы:
- На русском языке мне понравились только GUIDE DAO
- На английском и вообще в принципе лучшие в своем деле — это CYFRIN.
Я много курсов прошел на своем пути, но эти ребята просто на голову выше большинства. Там выбор из 20+ курсов разного уровня и они постоянно выкатывают новые программы. А еще они полностью бесплатные - Так же на английском достойные курсы у Alchemy, там помимо прочего крутой курс про то, как устроен EVM в принципе, но вот самих курсов немного.
У Cyfrin и Alchemy есть сертификация, это может помочь при трудоустройстве без опыта.
Раньше с солидити часто давали JS/TS, сейчас этого как будто становится меньше. В лучшем, по-моему мнению, фреймворке foundry они не нужны, он заточен под чистый солидити, и это очень удобно.
Из перечисленных платформ security research в максимальном объеме представлен у Cyfrin, там целых два курса по этому направлению. К ним рекомендуется приступать только после базового курса по solidity, базового foundry и продвинутого foundry. Если уже есть опыт, то можно попробовать без них. Я проходил базовый foundry, потому что до этого писал только на hardhat. Периодически добираю то, чего не хватает в продвинутом foundry. Обычно в конкретных уроках по аудиту есть сноски какие концепции понадобятся для текущей темы.
11. Уверен, что за эти 3 месяца изучения ты видел, что и как можно было бы сделать эффективнее. Давай топ-3 твоих ошибки на этом пути.
Я учусь уже достаточно давно, так что это не за 3 месяца, а за несколько лет. И не ошибки, а скорее выводы, которые дают максимальный буст на дистанции.
Самые важные вещи в обучении по-моему опыту:
- Рассчитывать темп.
Мозгу нужны перерывы и сон для усвоения. Сидеть 10+ часов подряд неэффективно на дистанции лет, выгоришь. В общем, распорядок дня, регулярность, дисциплина. Это не спринт, это марафон. - Брать курсы/помощь экспертов.
Структурированные знания прямиком от профи - лучший путь. Это может быть легендарный учебник, видеокурсы, препод. Главное источник системный и ты так же системно к нему обращаешься. И не бойся просить помощи, если что-то непонятно. - Repetition is the mother of skill.
Или повторенье - мать учения. Возвращайся к тому, что уже прошел. Через день, неделю, месяц, год. Работает.
12. Как тут работает карьерный рост? Что нужно делать, чтоб дорасти до мидла? Какой у тебя самого план?
В какой-то момент курса Патрик Коллинз говорит, что мол теперь вы уже можете делать аудиты самостоятельно. Примерно на 2/3 первого курса по аудиту. А в конце курса он говорит: не приступайте ко второму курсу по безопасности, пока не сделаете какой-нибудь аудит (они там говорят как и где искать).
Для меня это было начало июля, так что я тогда решил, что к концу лета надо найти работу, но получилось так, что я нашел ее к концу июля. Я сейчас part-time консультант по безопасности, поэтому ближайшая цель — посмотреть как наш код пройдет внешний аудит.
Я думаю, что Cyfrin дают знания на уровне мидла, если пройти все рекомендуемые курсы. Там очень непростые концепты разбираются на самом деле. Загвоздка в том, что я еще не успел пособеситься в какое-то ощутимое количество мест, так что не могу полностью адекватно оценить. Собственно, рассуждаю исходя из того, что читал по чатам и в твиттере.
Мой следующий шаг - стряхнуть пыль с навыков собеса: подготовить/потренировать самопрезентацию на английском, потренировать обсуждение уязвимостей так же на английском и идти уже собеситься в разные стартапы/аудиторские фирмы. Возможно, что это не пригодится и я пройду в какую-нибудь русскоязычную команду, но лишним не будет.
Что касается роста после курсов, то это чтение отчетов по уязвимостям, статей, практика на учебных кодовых базах. Эти вещи я стараюсь включать в свою рутину.
13. Ну и последнее — если кого-то заинтересовало данное направление после прочтения и он хочет начать копать глубже, что ему сделать в самую первую очередь? А еще чуть чуть мотивации можно дать: Почему считаешь это направление крутым?
В самую первую очередь, понять точку старта, идти на курсы. У Cyfrin очень круто во вступительных роликах Патрик говорит, что надо определить свою мотивацию, которая поможет вам поддерживать дисциплину.
В целом, я рассказал много вокруг профессии, но почти ничего не рассказал о ней самой, так как тогда этот текст был бы в несколько раз длиннее. Посты по теории и практике аудита есть у меня на канале, туда тоже можно подписаться. Я стараюсь делать их исключительно информативными.
Направление крутое, потому что полезно для общества, заставляет думать и хорошо оплачивается. Для меня это звучит как работа мечты =)
Вот такое интервью получилось) Спасибо всем, кто дочитал! Подписывайтесь на мой канал, там еще целая серия подобного материала вас в ближайшее время ждет. И, конечно, на канал Рамиля заходите (особенно, если вас заинтересовал Security Research). Я его сам читаю с начала лета и могу ручаться за качество материалов!
Yasha's Adventures: t.me/yshlfe
Noobing Security Research: t.me/web3securityresearch