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
JavaScript
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
};