Чему вы научитесь
- Писать контракты на Solidity 0.8 с учётом модели исполнения EVM, стоимости операций и границ доверия
- Тестировать контракты на четырёх уровнях: unit, интеграция, fuzz на forge-std и инвариантные stateful-сценарии
- Проектировать контроль доступа на ролях и разделять протокол на контракты с минимальными привилегиями
- Работать с токенами ERC-20, ERC-721, ERC-2981 и их расширениями из OpenZeppelin 5
- Использовать подписи EIP-712 и Merkle-доказательства для авторизации вне сети
- Собирать клиентский слой на viem и TypeScript: типизированные вызовы, события, индексатор, CLI
- Разворачивать протокол через Hardhat Ignition с параметрами по сетям и верифицировать исходники
- Измерять и снижать расход газа: упаковка storage, bitmap, транзиентное хранилище, настройки оптимизатора
- Делать контракты обновляемыми через UUPS-прокси, не ломая раскладку хранилища
- Передавать управление протоколом в DAO через Governor и TimelockController
- Проводить базовый аудит: модель угроз, чеклист ревью, поиск классических уязвимостей, отчёт о находках
О курсе
Разработчик, который умеет писать серверный код, при переходе в блокчейн сталкивается не с новым языком, а с новой моделью исполнения. Код стоит денег за каждую операцию. Состояние публично, а транзакции видны до включения в блок. Развёрнутый контракт нельзя исправить патчем. Ошибка в порядке двух строк уводит деньги пользователей. Этот курс — про то, как писать контракты с учётом этих ограничений, а не про синтаксис Solidity сам по себе.
Сквозной проект
Через весь курс идёт один протокол — Passage, продажа и проверка билетов на мероприятия. Он начинается с реестра событий на 60 строк и к концу состоит из одиннадцати контрактов:
- реестр событий с тарифами, окнами продаж и машиной состояний;
- билет как ERC-721 с детерминированным идентификатором и роялти ERC-2981;
- касса с покупкой за стейблкоин, за ETH по ценовому фиду, по подписи permit и по Merkle-доказательству предпродажи;
- казначейство с разделением выручки и pull-выплатами;
- вход по подписанному EIP-712 пропуску с гашением билета через bitmap;
- вторичный рынок с escrow, потолком цены и роялти;
- обновляемый реестр на UUPS с ERC-7201 namespaced storage;
- Governor и TimelockController, которым передаётся управление параметрами.
Рядом с протоколом — клиентский слой на viem и TypeScript: типизированные обёртки, индексатор событий, CLI, скрипты подписи и гашения пропусков, модули Hardhat Ignition для деплоя.
Чем этот курс отличается
Основа каждого урока — исходный код, который компилируется и проходит тесты, а не пересказ документации. Числа в курсе измерены: расход газа снят с реальных прогонов --gas-stats, размеры байткода — с артефактов компилятора, стоимость приёмов оптимизации — с отдельного стенда в проекте.
Безопасность разбирается не списком уязвимостей, а через модель угроз протокола: каждая угроза имеет вектор, контрмеру в коде и тест, который эту контрмеру проверяет. Уязвимые контракты лежат в проекте рядом с исправленными, и к каждому написан тест-эксплойт.
Стек
Solidity 0.8.35 (custom errors, transient storage, ERC-7201), Hardhat 3.15 с плагином viem, viem 2.55+, TypeScript 7, Node.js 24, OpenZeppelin Contracts 5.6, forge-std для fuzz-тестов на Solidity. Легаси-подходов в курсе нет: ни require со строками, ни SafeMath, ни ethers v5, ни hardhat-deploy.
Как проходит обучение
Курс текстовый, без видео: 154 урока в 18 главах. Урок устроен как глава технической книги. Сначала инженерная ситуация, затем разбор решения по исходному коду, затем последствия в реальной сети и типичные ошибки. Заканчивается урок практическим заданием и вопросами для самопроверки. Главы с третьей по пятнадцатую завершаются тестовыми задачами, у каждой есть объяснение, которое видно после неверного ответа.
Сквозной проект выложен целиком: контракты, тесты на Solidity и TypeScript, модули деплоя, клиентский слой, скрипты и документация. Всё запускается локально одной командой, без тестовой сети и без затрат.
Проверяемых заданий на код в курсе нет. Практика построена вокруг локального проекта, который вы собираете и расширяете у себя.
Для кого этот курс
Начальные требования
Уверенное программирование на любом языке и понимание асинхронного кода. Базовый TypeScript или JavaScript: типы, промисы, модули. Опыт работы с командной строкой, npm и git.
Знание блокчейна не требуется: блоки, аккаунты, транзакции, газ и подписи разбираются в первой главе.
Для практики нужен компьютер с Node.js 24 или новее и любым редактором кода. Все запуски идут в локальной симулированной сети — тестовые монеты и кошелёк не обязательны. Главы про деплой и верификацию можно пройти в тестовой сети Sepolia или Polygon Amoy, для этого понадобится бесплатный доступ к RPC и тестовые монеты из крана.
Программа курса
В курс входят
- 154 урока
- 87 тестов
Наши преподаватели
Что вы получаете
- 154 текстовых урока в 18 главах с разбором исходного кода
- Тестовые задачи к главам с третьей по пятнадцатую, с объяснением после неверного ответа
- Полный код сквозного проекта Passage: контракты протокола, учебные контракты с намеренными уязвимостями и тесты на Solidity и TypeScript
- Модули Hardhat Ignition, клиентский слой на viem, индексатор событий и CLI
- Восемь рабочих документов протокола: карта ролей, модель угроз, чеклисты аудита, деплоя и обновления, отчёт внутреннего аудита, раскладка storage, передача управления DAO
- Практические задания и вопросы для самопроверки в каждом уроке
- Доступ к материалам курса без ограничения по времени