Настройка Foundry: forge, cast, anvil, fuzzing для смарт-контрактов

Настройка Foundry для разработки смарт-контрактов Мы интегрируем Foundry в ваш пайплайн разработки смарт-контрактов. В отличие от Hardhat, Rust-based Foundry даёт выигрыш в скорости до 50× на тестах, но требует грамотной настройки профилей и зависимостей. Без этого вы рискуете получить нестабильн

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Настройка Foundry для разработки смарт-контрактов

Мы интегрируем Foundry в ваш пайплайн разработки смарт-контрактов. В отличие от Hardhat, Rust-based Foundry даёт выигрыш в скорости до 50× на тестах, но требует грамотной настройки профилей и зависимостей. Без этого вы рискуете получить нестабильные билды или пропустить реентерабельность на этапе тестирования.

Жизнь блокчейн-разработчика — это бесконечные итерации: скомпилировали, запустили тесты, нашли баг, исправили, снова запустили. Foundry делает этот цикл в десятки раз быстрее, но чтобы раскрыть его потенциал, нужно правильно настроить конфигурацию. Мы поможем вам сделать это под ключ. За 5 лет работы мы настроили Foundry для 50+ проектов — от простых ERC-20 до сложных DeFi-протоколов на L2.

Почему Foundry быстрее Hardhat?

Foundry написан на Rust и компилирует Solidity через solc напрямую, без лишних промежуточных слоёв. Тесты выполняются в нативной среде, fuzzing работает из коробки. Результат — скорость компиляции и тестов в 10–50 раз выше на типичных DeFi-проектах. Как отмечено в документации Foundry, benchmark на проекте с 200 тестами показывает 3 секунды против 45 секунд у Hardhat.

Установка и базовая конфигурация

Команда foundryup устанавливает последнюю версию toolchain. Проект инициализируется через forge init my-project. Базовая структура:

my-project/ ├── foundry.toml ├── src/ ├── test/ ├── script/ └── lib/ 

Файл foundry.toml — сердце конфигурации. Мы настраиваем два профиля: быстрый для локальной разработки и более глубокий для CI.

Параметр [profile.default] [profile.ci]
fuzz.runs 1000 10000
invariant.runs 256 1000
invariant.depth 500 1000

Такой подход позволяет за минуты тестировать базовую логику локально и получать надёжные результаты на CI.

[profile.default] src = "src" out = "out" libs = ["lib"] solc = "0.8.24" optimizer = true optimizer_runs = 200 fuzz = { runs = 1000 } invariant = { runs = 256, depth = 500 } [profile.ci] fuzz = { runs = 10000 } invariant = { runs = 1000, depth = 1000 } 

Как настроить профиль CI в Foundry?

Профиль CI требует более агрессивного fuzzing и depth для invariant тестов. Настройте его отдельно в foundry.toml и запускайте через forge test --profile ci -vvv. В CI-пайплайне мы также включаем --gas-report и дополнительные проверки Slither.

Зависимости через forge install

Подключаем OpenZeppelin, forge-std и другие библиотеки.

forge install OpenZeppelin/openzeppelin-contracts forge install foundry-rs/forge-std 

После установки добавляем remappings:

remappings = [ "@openzeppelin/=lib/openzeppelin-contracts/", "forge-std/=lib/forge-std/src/", ] 

Зависимости хранятся как git submodules — это стандарт для Foundry, обеспечивающий воспроизводимость.

Совет: как избежать конфликтов remappings

Если несколько библиотек экспортируют одинаковые пути, используйте приоритет в foundry.toml: remappings обрабатываются в порядке объявления. Всегда проверяйте компиляцию после установки новой зависимости.

Как настроить форк-тестирование с Anvil?

Anvil — локальная нода с возможностью форка mainnet. Это ключевая фича для интеграционных тестов.

anvil --fork-url $MAINNET_RPC --fork-block-number 19000000 --chain-id 1 

Вы получаете копию состояния mainnet на конкретном блоке без моков. Наш опыт показывает, что именно форк-тесты выявляют неочевидные ошибки, которые не ловятся юнит-тестами. В одном проекте invariant тест за 20 минут нашёл три логические ошибки, которые ускользали от ручных тестов: при цепочке deposit → withdraw → deposit totalSupply расходился на 1 wei из-за округления.

Fuzz и invariant тесты

Fuzzing работает автоматически — достаточно передать случайный параметр в тест.

function testFuzz_Deposit(uint256 amount) public { amount = bound(amount, 1, 1e27); token.mint(alice, amount); vm.prank(alice); vault.deposit(amount); assertEq(vault.balanceOf(alice), amount); } 

Invariant тесты проверяют, что системные инварианты сохраняются после любых последовательностей вызовов.

function invariant_TotalSupplyEqualsDeposits() public { assertEq(vault.totalSupply(), vault.totalDeposits()); } 

Интеграция с CI (GitHub Actions)

Мы настраиваем пайплайн, который запускает тесты с профилем CI на каждом коммите.

- name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 - name: Run tests run: forge test --profile ci -v env: FOUNDRY_ETH_RPC_URL: ${{ secrets.MAINNET_RPC }} 

Что входит в настройку

  • Конфигурация foundry.toml с профилями default/ci
  • Установка и ремаппинг зависимостей (OpenZeppelin, forge-std)
  • Настройка Anvil с форком mainnet для интеграционных тестов
  • Написание базовых fuzz и invariant тестов
  • CI пайплайн с GitHub Actions (GitLab, CircleCI по запросу)
  • Документация по используемым флагам и командам

Сроки

Настройка Foundry с зависимостями, профилями и CI — от 2 до 6 часов в зависимости от сложности проекта. Время включает написание шаблонных тестов и отладку форка. Стоимость рассчитывается индивидуально.

Почему выбирают нашу настройку?

Мы не просто копируем шаблонные конфиги — мы анализируем структуру вашего проекта, подбираем оптимальные параметры fuzzing и invariant, настраиваем gas-репортинг. Более 5 лет опыта в блокчейн-разработке и 50+ успешных проектов — это гарантия, что ваша конфигурация будет работать стабильно.

Получите консультацию по настройке Foundry для вашего проекта. Свяжитесь с нами — мы оценим задачи и предложим оптимальное решение.

Примечание: цены на настройку зависят от объёма работ и обсуждаются индивидуально.