July 13, 2022

Выучить Solidity за 30 дней: роадмап по становлению tern.crypto

Навигация по статье:

1. Введение

2. Фишки которые помогут тебе учиться

3. Роадмап по изучению Solidity:

4. Финальный день и заключение


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 собран в этой ссылке. Это один из лучших материалов по этому языку.


> (День 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х тёрнов(крипто) и в задокументированной истории человечества ещё никто не видел этого: