Прочитав эту статью до конца вы поймете какими навыками вам нужно обладать для того, что бы стать smart-contract разработчиком!
В конце статьи прикреплен Solidity developer roadmap.
Разработка смарт-контрактов становится востребований с каждым годом, но не так много разработчиков, которые могут разрабатывать достойные решения в сфере Web3. Если вы хотите стать разработчиком или по крайней мере понять для себя какой путь нужно проделать чтобы вкатиться в эту сферу, заварите чаек и мы уже отправляемся в невероятное приключение.
В данной статье мы рассмотрим базовую концепцию работы смарт-контракт разработчика и дадим Вам roadmap, который сможет довести вас до базового уровня.
Pre-requirements
Смарт-контракты - это программы, которые “живут” и исполняются в блокчейне. Пользователи, которые взаимодействуют со смарт-контрактами вызывают их функции и платят настоящие деньги за исполнение. И об этом стоит помнить, ведь неумело написанный код может потратить лишние десятки, а то и сотни тысяч долларов. Поэтому мы советуем иметь опыт в разработке перед тем как специализироваться на смарт-контрактах, для базы подойдут такие языки как: JavaScript, Python, C и другие.
1. Основы блокчейна
Многим не нравится теоретическая часть, но тут она как никак будет кстати и поможет в дальнейшей разработке смарт-контрактов! Когда мы давали определение смарт-контракту, то мы упомянули что они “живут” и исполняются в блокчейне, а значит смарт-контракт разработчику нужно знать как устроена среда в которой будет исполняться его код. Есть много тонкостей в разработке смарт-контрактов, которые вы можете подчеркнуть для себя при изучении основ работы блокчейна.
Basics: Blockchain | Ethereum | EVM
2. Первые шаги в написании смарт-контракта
Теперь мы можем пробовать писать наши первые смарт-контракты, но встает вопрос: а на каком языке их писать? Обратимся к популярному сервису DefiLama для того, чтобы посмотреть TVL для каждого языка.
По данным из приведенной выше статистики можно выделить два языка:
Solidity
Vyper
Solidity
Определение взято из официальной документации Solidity
Solidity - это высокоуровневый объектно-ориентированный язык для реализации смарт-контрактов. Смарт-контракты - это программы, которые управляют поведением учетных записей в состоянии Ethereum.
В синтаксисе языка можно заметить схожести с такими языками как: C, Python, JavaScript. Подробнее про то, какие языки повлияли на Solidity и как именно - можно ознакомиться по ссылке.
Так как Solidity является самым используемым языком для написания смарт-контрактов, мы будем рассматривать его в качестве основного, но также можно упомянуть Vyper.
Vyper
Vyper - также как и Solidity язык для написания смарт-контрактов для EVM сетей. Данный язык очень похож на Python, поэтому его еще называют питонистическим. Vyper был создан для того чтобы конкурировать с Solidity, а также устранить некоторые недостатки, такие как тяжелый код для чтения из-за: множественного наследования, перегрузок функций и тд, подробнее можно ознакомиться по ссылке.
После того как вы выбрали язык, то нужно приступить к освоению синтаксиса и базовых принципов, с этим могут помочь официальные документации языков:
Solidity: https://docs.soliditylang.org/en/latest/ Vyper: https://docs.vyperlang.org/en/latest/
Мы написали смарт-контракт, что дальше?
После того как смарт-контракт написан - его нужно протестировать, потому что после того как вы развернете его в блокчейне вы не сможете его изменить, а значит ваша ошибка может остаться там на вечно.
Также в этой часте затронем и написание скриптов для взаимодействия с уже развернутыми в блокчейне смарт-контрактами.
Для того что бы тестировать смарт-контракты нам понадобятся две вещи:
Среда разработки.
Несколько библиотек для тестирования.
Вы можете использовать вашу любимую IDE, но мы советуем VS Code, так как для него уже существует множество плагинов, которые могут понадобиться.
Также нам предстоит выбрать среду разработки, на данный момент мы можем выделить две основные:
Hardhat
Удобное окружение для написания смарт-контрактов, встроенный функционал для полного процесса разработки. Многие проекты используют именно это окружение.
Для написание тестов / скриптов используется JavaScript / TypeScript.
Библиотеки, которые вам понадобятся для написания тестов / взаимодействия со смарт-контрактами: Mocha / Chai / Ethers
Больше информации вы сможете найти в официальной документации.
Foundry
Сравнительно новое окружение для разработки, активно набирает базу разработчиков. Часто используется аудиторами смарт-контрактов.
Ключевые преимущества: написание тестов на Solidity, встроенный плагин fuzzing’a.
Стоит заметить, что для комфортного процесса разработки (написания скриптов / взаимодействия с реальным блокчейном) вам может понадобиться интегрировать Hardhat в проект с Foundry. Основываясь на этом советуем вам начать именно с Hardhat.
Больше информации вы сможете найти в официальной документации.
Какой Фреймворк используют самые популярные проекты:
Изучить стандарты.
В сфере смарт-контракт разработки большое количество стандартов, которые описывают и помогают унифицировать определенные виды контрактов, первые стандарты которые вам понадобятся:
EIP-20 (Взаимозаменяемый токен)
EIP-712 (Невзаимозаменяемый токен)
EIP-1155 (Мульти-токен)
EIP-165 (Распознавание интерфейсов)
Не стоит пропускать не один из этих стандартов, так как они очень часто встречаются в процессе разработки и знание тонкостей вам будет только на пользу.
Следующий шаг, изучить популярные проекты.
Часто приходится взаимодействовать с другими смарт-контрактами в том числе биржами, оракулами и еще огромным множеством различных проектов. Мы предлагаем вам заранее изучить код некоторых из них, а также повысить свою насмотренность и подчерпнуть различных фишек:
Uniswap V2 (Децентрализованная биржа)
Uniswap V3 (Децентрализованная биржа)
ChainLink (Взаимодействие с данными из web2)
ENS (Система домменых имен)
AAVE (Протокол кредитования)
Заключение.
Мы разобрали базовый путь смарт-контракт разработчика, самое время начать свой путь!
Понятно что в статье невозможно покрыть абсолютно все моменты, но мы постарались дать унифицированный roadmap, который подойдет для старта практически каждого.
Также для тех, кто дочитал эту статью до конца полагается бонус: Solidity Developer RoadMap - это более подробный RoadMap с покрытием большего количество аспектов, вплоть до конкретных тем в языке Solidity.
Спасибо за внимание! Не стесняйтесь оценить наш труд!
@FutureMarkt