Ми налаштовуємо Hardhat для проектів, де швидкість розробки та надійність деплою критичні. Неправильна конфігурація — це години, витрачені на налагодження тестів, повторні деплої та втрачені дані. Наш досвід показує, що правильна конфігурація середовища розробки смарт-контрактів одразу налаштовує інкрементальну компіляцію, паралельні тести та ідемпотентний деплой. Результат: CI/CD знає, що робити, без ручних інструкцій. В одному проекті налаштування зайняло 3 дні, а економія часу на повторних деплоях склала 70% (економія ~$300 на місяць).
Уявіть: ви пишете смарт-контракт, компілюєте, деплоїте на тестову мережу, тестуєте — і так десятки разів на день. Кожна помилка в конфігурації коштує часу та грошей. Неправильне налаштування Hardhat може призвести до багів у контрактах, збільшення газу на 15-20% і навіть втрати коштів. Ми налаштовуємо Hardhat так, щоб розробка була швидкою, а деплой — безпечним.
Налаштування Hardhat: покроковий процес
Базова конфігурація
Мінімальний hardhat.config.ts для production-проекту:
import { HardhatUserConfig } from "hardhat/config"; import "@nomicfoundation/hardhat-toolbox"; import "@openzeppelin/hardhat-upgrades"; import "hardhat-deploy"; import "hardhat-contract-sizer"; const config: HardhatUserConfig = { solidity: { version: "0.8.24", settings: { optimizer: { enabled: true, runs: 200 }, viaIR: true, }, }, networks: { hardhat: { forking: { url: process.env.ALCHEMY_MAINNET_URL! }, chainId: 1, }, polygon: { url: process.env.ALCHEMY_POLYGON_URL!, accounts: [process.env.DEPLOYER_PRIVATE_KEY!], gasPrice: "auto", }, }, gasReporter: { enabled: process.env.REPORT_GAS === "true", currency: "USD", coinmarketcap: process.env.CMC_API_KEY, }, }; viaIR: true важливий для контрактів з помилкою Stack too deep — документація Solidity рекомендує його для складних контрактів. Без IR-компілятора ця помилка часто виникає, але час компіляції зростає на 30-50%. Ми гарантуємо, що конфігурація покриває всі типові сценарії.
Плагіни, які реально потрібні
| Плагін | Призначення | Коли обов'язково |
|---|---|---|
| hardhat-deploy | Керування деплоями: named accounts, fixtures, тегування | При роботі з кількома мережами |
| hardhat-contract-sizer | Перевірка розміру bytecode (EIP-170) | Перед mainnet-деплоєм |
| @nomicfoundation/hardhat-toolbox | Мета-плагін: ethers, waffle, chai-matchers, verify | Завжди (замінює 6 окремих плагінів) |
| @openzeppelin/hardhat-upgrades | UUPS/Transparent Proxy: перевірка storage layout | При використанні проксі |
hardhat-deploy — ідемпотентні деплої з підтримкою named accounts, fixtures і тегування. Деплойні скрипти зберігають артефакти в deployments/ і ідемпотентні: повторний запуск не деплоїть вже задеплоєне. Незамінний при роботі з кількома мережами.
hardhat-contract-sizer — перевірка розміру контракту. EIP-170 обмежує bytecode 24576 байтами. Зіткнутися з цим обмеженням несподівано на mainnet-деплої — неприємно. Плагін показує розмір після кожної компіляції.
@nomicfoundation/hardhat-toolbox — мета-плагін, який включає hardhat-ethers, hardhat-waffle, hardhat-chai-matchers, hardhat-network-helpers, hardhat-verify. Одна залежність замість шести.
@openzeppelin/hardhat-upgrades — якщо проект використовує UUPS або Transparent Proxy. Плагін перевіряє storage compatibility при апгрейді до деплою: якщо новий контракт порушує storage layout, ви дізнаєтеся про це до того, як втратите дані на mainnet.
Як пришвидшити тести Hardhat?
Повільні тести — наслідок неправильних fixtures. Паттерн loadFixture з hardhat-network-helpers дозволяє зробити снапшот стану мережі після деплою і відкочуватися до нього перед кожним тестом замість повторного деплою. Порівняння: без loadFixture (повторний деплой) — 5 хвилин на 200 тестів, з loadFixture — 30 секунд. У 10 разів швидше.
async function deployTokenFixture() { const [owner, alice, bob] = await ethers.getSigners(); const Token = await ethers.getContractFactory("MyToken"); const token = await Token.deploy(ethers.parseEther("1000000")); return { token, owner, alice, bob }; } it("transfers tokens", async () => { const { token, alice } = await loadFixture(deployTokenFixture); }); Як налаштувати CI/CD для Hardhat?
GitHub Actions для автоматичного запуску тестів та верифікації:
- name: Run tests run: npx hardhat test --network hardhat env: ALCHEMY_MAINNET_URL: ${{ secrets.ALCHEMY_URL }} - name: Verify contract run: npx hardhat verify --network polygon ${{ steps.deploy.outputs.address }} env: POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_KEY }} Верифікація в CI вимагає, щоб constructor arguments були детерміновані або зберігалися як артефакти деплою. hardhat-deploy зберігає аргументи в deployments/polygon/ContractName.json автоматично.
Переваги hardhat-deploy перед ручним деплоєм
| Критерій | Ручний деплой | hardhat-deploy |
|---|---|---|
| Ідемпотентність | Ні — дублі при повторному запуску | Так — повторний запуск безпечний |
| Named accounts | Хардкод адрес | Через конфіг |
| Тегування | Ні — деплой всього | Тільки змінені контракти |
| Час на 3 мережі | ~2 години | ~25 хвилин (у 4.8 разів швидше) |
| Вартість деплою | $100+ (ручна праця) | $30 (автоматизація) |
Як вибрати плагіни для Hardhat?
Плагіни для production мають покривати тестування, деплой, перевірку розміру і апгрейди. Ми рекомендуємо «hardhat toolbox» як основу, додаючи hardhat-deploy, hardhat-contract-sizer та hardhat-upgrades за потреби. Такий набір зменшує час налаштування на 60% порівняно з ручним добором.
Що входить в роботу
- Повна конфігурація Hardhat під ваш проект: мережеві налаштування, оптимізатор, плагіни.
- Написання деплойних скриптів з використанням hardhat-deploy.
- Інтеграція тестів з loadFixture та налаштування coverage.
- CI/CD: налаштування GitHub Actions для автоматичного тестування та верифікації.
- Документація щодо роботи з середовищем.
- Підтримка протягом 90 днів після здачі.
- Економія на першому деплої — до $500 за рахунок уникнення помилок.
Орієнтовні терміни та вартість
Налаштування Hardhat для типового проекту займає від 2 до 5 днів залежно від складності контрактів та кількості мереж. Вартість — від $300 до $800. Оцінимо ваш проект за один робочий день — зв'яжіться з нами. Отримайте консультацію з налаштування Hardhat.
Наша команда має 5 років досвіду в розробці на Ethereum та суміжних L2, 50+ успішних деплоїв на mainnet. Сертифіковані розробники гарантують стабільність та безпеку конфігурації.







