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

Solidity: роли, токены и управление

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

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

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

Уроки

  1. Ownable в Solidity: первоначальный владелец контракта — Отдельный реестр имеет передаваемого владельца и явный первоначальный адрес.
  2. Ownable2Step в Solidity: двухэтапная передача владельца — PendingOwner принимает право отдельным действием, прежде прежний owner сохраняется.
  3. AccessControl в Solidity: роли редакции — Publisher, revoker и admin имеют разные права в отдельном EditorialCatalog.
  4. AccessControl в Solidity: администраторы ролей — Граф role-admin показывает прямые и назначаемые полномочия.
  5. Solidity: отзыв роли и самостоятельный отказ — Revoke выполняет администратор роли, renounce — её собственный участник.
  6. Solidity: задержанная передача главного администратора — DefaultAdminRules вводит специальный переход главной роли с ожиданием и принятием.
  7. Pausable в Solidity: пауза и восстановление публикаций — Pausable останавливает выбранные методы и не отменяет уже опубликованные данные.
  8. Мультиподпись в Solidity: полномочия издателя — Реестр доверяет адресу комитета, а согласование происходит внутри него.
  9. Timelock в Solidity: очередь административных решений — Schedule и execute относятся к одним параметрам после заданной задержки.
  10. ERC-20 в Solidity: токен и базовые единицы — Decimals задаёт отображение целого баланса, а не дробную арифметику.
  11. ERC-20: передача учебных кредитов — Transfer меняет балансы выбранного токена и не передаёт редакционную роль.
  12. ERC-20 allowance: расходование от имени владельца — Approve назначает лимит spender, transferFrom использует отдельный маршрут.
  13. SafeERC20 в Solidity: работа с чужим токеном — Обёртка нормализует результат вызова, количество проверяется отдельным договором.
  14. ERC-20 permit: разрешение по подписи владельца — Подпись ERC-2612 назначает лимит, nonce и deadline ограничивают её подачу.
  15. ERC-20: выпуск, сжигание и предел предложения — Mint и burn имеют отдельные права, а lifetime-cap не восстанавливается от сжигания.
  16. ERC-721 в Solidity: индивидуальный абонемент — Коллекция выдаёт уникальный номер абонемента без влияния на редакционные роли.
  17. ERC-721: передача токена и полномочия оператора — Передача номера отличена от разрешения коллекционного оператора.
  18. ERC-721: метаданные и содержание абонемента — URI закреплён отдельно от владения и проверяется по объявленному договору.
  19. Доступ на сайт по токену: проверка права пользователя — Сессия сайта проверяет адрес и право отдельно от публичности файлов.
  20. ERC-1155 в Solidity: несколько видов ресурсов — Один экземпляр учитывает количество для каждого вида ресурса.
  21. ERC-1155: пакетная передача и связь массивов — Набор выдаётся атомарно с явной границей размера и правилом повторных идентификаторов.
  22. Receiver hooks в Solidity: приём токенов и полномочия — Приём ресурса отделён от авторизации дальнейшего распоряжения.
  23. Solidity: делегирование и сила голоса — Голосующий токен различает владение единицами и делегированное участие.
  24. Solidity: история голосов и снимки состояния — Исторический вес читается по согласованной шкале времени и не заменяется текущим балансом.
  25. OpenZeppelin Governor: предложение и подсчёт голосов — Отдельный Governor задаёт задержку, срок, порог и правило результата.
  26. Solidity Governor: голосование, очередь и исполнение — Маршрут через Timelock отделяет успех голосования от изменения целевого реестра.
  27. Миграция Solidity-контракта: новый экземпляр и состояние — Миграция описывает данные, полномочия и историю без обещания автоматического переноса.
  28. Прокси-контракты в Solidity: delegatecall и storage — Прокси отделяет исполняемый код от состояния и требует собственной модели доверия.
  29. Initializer в Solidity: настройка upgradeable-контракта — Инициализация прокси отделена от заблокированной реализации.
  30. Обновление Solidity-контракта: storage и права релиза — Изменение версии добавляет поля без незаметной перестановки старого состояния.

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