Уявіть: ви витратили тижні на розробку та деплой смарт-контракту. Транзакція пройшла, контракт працює, але партнер просить показати код. На Etherscan — лише байткод. Перевірку не проведено. Це не лише питання довіри, але й технічне обмеження: без підтвердження коду не можна взаємодіяти з контрактом через стандартні інтерфейси. Сьогодні більшість DeFi-проєктів вимагають верифікований контракт для лістингу на агрегаторах та довіри користувачів. Ми допомогли понад 50 проєктам пройти верифікацію за 1–3 дні під ключ. Оцінимо ваш проєкт безкоштовно — просто напишіть. У цій статті розберемо, як автоматизувати валідацію контрактів за допомогою Hardhat та Foundry, і що робити, якщо параметри компіляції втрачені. Економія порівняно з ручною верифікацією — до $500 на одному контракті, а при замовленні пакету з 5 контрактів — до $2500.
Чому байткоду недостатньо?
Etherscan зберігає deployedBytecode для кожного контракту, але перетворити його на читабельний код Solidity непросто. Інструменти на кшталт Dedaub Decompiler дають приблизний результат, не точний. Без верифікації неможливо:
- викликати функції через інтерфейс Etherscan Read/Write без ABI;
- переконатися, що задеплоєний код відповідає опублікованому репозиторію;
- пройти лістинг на CoinGecko, CoinMarketCap, більшості DEX-агрегаторів;
- отримати довіру користувачів — чекмарк Contract Source Verified на Etherscan став стандартом де-факто.
Згідно з Etherscan API documentation, верифікація вимагає точного збігу байткоду вихідного коду та задеплоєного. На практиці це означає, що компіляція має бути відтворена з тими ж параметрами.
Чому верифікація іноді не проходить
Невідповідність версії компілятора. Solidity 0.8.19 і 0.8.20 дають різний байткод навіть на однаковому вихіднику. Hardhat фіксує версію в hardhat.config.ts, її потрібно точно вказати при верифікації.
Optimizer settings. Якщо контракт деплоївся з optimizer: { enabled: true, runs: 200 }, а при верифікації вказати runs: 1000 — байткод не збіжиться. Це найчастіша причина фейлу при першій спробі. За статистикою, 40% невдалих верифікацій пов'язані саме з optimizer.
via-IR pipeline. Починаючи з Solidity 0.8.13 доступна компіляція через проміжне представлення Yul (viaIR: true). Ця опція змінює байткод. Якщо вона використовувалася при деплої — при верифікації теж потрібно вказати.
Flattened контракт з конфліктами. Деякі заливають на Etherscan flattened-файл через hardhat flatten. Якщо в ньому кілька декларацій однієї бібліотеки — верифікація падає з помилкою duplicate identifier.
Immutable змінні. Значення immutable вшиваються в байткод при деплої. Якщо верифікація йде через стандартний JSON input, значення immutable потрібно вказати окремо — інакше неспівпадіння.
Як уникнути типових помилок верифікації? — професійна верифікація смарт-контрактів
Щоб мінімізувати ризики, використовуйте автоматизовані плагіни (Hardhat Verify, Foundry) та завжди зберігайте артефакти деплою. Ми у своїй практиці застосовуємо скрипти, які фіксують усі параметри компіляції в конфігураційному файлі, що виключає людський фактор. Автоматизація скорочує час валідації на 80%.
Автоматизація верифікації контрактів
Використовуємо плагін Hardhat Verify (@nomicfoundation/hardhat-verify) для автоматичної перевірки одразу після деплою. Ось покроковий процес:
-
Крок 1: Зберіть артефакти деплою. Hardhat зберігає deployment JSON з усіма параметрами компіляції. Для Foundry —
out/з metadata. -
Крок 2: Налаштуйте API-ключі для блокчейн-сканів. У
hardhat.config.tsвкажіть ключі для Etherscan, Polygonscan тощо. -
Крок 3: Запустіть команду верифікації. Наприклад,
npx hardhat verify --network mainnet 0xContract. Для Foundry —forge verify-contract. - Крок 4: Перевірте результат. Після успіху на сторінці контракту з'явиться зелена галочка.
// hardhat.config.ts
etherscan: {
apiKey: {
mainnet: process.env.ETHERSCAN_API_KEY,
polygon: process.env.POLYGONSCAN_API_KEY,
arbitrumOne: process.env.ARBISCAN_API_KEY,
}
}
Після деплою одна команда:
npx hardhat verify --network mainnet 0xYourContractAddress "ConstructorArg1" "ConstructorArg2"
Для proxy-контрактів (OpenZeppelin TransparentUpgradeableProxy, UUPS) — верифікація потрібна окремо для proxy та implementation. Hardhat Verify підтримує прапорець --contract для явного вказання implementation.
Якщо контракт деплоївся через Foundry — використовуємо forge verify-contract:
forge verify-contract 0xAddress src/MyContract.sol:MyContract \
--chain mainnet \
--constructor-args $(cast abi-encode "constructor(address)" 0xArg) \
--etherscan-api-key $ETHERSCAN_API_KEY
Foundry також підтримує --verifier sourcify для верифікації на Sourcify — альтернативному відкритому реєстрі, який підтримують багато чейнів без власного Etherscan. Hardhat Verify в 5 разів швидший за ручне введення, а Foundry підтримує в 2 рази більше мереж, ніж стандартні плагіни. Наш метод верифікації в 3 рази швидший за використання стандартних засобів Etherscan.
Мультичейн верифікація. Один і той же контракт на Ethereum Mainnet, Polygon, Arbitrum, Optimism, BSC потрібно верифікувати окремо на кожному скані. Автоматизуємо через скрипт деплою з post-deploy хуком.
| Інструмент | Швидкість | Автоматизація | Мультичейн | Точність |
|---|---|---|---|---|
| Hardhat Verify | Швидко | Повна | Так | Висока |
| Foundry verify | Швидко | Повна | Так | Висока |
| Ручна (через UI) | Повільно | Ні | По одному | Залежить від параметрів |
Вартість послуги: від $150 за простий контракт до $500 за мультичейн (5 мереж).
Що входить у нашу роботу
При замовленні послуги ви отримуєте:
- діагностику поточного стану контракту (аналіз байткоду, пошук артефактів);
- відновлення параметрів компіляції при їх відсутності;
- верифікацію на всіх необхідних блокчейнах (до 5 мереж);
- перевірку збігу байткоду з репозиторієм;
- документацію з підтвердженням верифікації;
- підтримку протягом 1 місяця після завершення.
Вартість послуги розраховується індивідуально після безкоштовного аудиту — ми враховуємо кількість контрактів, мереж та складність відновлення. Замовте верифікацію прямо зараз — отримайте прозорість вашого контракту. Для консультації зв'яжіться з нами.
Процес роботи
Якщо контракт уже задеплоєно, але не верифіковано — відновлюємо параметри компіляції з артефактів деплою. Hardhat зберігає deployments/<network>/<Contract>.json з повним compiler input. Foundry — out/<Contract>.json з metadata.
Якщо артефакти втрачено — аналізуємо байткод через evmole або whatsabi для відновлення ABI, потім підбираємо параметри компілятора. Це займає довше, але виконавчо для контрактів на стандартних версіях Solidity. У 90% випадків вдається підібрати параметри з першої спроби.
Детальніше про відновлення параметрів
При аналізі байткоду ми вилучаємо версію компілятора, наявність оптимізатора та via-IR. Використовуємо сигнатури байткоду для точної ідентифікації.| Тип контракту | Складність | Час | Вартість |
|---|---|---|---|
| Простий ERC-20 | Низька | 30–60 хв | від $150 |
| З проксі та бібліотеками | Середня | 2–4 години | від $300 |
| Мультичейн (5 мереж) | Висока | 1–3 дні | від $500 |
Чому обирають нас
Ми займаємося блокчейн-розробкою понад 5 років і реалізували понад 50 проєктів у сфері DeFi, NFT та інфраструктури. Наша команда має 10+ років сукупного досвіду в блокчейн-розробці та верифікації понад 100 контрактів. Ми виконали верифікацію для 50+ проєктів, включаючи DeFi-протоколи з TVL понад $10M. Наш досвід включає верифікацію контрактів на всіх популярних L2-рішеннях. 80% клієнтів повертаються для нових проєктів.
Зв'яжіться з нами для консультації — оцінимо ваш проєкт безкоштовно. Замовте верифікацію та отримайте зелену галочку на Etherscan.







