Foundry с 0. Часть 6
Во введении курса по Foundry, думаю, стоит пару слов сказать о настройках самой программы и различных опциях, которые вы можете задавать в начале пути тестирования своих смарт контрактов.
Вся конфигурация Foundry лежит в файле foundry.toml, который появляется в момент инициализации проекта и лежит в корневой папке.
Вообще, формат toml для меня был некоторым открытием при изучении Foundry. Вы знали, что это, по своей сути, отдельный язык?
Toml, или Tom's Obvious Minimal Language, это специальный язык для конфигурационных файлов, который просто читать и писать. Более того, из него достаточно просто парсить информацию!
В общем, если хотите узнать о нем чуть больше, рекомендую посетить его официальную страницу:
https://toml.io/en/
Но вернемся к Foundry.
Итак, все настройки лежат в файле foundry.toml. Если открыть его сразу после старта проекта, то можно увидеть что-то типа такого:
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
P.S. Актуально на момент написания поста. Среда развивается и вскоре могут появиться другие записи.
Настройки можно разделить на три категории: по умолчанию, общие и профильные.
profile.default - как можно догадаться, это профиль по умолчанию в Foundry. Скажем так, он самый главный.
Если вы создадите другие профили, например [profile.local], то тут можно указать какие-то специальные настройки для текущего проекта, которые в свою очередь, будут наследовать настройки из profile.default.
Смотрите, что получается. Где-то на своем компьютере вы можете создать корневой файл foundry.toml с дефолтным профилем и записать самые общие настройки там. А уже в каком-либо конкретном проекте - создавать новый файл foundry.toml с новым профилем для данного протокола и получать дефолтные настройки из главного файла, настроив предварительно пути.
На самом деле, я ни разу не видел такого применения, и для каждого проекта, который я аудировал, в корневой папке был дефолтный профиль. Но возможность есть, и о ней стоило рассказать.
Существует огромное количество настроек программы под свои нужды, попробую перечислить некоторые из них:
1. src - путь до контрактов от корня проекта;
2. test - путь до тестов от корня проекта;
3. out - путь до артефактов от корня проекта;
4. libs - массив путей с библиотеками от корня проекта;
5. cache - включить / выключить кэширования.
6. broadcast - путь для транслирования записей транзакций;
7. force - включение / выключение очистки кэша при сборке проекта;
8. solc_version - версия Solidity для компилятора;
9. ignored_error_codes - игнорировать ошибки в коде при сборке проекта;
10. evm_version - версия EVM, например london или byantium;
11. optimizer - вкл/выкл оптимизатора;
12. optimizer_runs - количество "пробегов" оптимизатора;
13. via_ir - вкл/выкл "прохода" компиляции через IR оптимизатор;
14. etherscan - установка параметров для работы с etherscan;
Более подробно об этих и множестве других настроек можно узнать отсюда:
https://book.getfoundry.sh/reference/config/
Для установки настроек в Foundry достаточно добавлять соответствующие записи в файл foundry.toml. Например, просто прописав:
optimizer = true
optimizer_runs = 20_000
Мы включим оптимизатор кода и установим его "пробег" на 20 000.
Надо также сказать, что какие-то уникальные настройки программы нам потребуются не так часто. По мере прохождения уроков по написанию тестов, я будут обращать ваше внимание на те или иные возможности конфигурации.
А если вы встретите какой-либо не понятный параметр в этом файле, то смело можете зайти на страницу официальной документации и через поиск решить свой вопрос.
#foundry #lesson6
Post #913
746
- 👍 7
- 🔥 1