blockchain

Учебник Solidity для начинающих

18 уроков · 6 разделов · бесплатно, без регистрации

Полный практический курс по программированию смарт-контрактов на Solidity для Ethereum. От устройства виртуальной машины EVM и газа до токенов ERC-20/ERC-721 и безопасности: reentrancy, контроль доступа, оракулы. Каждый урок — с ASCII-схемами исполнения и запускаемыми Python-врезками, повторяющими логику контрактов.

Курс «Solidity: смарт-контракты» состоит из 6 разделов и 18 уроков: Введение, EVM и первый контракт, Типы данных и переменные состояния, Функции, модификаторы и события, Маппинги, структуры и массивы, Токены: ERC-20 и ERC-721 и Безопасность смарт-контрактов. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение, EVM и первый контракт

    1. Что такое смарт-контракт и Ethereum

      Объясняем, что такое смарт-контракт, чем Ethereum отличается от обычного бэкенда и зачем нужен блокчейн для исполнения кода.

    2. Устройство EVM: стек, память и хранилище

      Разбираем три области данных EVM — stack, memory, storage — и почему понимание их различий критично для газа и корректности.

    3. Remix, первый контракт и деплой

      Пишем, компилируем и деплоим первый контракт в Remix IDE, разбираем структуру файла Solidity и SPDX-лицензию.

  2. 2 Типы данных и переменные состояния

    1. Числовые типы и арифметика без переполнения

      Целые типы uint/int, фиксированный размер, и встроенная защита от переполнения в Solidity 0.8.x.

    2. Адреса, булевы значения и байты

      Тип address и address payable, bool, bytes и bytes32, а также разница между фиксированными и динамическими байтами.

    3. Переменные состояния, видимость и константы

      Storage-переменные, модификаторы видимости public/private/internal, ключевые слова constant и immutable и их влияние на газ.

  3. 3 Функции, модификаторы и события

    1. Функции: видимость и мутабельность

      public/external/internal/private и view/pure/payable: как объявлять функции и что они могут делать с состоянием.

    2. Модификаторы доступа и require

      Кастомные модификаторы, require/revert/custom errors и паттерн onlyOwner для контроля доступа.

    3. События и логи

      emit, indexed-параметры, для чего нужны логи и как их читают фронтенд и индексаторы.

  4. 4 Маппинги, структуры и массивы

    1. Маппинги: ключ-значение в блокчейне

      mapping как основная структура хранения, отличия от хэш-таблицы, вложенные маппинги и почему по ним нельзя итерироваться.

    2. Структуры и перечисления

      struct для группировки данных, enum для состояний, и комбинация struct + mapping как основной паттерн хранения сущностей.

    3. Массивы, циклы и проблема газа

      Динамические и фиксированные массивы, push/pop, и почему циклы по растущим массивам опасны из-за лимита газа.

  5. 5 Токены: ERC-20 и ERC-721

    1. Стандарт ERC-20: что такое токен

      Интерфейс ERC-20, функции transfer/balanceOf/approve, decimals и почему стандарт делает токены совместимыми.

    2. approve, transferFrom и allowance

      Паттерн делегированного списания: как approve и transferFrom позволяют контрактам тратить ваши токены, и риск гонки allowance.

    3. ERC-721 и NFT

      Невзаимозаменяемые токены: ownerOf, tokenId, метаданные tokenURI и чем NFT отличается от ERC-20.

  6. 6 Безопасность смарт-контрактов

    1. Reentrancy: атака и защита

      Как работает атака повторного входа, паттерн checks-effects-interactions и модификатор nonReentrant.

    2. Контроль доступа и tx.origin

      Ownable, ролевой доступ, и почему авторизация по tx.origin открывает фишинговую атаку.

    3. Арифметика, оракулы и чеклист аудита

      Переполнение и unchecked, риски ценовых оракулов и манипуляции, и практический чеклист перед деплоем.