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

Foundry: проверяемая локальная лаборатория

Лаборатория развивает один реестр учебных выпусков: сначала договор и отдельные сценарии, затем генерация входов и последовательностей с независимой моделью. После этого изучаем отдельные адаптеры, время, известный локальный снимок, газ и происхождение байткода.

Все 30 уроков опубликованы. Примеры, компиляция и проверки не запускались; зависимости не устанавливались. Здесь описаны ожидаемые результаты. Программа остаётся черновиком до отдельного решения о публикации.

Перед началом

Нужны основные сведения о Solidity и адресах Ethereum. Начать можно с курса языка и реестра. Профиль лаборатории: Solidity 0.8.30, EVM cancun, Foundry 1.3.1, forge-std 1.9.7. Базовый CourseCatalog сохраняет API общей учебной библиотеки.

Уроки

  1. Файлы и профиль лаборатории — Каталоги src/test и зафиксированные параметры сборки.
  2. Тестирование Solidity в Foundry: требования к реестру — Базовый CourseCatalog и таблица разрешённых переходов.
  3. Foundry setUp: исходное состояние теста — Независимый экземпляр перед каждым сценарием.
  4. Foundry: assertions и проверка пустой записи — Точные ожидания getter и отличия assertEq/assertTrue.
  5. Foundry prank: смена отправителя вызова — Явные роли publisher/reader для каждого действия.
  6. Foundry expectRevert: проверка отката и ошибки — Проверка селектора ошибки без ложного положительного результата.
  7. Foundry expectEmit: проверка событий контракта — Сверка издателя события, номера и отпечатка.
  8. Foundry: тест создания экземпляра контракта — Нулевой издатель отклонён, правильный адрес неизменяем.
  9. Foundry: тесты публикации, замены и деактивации — Проверяемая последовательность обновления и повторной публикации.
  10. Foundry: граничные значения чисел и байтов — Отдельные сценарии нулевых, минимальных и максимальных значений.
  11. Fuzzing в Foundry: номер и хеш публикации — Свойство записи и чтения для допустимых сгенерированных данных.
  12. Foundry: допущения и ограничение диапазона fuzzing — Осмысленная область assume/bound без скрытых исключений.
  13. Foundry: генерация отправителей вызова — Проверка запрета записи для любого чужого адреса.
  14. Foundry: проверка байтов, кодирования и хеша — Воспроизводимая фикстура байтов отдельно от формата манифеста.
  15. Foundry: независимая модель ожидаемого результата — Ожидание обновления по собственной модели данных.
  16. Покрытие кода Solidity в Foundry: что показывает отчёт — План чтения покрытия с отдельным анализом отсутствующих требований.
  17. Invariant testing в Foundry: последовательности действий — Свойства актуального состояния и необходимость stateful-модели.
  18. Foundry: выбор целей генератора инвариантных тестов — Ограниченные targetContract и targetSelector.
  19. Foundry Handler: генерация действий публикации — Осмысленные действия с несколькими существующими курсами.
  20. Foundry: проверка разрешённых и чужих действий — Раздельные маршруты успеха и отказа с наблюдением изменений.
  21. Ghost state в Foundry: модель ожидаемого выпуска — Независимый учёт отпечатка и флага каждого номера.
  22. Foundry: откаты и полезная работа генератора — Политика fail_on_revert и счётчики содержательных действий.
  23. Foundry: глубина, число запусков и seed — Ограниченная воспроизводимая кампания с явным бюджетом.
  24. Foundry: контрпример и регрессионный тест — Минимальная последовательность нарушения и точная регрессия.
  25. Foundry mockCall: подмена внешнего ответа — Отдельный CourseReader с контролируемым ответом и отказом.
  26. Foundry: управление временем и номером блока в тесте — Отдельный наблюдатель с явной моделью свежести.
  27. Fork-тестирование в Foundry: выбранный локальный блок — Копия известного состояния без утверждения о production.
  28. Foundry: trace и оценка расхода газа — Разбор дерева вызовов и сравнение одинаковых операций.
  29. Foundry: исходники, настройки и байткод контракта — Запись происхождения артефакта для конкретного экземпляра.
  30. Foundry: итоговая лаборатория тестирования Solidity — Комплект исходников, требований и честный статус исполнения.

Итоговый комплект

Архив последней редакции исходников содержит базовый реестр, обычные и параметризованные сценарии, handler с независимой моделью, отдельные reader/observer и необязательный fork-пример. Код не исполнялся; библиотека не включена как установленная зависимость.

Продолжение: безопасность собственных контрактов и реестр в браузере. Общая программа Web3 связывает десять курсов.