@matterlabs/hardhat-zksync-verify
Version:
Hardhat plugin to verify smart contracts for the ZKsync network
52 lines • 2.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const config_1 = require("hardhat/config");
const chalk_1 = __importDefault(require("chalk"));
const constants_1 = require("../../constants");
const errors_1 = require("../../errors");
const constants_2 = require("../constants");
const service_1 = require("./service");
const chain_config_1 = require("./chain-config");
(0, config_1.subtask)(constants_1.TASK_VERIFY_ETHERSCAN)
.addFlag('noCompile')
.setAction(async (taskArgs, { run, network }, runSuper) => {
if (!network.config.zksync) {
return await runSuper(taskArgs);
}
const { address, constructorArguments, libraries, contractFQN, force } = await run(constants_1.TASK_VERIFY_RESOLVE_ARGUMENTS, taskArgs);
return await run(constants_1.TASK_VERIFY_ZKSYNC_ETHERSCAN, {
address,
constructorArguments,
libraries,
contractFQN,
force,
noCompile: taskArgs.noCompile,
});
});
(0, config_1.subtask)(constants_1.TASK_VERIFY_ZKSYNC_ETHERSCAN)
.addParam('address')
.addOptionalParam('constructorArguments', undefined, undefined, config_1.types.any)
.addOptionalParam('libraries', undefined, undefined, config_1.types.any)
.addOptionalParam('contract')
.addFlag('force')
.addFlag('noCompile')
.setAction(async (taskArgs, hre) => {
const chainConfig = await service_1.ZkSyncEtherscanExplorerService.getCurrentChainConfig(hre.network.provider, hre.config.etherscan.customChains, chain_config_1.builtinChains);
const etherscan = await service_1.ZkSyncEtherscanExplorerService.fromChainConfig(hre, hre.config.etherscan.apiKey, chainConfig);
const { verificationId, contractVerifyDataInfo } = await etherscan.verify(taskArgs.address, taskArgs.contract, taskArgs.constructorArguments, taskArgs.libraries, taskArgs.noCompile);
const result = await etherscan.getVerificationStatusWithRetry(verificationId, contractVerifyDataInfo);
if (result.isSuccess()) {
return;
}
console.warn(chalk_1.default.red((0, constants_2.TRYING_VERIFICATION_WITH_FULL_COMPILER_INPUT)(contractVerifyDataInfo.contractName)));
const { verificationId: verificationIdFallback } = await etherscan.verify(taskArgs.address, taskArgs.contract, taskArgs.constructorArguments, taskArgs.libraries, taskArgs.noCompile, true);
const fallbackResult = await etherscan.getVerificationStatusWithRetry(verificationIdFallback, contractVerifyDataInfo);
if (fallbackResult.isSuccess()) {
return;
}
throw new errors_1.ZkSyncVerifyPluginError(fallbackResult.message);
});
//# sourceMappingURL=task-actions.js.map