UNPKG

typecccccccccccc

Version:

p align="center" > <img src="https://xord.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F283b98b7-fdae-4e5a-acaf-248242084e4a%2FICON.png?table=block&id=5306223c-a4f7-45d1-9f54-b9a5f4004cd6&spaceId=49976899-64a1-40f

159 lines 7.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.compile = void 0; /* eslint-disable @typescript-eslint/prefer-for-of */ /* eslint-disable @typescript-eslint/no-unused-vars */ const chalk_1 = __importDefault(require("chalk")); const child_process_1 = require("child_process"); const enquirer_1 = require("enquirer"); const ora_1 = __importDefault(require("ora")); const fs_extra_1 = __importDefault(require("fs-extra")); const packageInfo_1 = require("../../../utils/packageInfo"); const utils_1 = require("../../../utils/utils"); const logger_1 = require("../../../utils/logger"); var Protocol; (function (Protocol) { Protocol["GROTH16"] = "groth16"; Protocol["PLONK"] = "plonk"; })(Protocol || (Protocol = {})); const compile = async (options) => { try { let userConfig; let circuits; const defaultConfig = { solidity: "^0.8.0", circom: { inputBasePath: "./circuits/", outputBasePath: "./build/", ptau: "", circuits: [], }, }; try { userConfig = require(`${process.cwd()}/shield.config.js`); circuits = userConfig.circom.circuits; if (options.circuit) { circuits = circuits.filter((circuit) => { return circuit.name === options.circuit; }); } if (!userConfig.circom) { (0, logger_1.log)("unable to locate circom user defined config in file shield.config.js.", "error"); process.exit(1); } else if (!userConfig.circom.ptau) { (0, logger_1.log)("please define the ptau file name in file shield.config.js.", "error"); process.exit(1); } else if (!circuits.length) { (0, logger_1.log)("please define the circuit details for compilation of circuits in file shield.config.js.", "error"); process.exit(1); } else { for (let i = 0; i < circuits.length; i++) { if (!circuits[i].name) { (0, logger_1.log)("please define the circuit name for compilation of the circuit in file shield.config.js.", "error"); process.exit(1); } if (!circuits[i].protocol) { circuits[i].protocol = Protocol.GROTH16; } if (!circuits[i].zkey) { circuits[i].zkey = circuits[i].name; } if (!circuits[i].circuit) { circuits[i].circuit = `${circuits[i].name}.circom`; } } } } catch (e) { (0, logger_1.log)("unable to locate shield config file.", "error"); process.exit(1); } const finalConfig = { solidity: userConfig.solidity ? userConfig.solidity : defaultConfig.solidity, circom: { inputBasePath: userConfig.circom.inputBasePath ? userConfig.circom.inputBasePath : defaultConfig.circom.inputBasePath, outputBasePath: userConfig.circom.outputBasePath ? userConfig.circom.outputBasePath : defaultConfig.circom.outputBasePath, ptau: userConfig.circom.ptau, circuits, }, }; const contributions = {}; for (let i = 0; i < finalConfig.circom.circuits.length; i++) { try { fs_extra_1.default.readFileSync(`${process.cwd()}/${finalConfig.circom.inputBasePath}${circuits[i].name}.circom`, { encoding: "utf-8", }); } catch (e) { (0, logger_1.log)(`unable to read file ${process.cwd()}/${finalConfig.circom.inputBasePath}${circuits[i].name}.circom`, "warning"); continue; } if (finalConfig.circom.circuits[i].protocol === "groth16") { await (0, enquirer_1.prompt)([ { type: "input", name: "contributerName", message: `Please enter the contribution of ${finalConfig.circom.circuits[i].name} circuit for groth16 setup?`, initial: "1st Contributor Name", result: async (value) => { contributions[`${finalConfig.circom.circuits[i].name}`] = { contributerName: value.toLowerCase(), randomEntropy: "random text", }; return value.toLowerCase(); }, }, { type: "input", name: "entropy", message: `Please enter the entropy of ${finalConfig.circom.circuits[i].name} for groth16 setup?`, initial: "random text", result: async (value) => { contributions[`${finalConfig.circom.circuits[i].name}`].randomEntropy = value.toLowerCase(); return value.toLowerCase(); }, }, ]); } } for (let i = 0; i < finalConfig.circom.circuits.length; i++) { const spinner = (0, ora_1.default)(chalk_1.default.greenBright(`Compiling ${finalConfig.circom.circuits[i].name}`)).start(); const contribution = contributions[finalConfig.circom.circuits[i].name]; const executeCompile = (0, child_process_1.spawn)("bash", [ `${(0, packageInfo_1.getPackageRoot)()}/src/commands/scripts/compile.sh`, finalConfig.circom.inputBasePath, finalConfig.circom.outputBasePath, finalConfig.circom.ptau, finalConfig.circom.circuits[i].name, finalConfig.circom.circuits[i].protocol, finalConfig.circom.circuits[i].circuit, finalConfig.circom.circuits[i].zkey, contribution ? contribution.contributerName : "", contribution ? contribution.randomEntropy : "", ]); executeCompile.stdout.on("data", (data) => (0, logger_1.log)(data.toString(), "info")); executeCompile.stderr.on("data", (data) => (0, logger_1.log)(data.toString(), "info")); executeCompile.stdout.once("close", () => { (0, utils_1.bumpSolidityVersion)(finalConfig.solidity ? finalConfig.solidity : "^0.8.0", finalConfig.circom.circuits[i].name, finalConfig.circom.circuits[i].protocol); spinner.succeed(chalk_1.default.greenBright(`${finalConfig.circom.circuits[i].name} succesfully compiled.`)); }); } } catch (e) { (0, logger_1.log)(e.message, "error"); } }; exports.compile = compile; //# sourceMappingURL=compile.js.map