UNPKG

o1js

Version:

TypeScript framework for zk-SNARKs and zkApps

36 lines (26 loc) 1.23 kB
import { Field, verify } from 'o1js'; import { Performance } from '../../../lib/testing/perf-regression.js'; import { BigProgram, SmallProgram } from './program-small-big.js'; const csSmall = await SmallProgram.analyzeMethods(); console.log('small program rows: ', csSmall.poseidonHash.rows); const csBig = await BigProgram.analyzeMethods(); console.log('big program rows: ', csBig.combinedHash.rows, '\n'); const perfSmall = Performance.create(SmallProgram.name, csSmall); const perfBig = Performance.create(BigProgram.name, csBig); perfSmall.start('compile'); await SmallProgram.compile(); perfSmall.end(); perfBig.start('compile'); const { verificationKey: verificationKeyBig } = await BigProgram.compile(); perfBig.end(); perfSmall.start('prove', 'poseidonHash'); const proofSmall = await SmallProgram.poseidonHash(Field.random()); perfSmall.end(); perfBig.start('prove', 'combinedHash'); const { proof: proofBig } = await BigProgram.combinedHash(proofSmall.proof); perfBig.end(); perfBig.start('verify', 'combinedHash'); let isValid = await verify(proofBig, verificationKeyBig); perfBig.end(); if (!isValid) throw new Error('proof verification failed!'); console.log('Final Digest: ', proofBig.publicOutput.toHex());