Автор статьи: Денис Богданов
Аудитор безопасности смарт-контрактов
Самая обсуждаемая тема в криптосообществе: это как найти Solidity разработчиков, создать свой DeFi проект и на этом поднять большие деньги. Я хотел поделиться с Вами как я с нуля выучил язык программирования Solidity и попал на работу в известную IT компанию.
У меня высшее экономическое образование и опыт работы в банковской сфере более 15 лет. Однако, даже и не думал в страшном сне, что окажусь на улице по причине сокращения штатов в одном, очень известном, государственном банке. Летом 2016 года под сокращение попало более 50% персонала, в том числе и все региональные подразделения. Одним словом политика. Походив по своим высокопоставленным знакомым, я понял, что бывший чиновник никому не нужен и стал думать о смене карьеры. У меня был знакомый программист и по его рассказам я понял, что данные специалисты достаточно неплохо зарабатывают. Но почитав в интернете о популярных языках программирования, я понял, что никогда не смогу конкурировать с ребятами знающими Си++, JS или Java. И тут, я случайно натолкнуться на статью, где рассказывалось о блокчейне, смарт-контрактах и о новом, перспективном языке Solidity, требующем низкого порога вхождения, но тогда мало кому известном.
Для чего нужен язык программирования Solidity?
Solidity — это язык для написания смарт-контрактов, с помощью которого можно создать свою платежную систему и выпускать свою валюту, оказывать банковские услуги, привлекать инвестиции (ICO) в стратапы, создавать децентрализованные организации и многое другое.
Смарт контракты работают в блокчейн сети Ethereum как обычные программы и у них есть одна очень важная особенность: никто не может вмешаться в их работу и поменять их и математический алгоритм.
Как я учил Solidity
Когда я приступил к изучению, язык находился в разработке и документацию по Solidity можно было изучить за неделю. К сожалению, тогда, никаких учебников и курсов не существовало. И если и были одиночные публикации, то только на англоязычных ресурсах.
Понимая, что не возможно , самостоятельно изучить программирование, не понимая базовых элементов кода таких как функция, переменная, массив, цикл. И тут мне на помощь пришли курсы JS для новичков т.к. синтаксис языков были очень похожи.
После месячных курсов, я смог понимать основы программирования и смог писать первые программы на JS и я снова приступил к изучению кода смарт-контрактов. На дворе стоял 2017 год - хайп ICO, где простейший контакт по выпуску токенов можно было написать по готовому шаблону за день и заработать тысячи до двух тысяч долларов. Это было круто. Всем требовались специалисты по блокчейну.
Сложности при изучении Solidity
Самому разобраться в нюансах языка, для меня было достаточно сложно, т.к. до этого я не знал программирования вообще. Интернет, тоже не давал ответы на возникающие вопросы. Я стал искать себе преподавателя, имеющего опыт разработки. Дав несколько объявлений в телеграмме, я понял, что меня учить никто не будет, хотя я предлагал хорошие деньги за уроки.
Главная проблема Solidity в его коварности для программиста. Знающему другие языки программирования не сложно, в короткое время изучить синтаксис, но изучить основные уязвимости языка, чтобы уметь грамотно писать код не просто. Другая проблема это платность выполнения кода в блокчейне, который заставляет нести существенные издержки за не оптимальный код. Но самая большая сложность для новичка это ответственность, что допустив небольшую ошибку владелец контракта может запросто потерять значительные деньги, в некоторых проектах доходящих до десятков миллионов долларов. Такого в программировании еще не было.
Своей удачей, я считаю, что позднее мне удалось попасть на курсы к Алексея Матиясевичу, известного white hat hacker, который во время хакерской атаки спас $31,000,000 от злоумышленников. На его бесплатных уроках мы получали актуальную информацию о уязвимостях контрактов. Ловили каждое слово.
Первая работа в качестве аудитора
Я стал брать частные заказы по написанию не сложных контрактов на различных фриланс биржах. Сделал себе хороший профиль в linkedin, в последствии это сыграло важную роль. Вскоре меня заметили и пригласили на собеседование в одну частную компанию, занимающуюся аудитом безопасности — поиском багов и уязвимостей в смарт-контрактах. Я не очень хорошо решил техническое задание, но тем не менее, меня взяли в компанию, т.к. специалистов знающих Solidity даже на базовом уровне было очень сложно найти. Эта была моя первая работа на удаленке и значительно отличалась от программирования, т.к. нужно было искать ошибки в чужом коде, не всегда понятном. Аудит контракта обычно проводили 3 аудитора, на принципах bug bounty и кто находил больше ошибок, получал больший процент от заявленной стоимости аудита. В то время, аудит был бесплатным для клиентов и оплата работы аудиторов производилась из специального фонда компании. У меня не было опыта аудита, да и коллеги не хотели особенно делиться знаниями, т.к. это могло уменьшить их доходы. Нужно было что-то придумать и я нашел решение. Я стал изучать старые отчеты и формировать базу ошибок. Учитывая, что типовые ошибки, часто повторяются у разработчиков, проверка кода с помощью определенного чеклиста, начала приносить результаты. В начале я выбирал простые контракты и брал количеством кода. В день я мог сделать аудит 5 ICO контрактов и заработать от 100 до 200 долларов. К сожалению в 2019 году интерес к технологии блокчейн сильно упал и компания уже не смогла оплачивать услуги аудиторов. Пришлось, временно, заняться изучением фронтенда и веб разработкой. Тем не менее я очень благодарен этой компании за полученный опыт.
Моя работа в аудиторской компании
И вот, в конце 2020 года, случился новый бум DeFi проектов, использующих технологию смарт-контрактов. Резко, вырос спрос на блокчейн-разработчиков, но смарт-контракты стали значительно сложнее. Благодаря профилю linkedin, мне стали поступать многочисленные предложения от разных зарубежных компаний, в том числе специализирующихся на аудите смарт-контрактов. Я проходил технические задания, но не проходил собеседования по разговорному английскому. Меня это не сильно огорчало, т.к. я искал возможность не заработать, а найти сильную команду, где я бы мог повысить свои компетенции в Solidity и аудите безопасности, желательно русскоговорящую. И я ее нашел.
На меняя вышли представители аудиторской компании с предложением о совместной работе, я прошел устное собеседование и открыл для себя другой мир проектов, где молодые ребята уже меняют мировую экономику, а мне хотелось бы жить в обществе, где люди могут добиться успехов благодаря приобретенным знаниям, а не с помощью кумовства и взяток. Компания не гонится за сиюминутной выгодой, не экономит на оплате сотрудников, а планомерно улучшает качество аудитов. Аудиторы могут общаться между собой, проводить общие тренинги, разбирать новые хаки, подтягивать новичков. Дополнительно, для любых желающих стать аудиторами проводятся бесплатные курсы, лучшим предлагается работа в аудиторской компании. Наверно за несколько месяцев, я получил опыт в аудите, превышающий мои знания полученные за прошлые годы. И сейчас компания аудиторской компании имеет самые высокие мировые рейтинги и может выбирать себе партнеров из крупнейших мировых компаний — лидеров рынка DeFi проектов .
И самое главное, не над чем ты работаешь, а с кем ты работаешь. Я уверен, с такой командой мы сделаем мир смарт-контрактов более безопасным.
Как вы знаете сейчас разработка на блокчейне становится все более популярной. Растет количество проектов в сфере DeFi (децентрализованных финансов), DAO, NFT. И все это разработано на Solidity. Пока у данного языка достаточно короткая документация по сравнению с другими языками программирования. Ее можно прочесть за несколько дней, а за несколько недель уже можно примерно понять, что делать. Разработчики и аудиторы смарт-контрактов стоят сравнительно дорого. Об особенностях языка Solidity, его нестандартном поведении мы поговорим на открытом уроке. Приходите и участвуйте!
На занятии обсудим:
Почему стоит изучить язык Solidity?
Что можно писать на Solidity?
Какие особенности и отличия от других языков программирования есть в Solidity?
Почему несложно перейти на разработку, если владеешь основами JS и Си++?
Сколько зарабатывает Solidity разработчик?
Le205QF
Создавать будущее полное больших надежд-это прекрасно и достойно всяких похвал!