Верифікація смарт-контрактів на Polygonscan
Задеплоєний контракт без верифіцированого вихідного коду — це чорна скринька. Polygonscan показує тільки байткод. Користувачі не можуть прочитати логіку, інтегратори не можуть згенерувати ABI, аудитори працюють з декомпільованим кодом замість оригіналу. Верифікація — це не бюрократія, це мінімальний стандарт прозорості для будь-якого production-контракту.
Чому верифікація ломається
Найчастіша причина сбою — невідповідність параметрів компілятора. Polygonscan компілює завантажений вихідний код та порівнює байткод з задеплоєним. Якщо версія компілятора, флаг оптимізації або кількість runs відрізняються хоча б на одиницю — верифікація падає без ясного повідомлення про помилку.
Друга причина: flatten-код з дублюючими license identifiers або pragma statements. Інструменти як hardhat flatten іноді залишають кілька // SPDX-License-Identifier та кілька pragma solidity — Polygonscan це не приймає.
Для контрактів з constructor arguments верифікація вимагає ABI-закодовані аргументи в hex. Неправильно закодовані аргументи — ще одна типова причина відмови.
Як ми верифікуємо
Використовуємо Hardhat Etherscan plugin (@nomicfoundation/hardhat-verify) або forge verify-contract з Foundry — обидва підтримують Polygonscan через той же API-ключ. Верифікація запускається автоматично в деплой-скрипті відразу після деплоя, поки параметри компілятора точно відомі з артефактів збірки.
Для proxy-контрактів додатково верифікуємо імплементацію та лінкуємо їїї з прокси через Polygonscan UI («Is this a proxy?»). Після лінковки користувачі бачать функції імплементації через proxy-адресу.
Стандартний процес: деплой → автоматична верифікація через CLI → ручна перевірка на Polygonscan → лінковка proxy при необхідності. Займає 2-3 години включаючи очікування індексації.







