import * as fastFile from "fastfile"; import exportVerificationKey from "./zkey_export_verificationkey.js"; // Not ready yet // module.exports.generateVerifier_kimleeoh = generateVerifier_kimleeoh; export default async function exportSolidityVerifier(zKeyName, templateName, logger) { const verificationKey = await exportVerificationKey(zKeyName, logger); const fd = await fastFile.readExisting(templateName); const buff = await fd.read(fd.totalSize); let template = new TextDecoder("utf-8").decode(buff); const vkalpha1_str = `${verificationKey.vk_alpha_1[0].toString()},`+ `${verificationKey.vk_alpha_1[1].toString()}`; template = template.replace("<%vk_alpha1%>", vkalpha1_str); const vkbeta2_str = `[${verificationKey.vk_beta_2[0][1].toString()},`+ `${verificationKey.vk_beta_2[0][0].toString()}], `+ `[${verificationKey.vk_beta_2[1][1].toString()},` + `${verificationKey.vk_beta_2[1][0].toString()}]`; template = template.replace("<%vk_beta2%>", vkbeta2_str); const vkgamma2_str = `[${verificationKey.vk_gamma_2[0][1].toString()},`+ `${verificationKey.vk_gamma_2[0][0].toString()}], `+ `[${verificationKey.vk_gamma_2[1][1].toString()},` + `${verificationKey.vk_gamma_2[1][0].toString()}]`; template = template.replace("<%vk_gamma2%>", vkgamma2_str); const vkdelta2_str = `[${verificationKey.vk_delta_2[0][1].toString()},`+ `${verificationKey.vk_delta_2[0][0].toString()}], `+ `[${verificationKey.vk_delta_2[1][1].toString()},` + `${verificationKey.vk_delta_2[1][0].toString()}]`; template = template.replace("<%vk_delta2%>", vkdelta2_str); // The points template = template.replace("<%vk_input_length%>", (verificationKey.IC.length-1).toString()); template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString()); let vi = ""; for (let i=0; i", vi); return template; }