UNPKG

@nori-zk/proof-conversion

Version:

Verifying zkVM proofs inside o1js circuits, to generate Mina compatible proof

30 lines 1.2 kB
import { ZkProgram, Field, Poseidon } from 'o1js'; import { Accumulator } from '../accumulator.js'; import { compute_alpha_square_lagrange_0, evalVanishing, } from '../piop/plonk_utils.js'; import { VK } from '../vk.js'; // ~ 59601 const zkp1 = ZkProgram({ name: 'zkp1', publicInput: Field, publicOutput: Field, methods: { compute: { privateInputs: [Accumulator], async method(input, acc) { const inDigest = Poseidon.hashPacked(Accumulator, acc); inDigest.assertEquals(input); acc.fs.squeezeAlpha(acc.proof); acc.fs.squeezeZeta(acc.proof); const [zeta_pow_n, zh_eval] = evalVanishing(acc.fs.zeta, VK); const alpha_2_l0 = compute_alpha_square_lagrange_0(zh_eval, acc.fs.zeta, acc.fs.alpha, VK); acc.state.zeta_pow_n = zeta_pow_n; acc.state.zh_eval = zh_eval; acc.state.alpha_2_l0 = alpha_2_l0; return { publicOutput: Poseidon.hashPacked(Accumulator, acc) }; }, }, }, }); const ZKP1Proof = ZkProgram.Proof(zkp1); export { ZKP1Proof, zkp1 }; //# sourceMappingURL=zkp1.js.map