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

Безопасность: разбор собственного контракта

30 последовательных уроков. Общий пример — учебная библиотека и курс 17. Базовый CourseCatalog сохраняет immutable publisher, publish и deactivate. Для ошибок, средств, источников и обновления вводятся отдельные специально обозначенные лабораторные модели.

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

Уроки

  1. Безопасность Solidity: модель угроз учебной библиотеки — Активы, роли, входы и последствия описаны до исправлений.
  2. Безопасность Solidity: границы доверия и источники данных — Контракт, кошелёк, RPC, манифест и сервер имеют отдельные обязанности.
  3. Безопасность Solidity: все пути административного изменения — Каждое присваивание имеет разрешённый субъект и условия.
  4. tx.origin в Solidity: риск ошибочной авторизации — Собственная модель посредника объясняет отличие msg.sender.
  5. Безопасность Solidity: контекст внутренних и внешних вызовов — Call, self-call и delegatecall нельзя заменять по сходству имени.
  6. Checks-Effects-Interactions в Solidity: порядок действий — Состояние подготовлено до передачи управления внешнему получателю.
  7. Reentrancy в Solidity: разбор локальной модели — Промежуточное состояние и повторное выполнение разобраны без чужих адресов.
  8. Межфункциональная reentrancy в Solidity — Общий ресурс защищается по всем маршрутам.
  9. Безопасность Solidity: проверка результата внешнего вызова — False, revert и успешный return имеют отдельные последствия.
  10. Безопасность Solidity: нестандартное поведение токена — Полученная сумма и callback требуют собственной модели доверия.
  11. Безопасность Solidity: входные значения и достижимые состояния — Тип не заменяет ненулевые значения, пределы и связи полей.
  12. Solidity: переполнение чисел и приведение типов — Checked arithmetic не проверяет предметный смысл сужения.
  13. Безопасность Solidity: округление и базовые единицы — Направление округления задано для каждой стороны расчёта.
  14. Безопасность Solidity: ответ оракула и масштаб — Положительное значение, decimals и область допустимости проверены явно.
  15. Безопасность Solidity: устаревший ответ и недоступность — Предел свежести относится к источнику и бизнес-политике.
  16. Безопасность Solidity: граница срока действия — Отправка до срока не равна исполнению до срока.
  17. Безопасность Solidity: псевдослучайность и публичные входы — Block fields не используются для обещания непредсказуемости.
  18. Безопасность Solidity: зависимость от порядка транзакций — Конкурирующие изменения собственного реестра имеют явные исходы.
  19. Безопасность Solidity: защита редакционного намерения — Ожидаемая ревизия и срок связывают действие с актуальным состоянием.
  20. Подписи Web3: домен и защита от replay-атаки — Сеть, проверяющий контракт, действие и поля подписи связаны.
  21. Безопасность Solidity: Nonce и однократное разрешение — Успех, отказ и повтор используют согласованную политику потребления.
  22. ERC-1271: проверка подписи смарт-аккаунта — Проверка подписи зависит от состояния контрактного кошелька.
  23. Безопасность Solidity: отказ обслуживания и локальный ресурс — Один отказ получателя не блокирует работу всей системы.
  24. Безопасность Solidity: ограниченные циклы и продолжение — Размер одной операции имеет независимый предел.
  25. Безопасность Solidity: рост постоянного состояния — Коллекции, история и удаление имеют договор хранения.
  26. Обновление Solidity-контракта: совместимость storage — Новый код читает прежние значения по тем же правилам размещения.
  27. Безопасность Solidity: путь первоначального назначения прав — Прокси и реализация защищаются от неверного первоначального вызова.
  28. Безопасность Solidity: полномочия выполняемого кода — Произвольная цель delegatecall не является безопасным плагином.
  29. Безопасность Solidity: пауза, восстановление и сообщение об инциденте — Реагирование ограничивает действия и не стирает публичную историю.
  30. Безопасность Solidity: регрессионный сценарий и отчёт — Причина, предпосылки, исправление и остаточные ограничения задокументированы.

Общий маршрут Web3. Материалы опубликованы.