Solidity: язык и реестр курсов
30 уроков. Общий пример — учебная библиотека и курс 17. Изучайте страницы по порядку: результат предыдущей становится исходным условием следующей.
Профиль основного примера: Solidity 0.8.30, EVM Cancun, Foundry 1.3.1. Дополнительные примеры OpenZeppelin привязаны к Contracts 5.4.0; зависимости не установлены. Это закреплённый учебный профиль, а не обозначение последних версий.
Исходный CourseCatalog сохраняет неизменяемого издателя: publish заменяет отпечаток и активирует запись, deactivate оставляет отпечаток. Версии, роли, токены, платежи и прокси обозначены как отдельные модели. Их листинги нельзя незаметно подставлять вместо базового контракта.
Уроки
- Ethereum и EVM: детерминированное выполнение контракта — Граница между состоянием EVM и данными учебного сайта.
- Аккаунты и адреса Ethereum: модель издателя — Адрес определяет участника вызова, а не личность или тип интерфейса.
- Первый проект Solidity: версия компилятора и профиль — Исходник связан с компилятором, EVM и настройками выпуска.
- Развёртывание контракта Solidity: экземпляр и адрес — Манифест связывает сеть, реестр, издателя и ABI.
- Gas в Ethereum: лимит и стоимость операции — Различение лимита работы, расхода газа и цены транзакции.
- eth_call в Ethereum: чтение состояния без транзакции — Чтение относится к выбранному блоку и не публикует транзакцию.
- Revert в Solidity: отмена операции и атомарность — Неуспешное действие не оставляет частичный выпуск курса.
- Типы Solidity: uint, bytes32 и bool — Каждое поле реестра имеет отдельный смысл и допустимые значения.
- bytes и string в Solidity: манифест публикации — Текстовый выпуск определён кодировкой и конкретными байтами.
- Хеш публикации в Solidity: что доказывает совпадение — Хеш подтверждает совпадение данных при известном алгоритме.
- Storage в Solidity: постоянное состояние контракта — Изменение storage-ссылки меняет запись курса.
- Memory и calldata в Solidity: временные данные — Временный массив и входное сообщение имеют разные правила изменения.
- Struct в Solidity: структура записи публикации — Course объединяет отпечаток и активность в одну модель.
- Mapping в Solidity: ключи и отсутствующая запись — Ключ не создаёт перечислимую таблицу и возвращает стандартное значение.
- Constructor и immutable в Solidity: настройка издателя — Право публикации задаётся при создании экземпляра.
- msg.sender в Solidity: кто вызывает функцию — Полномочия проверяются по адресу текущего отправителя.
- Модификаторы Solidity: проверка onlyPublisher — Обе функции изменения используют одну явную проверку права.
- Видимость функций Solidity и вспомогательные операции — External и internal задают маршруты вызова, но не заменяют авторизацию.
- Custom errors в Solidity: собственные ошибки контракта — Ошибки Unauthorized, InvalidCourse и NotActive отражают разные условия.
- Events в Solidity: события реестра публикаций — Логи показывают успешные переходы, текущее состояние читается отдельно.
- ABI смарт-контракта: кодирование вызовов Solidity — Сигнатура и типы задают кодирование вызова и ответа.
- Массивы в Solidity: ограничения и пагинация — Размер ответа и число операций заданы отдельными пределами.
- Время блока в Solidity: сроки действия записи — Срок относится к явно введённой модели, а не к таймеру браузера.
- Solidity: публикация и замена записи в реестре — Publish создаёт запись либо заменяет hash и активирует её.
- Solidity: деактивация записи с сохранением хеша — Отзыв меняет active, оставляя текущий hash для объяснения истории.
- Версии контракта Solidity: реестр CourseCatalogV2 — Каждая новая публикация получает постоянный номер версии в отдельной модели.
- Библиотеки Solidity: повторное использование правил — Pure-помощник объединяет проверку значений без новых полномочий.
- Наследование в Solidity: расширение реестра — Производный viewer наследует настройки, но читает отдельный экземпляр.
- Solidity: проверка манифеста публикации — Сайт сопоставляет сеть, запись и конкретный внешний файл.
- Контракт реестра на Solidity: переходы состояния — Самостоятельный базовый контракт с зафиксированной семантикой публикации и отзыва.
Материалы опубликованы. Учебные примеры, тесты, сети, установка, сборка, коммит и деплой при написании не выполнялись. Общий маршрут Web3.