Професійна верифікація смарт-контрактів на Etherscan

Уявіть: ви витратили тижні на розробку та деплой смарт-контракту. Транзакція пройшла, контракт працює, але партнер просить показати код. На Etherscan — лише байткод. Перевірку не проведено. Це не лише питання довіри, але й технічне обмеження: без підтвердження коду не можна взаємодіяти з контрактом

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

Часті запитання

Останні роботи

  • 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

Уявіть: ви витратили тижні на розробку та деплой смарт-контракту. Транзакція пройшла, контракт працює, але партнер просить показати код. На 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. Крок 1: Зберіть артефакти деплою. Hardhat зберігає deployment JSON з усіма параметрами компіляції. Для Foundry — out/ з metadata.
  2. Крок 2: Налаштуйте API-ключі для блокчейн-сканів. У hardhat.config.ts вкажіть ключі для Etherscan, Polygonscan тощо.
  3. Крок 3: Запустіть команду верифікації. Наприклад, npx hardhat verify --network mainnet 0xContract. Для Foundry — forge verify-contract.
  4. Крок 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.