Безопасность: разбор собственного контракта
30 последовательных уроков. Общий пример — учебная библиотека и курс 17. Базовый CourseCatalog сохраняет immutable publisher, publish и deactivate. Для ошибок, средств, источников и обновления вводятся отдельные специально обозначенные лабораторные модели.
Профиль Solidity 0.8.30, EVM Cancun, Foundry 1.3.1; дополнительные OpenZeppelin Contracts 5.4.0. Это закреплённая учебная конфигурация. Листинги, расчёты и наблюдения описывают ожидаемое поведение; программы и проверки при написании не выполнялись.
Уроки
- Безопасность Solidity: модель угроз учебной библиотеки — Активы, роли, входы и последствия описаны до исправлений.
- Безопасность Solidity: границы доверия и источники данных — Контракт, кошелёк, RPC, манифест и сервер имеют отдельные обязанности.
- Безопасность Solidity: все пути административного изменения — Каждое присваивание имеет разрешённый субъект и условия.
- tx.origin в Solidity: риск ошибочной авторизации — Собственная модель посредника объясняет отличие msg.sender.
- Безопасность Solidity: контекст внутренних и внешних вызовов — Call, self-call и delegatecall нельзя заменять по сходству имени.
- Checks-Effects-Interactions в Solidity: порядок действий — Состояние подготовлено до передачи управления внешнему получателю.
- Reentrancy в Solidity: разбор локальной модели — Промежуточное состояние и повторное выполнение разобраны без чужих адресов.
- Межфункциональная reentrancy в Solidity — Общий ресурс защищается по всем маршрутам.
- Безопасность Solidity: проверка результата внешнего вызова — False, revert и успешный return имеют отдельные последствия.
- Безопасность Solidity: нестандартное поведение токена — Полученная сумма и callback требуют собственной модели доверия.
- Безопасность Solidity: входные значения и достижимые состояния — Тип не заменяет ненулевые значения, пределы и связи полей.
- Solidity: переполнение чисел и приведение типов — Checked arithmetic не проверяет предметный смысл сужения.
- Безопасность Solidity: округление и базовые единицы — Направление округления задано для каждой стороны расчёта.
- Безопасность Solidity: ответ оракула и масштаб — Положительное значение, decimals и область допустимости проверены явно.
- Безопасность Solidity: устаревший ответ и недоступность — Предел свежести относится к источнику и бизнес-политике.
- Безопасность Solidity: граница срока действия — Отправка до срока не равна исполнению до срока.
- Безопасность Solidity: псевдослучайность и публичные входы — Block fields не используются для обещания непредсказуемости.
- Безопасность Solidity: зависимость от порядка транзакций — Конкурирующие изменения собственного реестра имеют явные исходы.
- Безопасность Solidity: защита редакционного намерения — Ожидаемая ревизия и срок связывают действие с актуальным состоянием.
- Подписи Web3: домен и защита от replay-атаки — Сеть, проверяющий контракт, действие и поля подписи связаны.
- Безопасность Solidity: Nonce и однократное разрешение — Успех, отказ и повтор используют согласованную политику потребления.
- ERC-1271: проверка подписи смарт-аккаунта — Проверка подписи зависит от состояния контрактного кошелька.
- Безопасность Solidity: отказ обслуживания и локальный ресурс — Один отказ получателя не блокирует работу всей системы.
- Безопасность Solidity: ограниченные циклы и продолжение — Размер одной операции имеет независимый предел.
- Безопасность Solidity: рост постоянного состояния — Коллекции, история и удаление имеют договор хранения.
- Обновление Solidity-контракта: совместимость storage — Новый код читает прежние значения по тем же правилам размещения.
- Безопасность Solidity: путь первоначального назначения прав — Прокси и реализация защищаются от неверного первоначального вызова.
- Безопасность Solidity: полномочия выполняемого кода — Произвольная цель delegatecall не является безопасным плагином.
- Безопасность Solidity: пауза, восстановление и сообщение об инциденте — Реагирование ограничивает действия и не стирает публичную историю.
- Безопасность Solidity: регрессионный сценарий и отчёт — Причина, предпосылки, исправление и остаточные ограничения задокументированы.
Общий маршрут Web3. Материалы опубликованы.