Выучить Solidity за 30 дней: роадмап по становлению tern.crypto
Навигация по статье:
1. Введение
2. Фишки которые помогут тебе учиться
1. Введение:
Введу тебя в контекст этой работы: есть такой инфлюенсер как Devansh и за всё время он написал только 8 статей, зато статьи эти весьма годные. Я перевел одну из его работ, немного улучшил и добавил к ней оформления для удобоваримости информации. Оригинал всегда можно найти по этой ссылке.
Реализаций для Solidity огромное множество. Начиная с реального вклада в web3 сферу и разработку продуктов, до абузов и реализаций любых необходимых тебе делишек. А также, ты попросту сможешь начать намного глубже понимать устройство тех или иных вещей в крипте.
Сможешь ли ты выучить весь Solidity за 30 дней? Нет, не сможешь.
Сможешь ли ты за 30 дней изучить основы и приступить к разработке реальных проектов с использованием Solidity? Да, сможешь, и эта статья даст тебе полноценный роадмап, следуя которому ты сможешь изучать Solidity гораздо более эффективным способом.
Я уже давно считаю что кодеры это самые важные люди в нашей сфере и толковых девов всегда будет недостаточно, поэтому пилить такие гайды на бесплатной основе - моя отдушина.
2. Фишки от Макса которые помогут тебе учиться.
Не буду нагружать тебя кучей советов, которые ты уже итак слышал, но хочу дать немного основ, которые помогают лично мне.
- "Миша, всё xyйня, давай по новой!" - этот лозунг должен стать твоей мантрой и ты должен продолжать учиться и кодить, несмотря на все траблы, даже если ты Маша, а не Миша.
- Время от времени отходи от рабочего места или откидывайся на спинку стула и пытайся вспоминать материал который ты изучил. Практика извлечения данных из собственной памяти - гораздо эффективнее постоянной зубрежки или пересмотра одного и того же по 10 раз. Также, советую хоть иногда перед сном не залипать в соц. сетях или ютубе, а прокручивать в мыслях всю выученную за день информацию.
- Мы пытаемся стать кодерами, а не учеными-теоретиками, так что в этом деле у нас есть гора возможностей для практики. Не пренебрегай этим и практикуйся везде и всегда. Пиши как можно больше кода и нагружай свой мозг всё новыми и новыми задачками.
- Про спорт, правильное питание и бла-бла-бла ты уже итак прекрасно знаешь и скорее всего это не делаешь, также как и я, но... Высыпайся. Пожалуйста. Сон принципиально важен для работы памяти и обучения. Именно во время сна твой мозг избавляется от большинства тривиальных аспектов воспоминаний и вместе с тем усиливает важные.
- Не учи материал так, как это делают в школах, когда ты тратишь на учебу огромное количество времени, но почти всё это время, поступающая в твоё сознание информация занимает только 10-20% от всех мыслей. Необходимо поддерживать себя в осознанном состоянии и стараться как можно сильнее быть вовлеченным в то, что ты изучаешь.
- Не пытайся сразу выходить за рамки своих возможностей и слишком сильно нагружать мозг информацией. Излишняя старательность может быть вредна. Ты можешь учиться в любом комфортном для себя режиме, но обязательно должен делать это на постоянной основе.
> (Дни с 1 по 5) Javascript: начальный блок
Для изучения Solidity тебе явно понадобится второй язык. Самым подходящим для разработки dApps будет JS, так как на нем написаны популярные фреймворки и он послужит хорошей основой для сайта, а для более low-level вещей подойдут такие языки как Python, Rust или Golang.
Devansh решил собрать подборку материалов именно по языку JS, но сразу говорю - нам нужны конкретно основы, такие как базовое понимание синтаксиса и объектно-ориентированного программирования, а не полноценное изучение языка.
Фундаментальные ру материалы по JavaScript.
Полноценный учебник по JS собран в этой ссылке. Это один из лучших материалов по этому языку.
- Введение в JavaScript
- Справочники и спецификации
- Редакторы кода
- Консоль разработчика
- Hello, world!
- Переменные
- Типы данных
- Преобразование типов
- Базовые операторы и математика
- Операторы сравнения
- Условное ветвление: if, '?'
- Логические операторы
- Оператор нулевого слияния '??'
- Циклы while и for
- Конструкция "switch"
- Функции
- Функциональное выражение
- Стрелочные функции, основы
- Объекты
- Копирование объектов и ссылки
- Сборка мусора
- Методы объекта, "this"
- Конструкторы, создание объектов через "new"
- Преобразование объектов в примитивы
- Класс: базовый синтаксис
- Наследование классов
- Статические свойства и методы
- Приватные и защищённые методы и свойства
- Расширение встроенных классов
- Проверка класса: "instanceof"
- Введение: колбэки
- Промисы
- Цепочка промисов
- Промисы: обработка ошибок
- API промисов
- Промисификация
- Async/await
- Генераторы
> (День 6) Фреймворки
После основ JS и приемлемого понимания объектно-ориентированного программирования, можно сразу же начинать изучать солидити.
Так как мы только начинаем работу, лучше использовать Remix IDE для написания и компиляции кода. По мере накопления опыта и знакомства с языком, можно переходить к использованию более надежных фреймворков, таких как Truffle, Hardhat или Dapptools.
Они пригодятся тебе, так как создание полноценных dApps требует различных технологий и программные фреймворки включают в себя многие из необходимых нам функций.
Хоть мы и не собираемся прямо сейчас использовать это, нам необходимо заранее знать список различных доступных фреймворков и их возможности:
- Truffle - среда разработки, система тестирования, конвейер активов для блокчейнов с использованием EVM и парочка доп. функций.
- Hardhat - профессиональная среда разработки под Ethereum.
- Brownie - среда разработки и тестирования на основе Python.
- Embark - среда разработки и тестирования с уклоном на дополнительные инструменты, интегрированные с Ethereum, IPFS и Whisper.
- Web3j - платформа для разработки блокчейн-приложений на JVM.
- OpenZeppelin SDK - ультимативный сборник инструментов для смарт-контрактов: тулзы для разработки, компиляции, обновления, развертывания и взаимодействия с контрактами.
- Create ETH App - инструмент для создания приложений на базе Ethereum с помощью одной команды. Поставляется с широким предложением UI-фреймворков и DeFi-шаблонов на выбор.
- Scaffold ETH - Ethers.js + Hardhat + React компоненты и хуки для web3. Сборник всего необходимо для того чтобы начать создавать dApps на основе смарт-контрактов.
- Alchemy - платформа для разработки под Ethereum.
- Dapptools - набор CLI инструментов, ориентированных на Ethereum, в соответствии с философией проектирования Unix. Этот набор делает упор на композитивность, конфигурируемость и расширяемость.
> (Дни с 7 по 10) Понимание Solidity
Solidity - объектно-ориентированный, предметно-ориентированный, статически типизированный язык программирования, подобный JS, который создан для разработки самовыполняющихся контрактов, исполняющихся на EVM.
Важный дисклеймер: следующие ссылки ведут на официальную документацию Solidity версии 0.8.9 и по мере выхода новых версий самого Solidity - часть информации в этой подборке будет устаревать.
Когда бы ты не читал этот гайд, в левом нижнем углу проверяй последнюю доступную версию.
День 7:
День 8:
День 9:
День 10:
> (День 11) Перерыв
Devansh в этом дне советует сделать первый перерыв и полноценно отдохнуть. Всецело согласен с этим пунктом, но хочу чтобы ты не забывал: настоящий отдых - это не продолжение сидения за компом, а резкая смена деятельности.
Дабы не перегореть и не выпадать из ритма (что ОЧЕНЬ важно при обучении), не строй из себя героя которому всё нипочем и он может сидеть за материалами по 16 часов в день на протяжении 50-ти лет. Отдыхай. И высыпайся!
> (Дни с 12 по 17) Практика
После изучения самого важного из документации по Solidity, пришло время перейти к написанию кода. Давай попрактикуемся в языке, путем разбора и переписания контрактов, указанных ниже:
День 12:
День 13:
День 14:
День 15:
День 16:
День 17:
> (Дни с 18 по 19) Небольшие проекты
В прошлом блоке мы попрактиковались с кодом в большом количестве разных концепций. Теперь же пришло время применить все эти знания на собственных небольших проектах.
День 18:
День 19:
> (День 20) Перерыв
И снова отдых! В этот раз не буду читать тебе нотации и учить правильной продаже нapкотикoв в... что? ты внимательно меня читаешь? Какие ещё нapкoтики?! Дружище, тебе точно нужен перерыв. Пойди-ка развейся и возвращайся к обучению через 1 день.
> (Дни с 21 по 25) Соображения безопасности
День 21:
День 22:
День 23:
День 24:
День 25:
> (Дни с 26 по 27) Инструменты и фреймворки
Наша цель на эти 2 дня - ознакомиться с существующими инструментами и фреймворками, которые пригодятся нам при проведении аудита безопасности, связанного со смарт-контрактами.
Нет необходимости досконально разобраться во всех этих тулзах. Тебе нужно просто познакомиться с ними, протестировать и поиграться. Делай это for fun!
День 26.
День 27.
> (Дни с 28 по 29) Чтение аудиторских отчетов
В течении этих дней мы просмотрим общедоступные отчеты по аудиту смарт-контрактов и посмотрим, какие уязвимости в реальном мире обычно присутствуют в коде Solidity.
Devansh решил не делиться списком ссылок, так как все из них итак слишком легко находятся благодаря главному источнику информации в web1-web2-web3 и web69 мире - GOOGLE.
> (День 30) Финал
В этом дне ты должен сесть перед монитором, поблагодарить себя за проделанную работу и как следует yeбaть этот монитор за то чт... У тебя опять текст мерещится?! Какой монитор? Давай-ка ты снова отдохнешь хоть 1 день...
Поздравляю тебя с тем, что ты дошёл до конца. Я понимаю что большая часть людей просто сохранит эту статью где-либо и забудет про неё уже завтра, но всё же, так и так найдется парочка ноулайферов вроде меня, которые будут учиться и им это сможет сильно улучшить жизнь, а значит моя работа проделана не зря.
В течении этой недели я закончу работать над статьей со сборником абсолютно всех материалов по солидити, а к концу июля запущу свой третий и последний канал. В нём я буду сразу делиться всеми найденными мной ресурсами, а также буду проводить что-то вроде челленджа, где в течении 30/100 дней буду вместе с тобой изучать тот или иной язык программирования или web3 штуковины. Продолжай быть Stay Tuned со мной.
Я ещё не стал кодером и смог сделать подобный материал только благодаря усилиям со стороны Devansh`a. Если было полезно - поддержи его подпиской и пробегись по его остальным статьям.
А меня всегда можно найти тут: ТГ-канал по DEV | ТГ-канал по Крипте | Твиттер
Ах да, совсем забыл. За то что ты покопался в этом материале, даю тебе уникальный бонус! Это фото сразу 2х тёрнов(крипто) и в задокументированной истории человечества ещё никто не видел этого: