UNPKG

export-ton-verifier

Version:

Tool for generating Groth16 and PLONK verifier code for the TON blockchain from SnarkJS .zkey or verification key JSON files.

39 lines (36 loc) 1.03 kB
import { g1Compressed, g2Compressed } from "./chunk-I7S4EEHA.js"; import { assertTonBlsCurve } from "./chunk-4I2ZWZKN.js"; // src/groth16CompressProof.js import { buildBls12381, utils } from "ffjavascript"; async function groth16CompressProof(proof, publicSignals) { assertTonBlsCurve(proof == null ? void 0 : proof.curve, "proof.curve"); const curve = await buildBls12381(); try { const proofProc = utils.unstringifyBigInts(proof); const pi_aS = g1Compressed(curve, proofProc.pi_a); const pi_bS = g2Compressed(curve, proofProc.pi_b); const pi_cS = g1Compressed(curve, proofProc.pi_c); const pi_a = Buffer.from(pi_aS, "hex"); const pi_b = Buffer.from(pi_bS, "hex"); const pi_c = Buffer.from(pi_cS, "hex"); const pubInputs = publicSignals.map((s) => BigInt(s)); return { pi_a, pi_b, pi_c, pubInputs }; } finally { if (curve && typeof curve.terminate === "function") { await curve.terminate(); } } } export { groth16CompressProof };