1
0
Fork 0
mirror of synced 2025-09-23 12:18:44 +00:00

add instructions to snark verification tests

This commit is contained in:
dark64 2021-07-07 17:52:37 +02:00
parent acd0af6473
commit bda8c0b0b6
6 changed files with 83 additions and 26 deletions

View file

@ -5,7 +5,6 @@
{
"input": {
"values": [
"1",
"14854361253166356985827940126714566475275412573126716429346293669288261212877767002588736768495892518280555332082",
"213732210873464696846782550184555137228225514409080200587629835423679101735680889388490505365220726936653232900722",
"87538607630632344401950048588801759619324114043687193925268161368645768079512372989046887060116208844098222887523",
@ -14,6 +13,7 @@
"239017299818740889416561988179003000999440599788233589838386981563280711497257601212385904595560069610856834048609",
"210817940648895568697680255986492415724502544301527123629003695092329489846191300997148203752109923795482648905049",
"104796720182429147963427519368170838521257629224027565408974396362211239635140389257768036297199752289691646178885",
"1",
"237849156256827398282019388933972533154056715710612980343582379691235964002811111531637163291964836316287473866944",
"121324456153144638357885760921484124420296650752569739652599982435599667566663818850130137668154167962818124679946",
"73600332144130508132510040050892177274732799381796146541825372722030832659283233558443467575385522990242420388929",

View file

@ -1,16 +1,35 @@
from "EMBED" import snark_verify_bls12_377
// Verifies a proof with 1 public input (0 inputs + 1 output)
// Circuit used in this test (compiled using `bls12_377` curve):
// Circuit used in this test:
//
// def main() -> field:
// return 1
//
// Arguments:
// inputs - public inputs of the circuit
// proof - flattened proof to an array of field elements
// vk - flattened verification key to an array of field elements
// Save the circuit as "circuit.zok" and run the following commands (in order):
// $ zokrates compile -i ./circuit.zok -c bls12_377
// $ zokrates compute-witness
// $ zokrates setup -b ark -s gm17
// $ zokrates generate-proof -b ark -s gm17
//
// To get flattened inputs needed for this test, use the following script:
// #!/usr/bin/env node
//
// const path = require("path");
// const fs = require("fs");
//
// let output = []
// for (let i = 2; i < process.argv.length; i++) {
// const source = fs.readFileSync(path.resolve(process.argv[i]), 'utf8')
// const flat = [...source.matchAll(/0x[a-z0-9]+/gm)].map(n => BigInt(n).toString(10));
// output.push(...flat)
// }
//
// console.log(JSON.stringify(output));
//
// Save this script as "flatten.js" and run the following command:
// $ node flatten.js proof.json verification.key
def main(private field[1] inputs, private field[8] proof, private field[20] vk) -> bool:
def main(private field[8] proof, private field[1] inputs, private field[20] vk) -> bool:
bool result = snark_verify_bls12_377(inputs, proof, vk)
return result

View file

@ -5,8 +5,6 @@
{
"input": {
"values": [
"2",
"4",
"30886639936493049016175318852868223421962513695924799011862965798142544864756272917016480650319179059444391880142",
"210714472424410627451557273311118253425679108293022860127144278352441005505195339659420709617036779682326673533186",
"101969549978420613687361685686211943788361418391955806064423246725556175258043096446227634997412743489772585976407",
@ -15,6 +13,8 @@
"156965166665593649649919836247487186182263277589020558979047044043456286367751723077006781061358137877318135673282",
"137741518433065408317198878994358008499493756319076293122811213051853618947340414216838530582726247267590705502194",
"126547036337175013106414910386451161000910611736141896590177615068467376299665795605927145787930213987505973766731",
"2",
"4",
"26150522755032959261786285436959898551137848025504557005325333189168466417284586793885098543725273736029879389211",
"169754513648720531797744265077389392707096818238531464510797707592538650668826008029773773893361012602508598834793",
"172926009578431040673671475398833553033375949638930965254433842547261096474109828672139964685904707258254717562981",

View file

@ -1,16 +1,35 @@
from "EMBED" import snark_verify_bls12_377
// Verifies a proof with 2 public inputs (1 input + 1 output)
// Circuit used in this test (compiled using `bls12_377` curve):
// Circuit used in this test:
//
// def main(field a) -> field:
// return a * a
//
// Arguments:
// inputs - public inputs of the circuit
// proof - flattened proof to an array of field elements
// vk - flattened verification key to an array of field elements
// Save the circuit as "circuit.zok" and run the following commands (in order):
// $ zokrates compile -i ./circuit.zok -c bls12_377
// $ zokrates compute-witness -a 2
// $ zokrates setup -b ark -s gm17
// $ zokrates generate-proof -b ark -s gm17
//
// To get flattened inputs needed for this test, use the following script:
// #!/usr/bin/env node
//
// const path = require("path");
// const fs = require("fs");
//
// let output = []
// for (let i = 2; i < process.argv.length; i++) {
// const source = fs.readFileSync(path.resolve(process.argv[i]), 'utf8')
// const flat = [...source.matchAll(/0x[a-z0-9]+/gm)].map(n => BigInt(n).toString(10));
// output.push(...flat)
// }
//
// console.log(JSON.stringify(output));
//
// Save this script as "flatten.js" and run the following command:
// $ node flatten.js proof.json verification.key
def main(private field[2] inputs, private field[8] proof, private field[22] vk) -> bool:
def main(private field[8] proof, private field[2] inputs, private field[22] vk) -> bool:
bool result = snark_verify_bls12_377(inputs, proof, vk)
return result

View file

@ -5,11 +5,6 @@
{
"input": {
"values": [
"2",
"2",
"2",
"2",
"8",
"60457684924193218954780799695448128402450659922819148866042534731462934804174889585425668379894806827192129355035",
"30692976080216123852486339295726836787768525847434467843252380267593056117653493955651719058012291818530914713503",
"125357500613234885873309304302314409734224357144836572740733227274842238671614205545693580811504410323545780196986",
@ -18,6 +13,11 @@
"52408210490520029867007596145203947635265945726032430791270964404506413872638222587937059680769423104224418341783",
"245391920863498220927838330312555206148254951255756591670548373412908886220063896460749603543488483619267089689381",
"78589112605630898410537770266153128219408270888620016803188045523021815277982064356841045190284469829851165791293",
"2",
"2",
"2",
"2",
"8",
"177010185638377511324501604520563739739317808509681430951164029757345810095174696221494505373089763385490312116358",
"153053794329278051178743982884522858761476481700312111393093980133181276780354993379856934110282786295862092443919",
"119352601414532465114802089751399530705471140760948692288569726825270783170792459863146836606243083937386903791326",

View file

@ -1,7 +1,7 @@
from "EMBED" import snark_verify_bls12_377
// Verifies a proof with 5 public inputs (4 inputs + 1 output)
// Circuit used in this test (compiled using `bls12_377` curve):
// Circuit used in this test:
//
// def main(field[4] a) -> field:
// field out = 0
@ -10,11 +10,30 @@ from "EMBED" import snark_verify_bls12_377
// endfor
// return out
//
// Arguments:
// inputs - public inputs of the circuit
// proof - flattened proof to an array of field elements
// vk - flattened verification key to an array of field elements
// Save the circuit as "circuit.zok" and run the following commands (in order):
// $ zokrates compile -i ./circuit.zok -c bls12_377
// $ zokrates compute-witness -a 2 2 2 2
// $ zokrates setup -b ark -s gm17
// $ zokrates generate-proof -b ark -s gm17
//
// To get flattened inputs needed for this test, use the following script:
// #!/usr/bin/env node
//
// const path = require("path");
// const fs = require("fs");
//
// let output = []
// for (let i = 2; i < process.argv.length; i++) {
// const source = fs.readFileSync(path.resolve(process.argv[i]), 'utf8')
// const flat = [...source.matchAll(/0x[a-z0-9]+/gm)].map(n => BigInt(n).toString(10));
// output.push(...flat)
// }
//
// console.log(JSON.stringify(output));
//
// Save this script as "flatten.js" and run the following command:
// $ node flatten.js proof.json verification.key
def main(private field[5] inputs, private field[8] proof, private field[28] vk) -> bool:
def main(private field[8] proof, private field[5] inputs, private field[28] vk) -> bool:
bool result = snark_verify_bls12_377(inputs, proof, vk)
return result