@nori-zk/proof-conversion
Version:
Verifying zkVM proofs inside o1js circuits, to generate Mina compatible proof
23 lines • 1.37 kB
JavaScript
import { Sp1PlonkVerifier } from './verifier.js';
import { VK } from './vk.js';
import { Sp1PlonkProof, deserializeProof } from './proof.js';
import { parsePublicInputs } from './parse_pi.js';
import { FrC } from '../towers/index.js';
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const g2_lines_required = require('./mm_loop/g2_lines.json');
const tau_lines_required = require('./mm_loop/tau_lines.json');
//import g2_lines_required from './mm_loop/g2_lines.json';
//import tau_lines_required from './mm_loop/tau_lines.json';
const g2_lines = JSON.stringify(g2_lines_required); //fs.readFileSync(`./src/plonk/mm_loop/g2_lines.json`, 'utf8');
const tau_lines = JSON.stringify(tau_lines_required); //fs.readFileSync(`./src/plonk/mm_loop/tau_lines.json`, 'utf8');
// SP1 v5: getMlo(hexProof, programVk, hexPi) — only pi0/pi1.
// SP1 v6: pi2/pi3/pi4 (hex strings from public_inputs[2..4]) added.
export function getMlo(hexProof, programVk, hexPi, pi2, pi3, pi4) {
console.log(hexProof, programVk, hexPi);
const [pi0, pi1] = parsePublicInputs(programVk, hexPi);
const Verifier = new Sp1PlonkVerifier(VK, g2_lines, tau_lines);
const proof = new Sp1PlonkProof(deserializeProof(hexProof));
return Verifier.computeMlo(proof, pi0, pi1, FrC.from(pi2), FrC.from(pi3), FrC.from(pi4));
}
//# sourceMappingURL=get_mlo.js.map