Перейти к содержанию

Solidity: язык и реестр курсов

30 уроков. Общий пример — учебная библиотека и курс 17. Изучайте страницы по порядку: результат предыдущей становится исходным условием следующей.

Профиль основного примера: Solidity 0.8.30, EVM Cancun, Foundry 1.3.1. Дополнительные примеры OpenZeppelin привязаны к Contracts 5.4.0; зависимости не установлены. Это закреплённый учебный профиль, а не обозначение последних версий.

Исходный CourseCatalog сохраняет неизменяемого издателя: publish заменяет отпечаток и активирует запись, deactivate оставляет отпечаток. Версии, роли, токены, платежи и прокси обозначены как отдельные модели. Их листинги нельзя незаметно подставлять вместо базового контракта.

Уроки

  1. Ethereum и EVM: детерминированное выполнение контракта — Граница между состоянием EVM и данными учебного сайта.
  2. Аккаунты и адреса Ethereum: модель издателя — Адрес определяет участника вызова, а не личность или тип интерфейса.
  3. Первый проект Solidity: версия компилятора и профиль — Исходник связан с компилятором, EVM и настройками выпуска.
  4. Развёртывание контракта Solidity: экземпляр и адрес — Манифест связывает сеть, реестр, издателя и ABI.
  5. Gas в Ethereum: лимит и стоимость операции — Различение лимита работы, расхода газа и цены транзакции.
  6. eth_call в Ethereum: чтение состояния без транзакции — Чтение относится к выбранному блоку и не публикует транзакцию.
  7. Revert в Solidity: отмена операции и атомарность — Неуспешное действие не оставляет частичный выпуск курса.
  8. Типы Solidity: uint, bytes32 и bool — Каждое поле реестра имеет отдельный смысл и допустимые значения.
  9. bytes и string в Solidity: манифест публикации — Текстовый выпуск определён кодировкой и конкретными байтами.
  10. Хеш публикации в Solidity: что доказывает совпадение — Хеш подтверждает совпадение данных при известном алгоритме.
  11. Storage в Solidity: постоянное состояние контракта — Изменение storage-ссылки меняет запись курса.
  12. Memory и calldata в Solidity: временные данные — Временный массив и входное сообщение имеют разные правила изменения.
  13. Struct в Solidity: структура записи публикации — Course объединяет отпечаток и активность в одну модель.
  14. Mapping в Solidity: ключи и отсутствующая запись — Ключ не создаёт перечислимую таблицу и возвращает стандартное значение.
  15. Constructor и immutable в Solidity: настройка издателя — Право публикации задаётся при создании экземпляра.
  16. msg.sender в Solidity: кто вызывает функцию — Полномочия проверяются по адресу текущего отправителя.
  17. Модификаторы Solidity: проверка onlyPublisher — Обе функции изменения используют одну явную проверку права.
  18. Видимость функций Solidity и вспомогательные операции — External и internal задают маршруты вызова, но не заменяют авторизацию.
  19. Custom errors в Solidity: собственные ошибки контракта — Ошибки Unauthorized, InvalidCourse и NotActive отражают разные условия.
  20. Events в Solidity: события реестра публикаций — Логи показывают успешные переходы, текущее состояние читается отдельно.
  21. ABI смарт-контракта: кодирование вызовов Solidity — Сигнатура и типы задают кодирование вызова и ответа.
  22. Массивы в Solidity: ограничения и пагинация — Размер ответа и число операций заданы отдельными пределами.
  23. Время блока в Solidity: сроки действия записи — Срок относится к явно введённой модели, а не к таймеру браузера.
  24. Solidity: публикация и замена записи в реестре — Publish создаёт запись либо заменяет hash и активирует её.
  25. Solidity: деактивация записи с сохранением хеша — Отзыв меняет active, оставляя текущий hash для объяснения истории.
  26. Версии контракта Solidity: реестр CourseCatalogV2 — Каждая новая публикация получает постоянный номер версии в отдельной модели.
  27. Библиотеки Solidity: повторное использование правил — Pure-помощник объединяет проверку значений без новых полномочий.
  28. Наследование в Solidity: расширение реестра — Производный viewer наследует настройки, но читает отдельный экземпляр.
  29. Solidity: проверка манифеста публикации — Сайт сопоставляет сеть, запись и конкретный внешний файл.
  30. Контракт реестра на Solidity: переходы состояния — Самостоятельный базовый контракт с зафиксированной семантикой публикации и отзыва.

Материалы опубликованы. Учебные примеры, тесты, сети, установка, сборка, коммит и деплой при написании не выполнялись. Общий маршрут Web3.