UNPKG

@matterlabs/hardhat-zksync-verify

Version:
126 lines 5.88 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLibraries = exports.getSolidityStandardJsonInput = exports.getMinimalResolvedFiles = exports.checkContractName = exports.flattenContractFile = exports.inferContractArtifacts = void 0; const task_names_1 = require("hardhat/builtin-tasks/task-names"); const contract_names_1 = require("hardhat/utils/contract-names"); const path_1 = __importDefault(require("path")); const utils_1 = require("@matterlabs/hardhat-zksync-solc/dist/src/utils"); const constants_1 = require("./constants"); const bytecode_1 = require("./solc/bytecode"); const errors_1 = require("./errors"); async function inferContractArtifacts(hre, artifacts, matchingCompilerVersions, deployedBytecode, libraries) { const contractMatches = []; const fqNames = await artifacts.getAllFullyQualifiedNames(); for (const fqName of fqNames) { const buildInfo = await artifacts.getBuildInfo(fqName); if (buildInfo === undefined) { continue; } if (!matchingCompilerVersions.includes(buildInfo.solcVersion)) { continue; } const { sourceName, contractName } = (0, contract_names_1.parseFullyQualifiedName)(fqName); const contractInformation = await (0, bytecode_1.extractMatchingContractInformation)(hre, sourceName, contractName, buildInfo, deployedBytecode, libraries); if (contractInformation !== null) { contractMatches.push(contractInformation); break; } } if (contractMatches.length === 0) throw new errors_1.ZkSyncVerifyPluginError(constants_1.NO_MATCHING_CONTRACT); return contractMatches[0]; } exports.inferContractArtifacts = inferContractArtifacts; async function flattenContractFile(hre, filePath) { return await hre.run(task_names_1.TASK_FLATTEN_GET_FLATTENED_SOURCE, { files: [filePath], }); } exports.flattenContractFile = flattenContractFile; async function checkContractName(artifacts, contractFQN) { if (contractFQN !== undefined) { if (!(0, contract_names_1.isFullyQualifiedName)(contractFQN)) { throw new errors_1.ZkSyncVerifyPluginError(`A valid fully qualified name was expected. Fully qualified names look like this: "contracts/AContract.sol:TheContract" Instead, this name was received: ${contractFQN}`); } if (!(await artifacts.artifactExists(contractFQN))) { throw new errors_1.ZkSyncVerifyPluginError(`The contract ${contractFQN} is not present in your project.`); } } else { throw new errors_1.ZkSyncVerifyPluginError(constants_1.CONTRACT_NAME_NOT_FOUND); } } exports.checkContractName = checkContractName; async function getMinimalResolvedFiles(hre, sourceName) { const dependencyGraph = await hre.run(task_names_1.TASK_COMPILE_SOLIDITY_GET_DEPENDENCY_GRAPH, { sourceNames: [sourceName], }); return dependencyGraph.getResolvedFiles(); } exports.getMinimalResolvedFiles = getMinimalResolvedFiles; function getSolidityStandardJsonInput(hre, resolvedFiles, input, resolvedLibraries) { const standardInput = { language: input.language, sources: Object.fromEntries(resolvedFiles.map((file) => [file.sourceName, { content: file.content.rawContent }])), settings: {}, }; standardInput.settings = !(0, utils_1.isBreakableCompilerVersion)(hre.config.zksolc.version) ? { ...input.settings, isSystem: hre.config.zksolc.settings.enableEraVMExtensions ?? false, forceEvmla: hre.config.zksolc.settings.forceEVMLA ?? false, } : { ...input.settings, }; if (resolvedLibraries) { Object.assign(standardInput.settings.libraries, resolvedLibraries); } return standardInput; } exports.getSolidityStandardJsonInput = getSolidityStandardJsonInput; async function getLibraries(librariesModule) { if (typeof librariesModule !== 'string') { return {}; } const librariesModulePath = path_1.default.resolve(process.cwd(), librariesModule); try { const libraries = (await Promise.resolve(`${librariesModulePath}`).then(s => __importStar(require(s)))).default; if (typeof libraries !== 'object' || Array.isArray(libraries)) { throw new errors_1.ZkSyncVerifyPluginError((0, constants_1.LIBRARIES_EXPORT_ERROR)(librariesModule)); } return libraries; } catch (error) { throw new errors_1.ZkSyncVerifyPluginError(`Importing the module for the libraries dictionary failed. Reason: ${error.message}`, error); } } exports.getLibraries = getLibraries; //# sourceMappingURL=plugin.js.map