Представьте: вы потратили недели на разработку и деплой смарт-контракта. Транзакция прошла, контракт работает, но партнёр просит показать код. На Etherscan — только байткод. Верификация не сделана. Это не только вопрос доверия, но и техническое ограничение: без верификации нельзя взаимодействовать с контрактом через стандартные интерфейсы. Сегодня большинство DeFi-проектов требуют верифицированный контракт для листинга на агрегаторах и доверия пользователей. Мы помогли десяткам проектов пройти верификацию за 1–3 дня под ключ. Оценим ваш проект бесплатно — просто напишите. В этой статье разберём, как автоматизировать верификацию с помощью Hardhat и Foundry, и что делать, если параметры компиляции утеряны.
Почему байткода недостаточно?
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 plugin (@nomicfoundation/hardhat-verify) для автоматической верификации сразу после деплоя:
// 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.
Мультичейн верификация. Один и тот же контракт на Ethereum Mainnet, Polygon, Arbitrum, Optimism, BSC нужно верифицировать отдельно на каждом скане. Автоматизируем через скрипт деплоя с post-deploy хуком.
| Инструмент | Скорость | Автоматизация | Мультичейн | Точность |
|---|---|---|---|---|
| Hardhat Verify | Быстро | Полная | Да | Высокая |
| Foundry verify | Быстро | Полная | Да | Высокая |
| Ручная (через UI) | Медленно | Нет | По одному | Зависит от параметров |
Автоматические методы в 5 раз быстрее ручной верификации и исключают ошибки ввода параметров.
Что входит в нашу работу
При заказе услуги вы получаете:
- диагностику текущего состояния контракта (анализ байткода, поиск артефактов);
- восстановление параметров компиляции при их отсутствии;
- верификацию на всех необходимых блокчейнах (до 5 сетей);
- проверку совпадения байткода с репозиторием;
- документацию с подтверждением верификации;
- поддержку в течение 1 месяца после завершения.
Стоимость услуги рассчитывается индивидуально после бесплатного аудита — мы учитываем количество контрактов, сетей и сложность восстановления. Закажите верификацию прямо сейчас — получите прозрачность вашего контракта. Для консультации свяжитесь с нами.
Процесс работы
Если контракт уже задеплоен, но не верифицирован — восстанавливаем параметры компиляции из артефактов деплоя. Hardhat сохраняет deployments/<network>/<Contract>.json с полным compiler input. Foundry — out/<Contract>.json с metadata.
Если артефакты потеряны — анализируем байткод через evmole или whatsabi для восстановления ABI, затем подбираем параметры компилятора. Это занимает дольше, но выполнимо для контрактов на стандартных версиях Solidity.
Подробнее о восстановлении параметров
При анализе байткода мы извлекаем версию компилятора, наличие оптимизатора и via-IR. Используем сигнатуры байткода для точной идентификации. В 90% случаев удаётся подобрать параметры с первой попытки.| Тип контракта | Сложность | Время |
|---|---|---|
| Простой ERC-20 | Низкая | 30–60 мин |
| С прокси и библиотеками | Средняя | 2–4 часа |
| Мультичейн (5 сетей) | Высокая | 1–3 дня |
Почему выбирают нас
Мы занимаемся блокчейн-разработкой много лет и реализовали свыше 50 проектов в сфере DeFi, NFT и инфраструктуры. Наш опыт включает верификацию контрактов на всех популярных L2-решениях. Многолетняя стабильная работа — экспертиза, подтверждённая десятками успешных кейсов.
Свяжитесь с нами для консультации — оценим ваш проект бесплатно. Закажите верификацию и получите зелёную галочку на Etherscan.







