Skip to content

Commit

Permalink
fix join zkin
Browse files Browse the repository at this point in the history
  • Loading branch information
zkronos73 committed Nov 10, 2022
1 parent 675d94b commit 88da65a
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 32 deletions.
46 changes: 19 additions & 27 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,27 @@
"main": "index.js",
"config": {
"steps": [
"buildrom buildconstants exec pilverify buildstarkinfo buildchelpers buildconstanttree prove verify gencircom compilecircom",
"c12a_setup c12a_buildstarkinfo c12a_buildchelpers c12a_exec c12a_pilverify c12a_buildconstanttree c12a_prove c12a_verify c12a_gencircom c12a_compilecircom",
"c12b_setup c12b_buildstarkinfo c12b_buildchelpers c12b_exec c12b_pilverify c12b_buildconstanttree c12b_prove c12b_verify c12b_gencircom c12b_compilecircom",
"g16setup g16contribute g16evk g16wc g16prove g16verify g16solidity" ],
"buildrom buildconstants exec pilverify buildstarkinfo buildchelpers buildconstanttree prove verify gencircom compilecircom",
"c12a_setup c12a_buildstarkinfo c12a_buildchelpers c12a_exec c12a_pilverify c12a_buildconstanttree c12a_prove c12a_verify c12a_gencircom c12a_compilecircom",
"c12b_setup c12b_buildstarkinfo c12b_buildchelpers c12b_exec c12b_pilverify c12b_buildconstanttree c12b_prove c12b_verify c12b_gencircom c12b_compilecircom",
"g16setup g16contribute g16evk g16wc g16prove g16verify g16solidity"
],
"steps_setup": [
"buildrom buildconstants buildstarkinfo buildchelpers buildconstanttree gencircom compilecircom",
"c12a_setup c12a_buildstarkinfo c12a_buildchelpers c12a_buildconstanttree c12a_gencircom",
"recursive1_gencircom recursive1_compile recursive1_setup recursive1_buildstarkinfo recursive1_buildchelpers recursive1_buildconstanttree recursive1_verifier_gencircom",
"recursive2_gencircom recursive2_compile recursive2_setup recursive2_buildstarkinfo recursive2_buildchelpers recursive2_buildconstanttree recursive2_verifier_gencircom",
"recursive_pil_check recursive_verifier_check ",
"recursivef_gencircom recursivef_compile recursivef_setup recursivef_buildstarkinfo recursivef_buildchelpers recursivef_buildconstanttree recursivef_verifier_gencircom",
"final_gencircom final_compile",
"g16setup g16contribute g16evk g16solidity"],
"buildrom buildconstants buildstarkinfo buildchelpers buildconstanttree gencircom compilecircom",
"c12a_setup c12a_buildstarkinfo c12a_buildchelpers c12a_buildconstanttree c12a_gencircom",
"recursive1_gencircom recursive1_compile recursive1_setup recursive1_buildstarkinfo recursive1_buildchelpers recursive1_buildconstanttree recursive1_verifier_gencircom",
"recursive2_gencircom recursive2_compile recursive2_setup recursive2_buildstarkinfo recursive2_buildchelpers recursive2_buildconstanttree recursive2_verifier_gencircom",
"recursive_pil_check recursive_verifier_check ",
"recursivef_gencircom recursivef_compile recursivef_setup recursivef_buildstarkinfo recursivef_buildchelpers recursivef_buildconstanttree recursivef_verifier_gencircom",
"final_gencircom final_compile",
"g16setup g16contribute g16evk g16solidity"
],
"steps_proof": [
"exec pilverify prove verify",
"c12a_exec c12a_pilverify c12a_prove c12a_verify",
"c12b_exec c12b_pilverify c12b_prove c12b_verify",
"g16wc g16prove g16verify" ]
"exec pilverify prove verify",
"c12a_exec c12a_pilverify c12a_prove c12a_verify",
"c12b_exec c12b_pilverify c12b_prove c12b_verify",
"g16wc g16prove g16verify"
]
},
"scripts": {
"build:input": "node tools/build-genesis/build_genesis.js",
Expand Down Expand Up @@ -50,46 +53,37 @@
"c12a_prove": ". ./pre.sh && $PILSTARK/main_prover.js -m $BDIR/zkevm.c12a.commit -c $BDIR/zkevm.c12a.const -t $BDIR/zkevm.c12a.consttree -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -o $BDIR/zkevm.c12a.proof.json -z $BDIR/zkevm.c12a.zkin.proof.json -b $BDIR/zkevm.c12a.public.json",
"c12a_verify": ". ./pre.sh && $PILSTARK/main_verifier.js -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -o $BDIR/zkevm.c12a.proof.json -b $BDIR/zkevm.c12a.public.json -v $BDIR/zkevm.c12a.verkey.json",
"c12a_gencircom": ". ./pre.sh && $PILSTARK/main_pil2circom.js --skipMain -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -v $BDIR/zkevm.c12a.verkey.json -o $BDIR/zkevm.c12a.verifier.circom",

"sandbox": ". ./pre.sh && echo \"$BDIR\" && diff /tmp/A1 /tmp/A2 || (echo \"FAIL\"; exit 1)",

"recursive1_gencircom": ". ./pre.sh && cp recursive/recursive1.circom $BDIR",
"recursive1_compile": ". ./pre.sh && circom --r1cs --sym --wasm --c --verbose --O1 --prime goldilocks $BDIR/recursive1.circom -o $BDIR -l node_modules/pil-stark/circuits.gl",
"recursive1_setup": ". ./pre.sh && $PILSTARK/compressor12/main_compressor12_setup.js --forceNBits=23 -r $BDIR/recursive1.r1cs -p $BDIR/recursive1.pil -c $BDIR/recursive1.const -e $BDIR/recursive1.exec",
"recursive1_buildstarkinfo": ". ./pre.sh && $PILSTARK/main_genstarkinfo.js -p $BDIR/recursive1.pil -s $BDIR/recursive.starkstruct.json -i $BDIR/recursive1.starkinfo.json",
"recursive1_buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -m -p $BDIR/recursive1.pil -s $BDIR/recursive.starkstruct.json -c $BDIR/recursive1.chelpers/recursive1.chelpers.cpp -C StarkRecursive1",
"recursive1_buildconstanttree": ". ./pre.sh && $BCTREE -c $BDIR/recursive1.const -p $BDIR/recursive1.pil -s $BDIR/recursive.starkstruct.json -t $BDIR/recursive1.consttree -v $BDIR/recursive1.verkey.json",
"recursive1_verifier_gencircom": ". ./pre.sh && $PILSTARK/main_pil2circom.js --skipMain --verkeyInput -p $BDIR/recursive1.pil -s $BDIR/recursive.starkstruct.json -v $BDIR/recursive1.verkey.json -o $BDIR/recursive1.verifier.circom",

"recursive2_gencircom": ". ./pre.sh && node $NODE src/main_genrecursive.js -v $BDIR/recursive1.verkey.json -o $BDIR/recursive2.circom",
"recursive2_compile": ". ./pre.sh && circom --r1cs --sym --wasm --c --verbose --O1 --prime goldilocks $BDIR/recursive2.circom -o $BDIR -l node_modules/pil-stark/circuits.gl",
"recursive2_setup": ". ./pre.sh && $PILSTARK/compressor12/main_compressor12_setup.js -r $BDIR/recursive2.r1cs -p $BDIR/recursive2.pil -c $BDIR/recursive2.const -e $BDIR/recursive2.exec",
"recursive2_buildstarkinfo": ". ./pre.sh && $PILSTARK/main_genstarkinfo.js -p $BDIR/recursive2.pil -s $BDIR/recursive.starkstruct.json -i $BDIR/recursive2.starkinfo.json",
"recursive2_buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -m -p $BDIR/recursive2.pil -s $BDIR/recursive.starkstruct.json -c $BDIR/recursive2.chelpers/recursive2.chelpers.cpp -C StarkRecursive2",
"recursive2_buildconstanttree": ". ./pre.sh && $BCTREE -c $BDIR/recursive2.const -p $BDIR/recursive2.pil -s $BDIR/recursive.starkstruct.json -t $BDIR/recursive2.consttree -v $BDIR/recursive2.verkey.json",
"recursive2_verifier_gencircom": ". ./pre.sh && $PILSTARK/main_pil2circom.js --skipMain --verkeyInput -p $BDIR/recursive2.pil -s $BDIR/recursive.starkstruct.json -v $BDIR/recursive2.verkey.json -o $BDIR/recursive2.verifier.circom",

"recursive_pil_check": ". ./pre.sh && F1=$BDIR/recursive1.pil && F2=$BDIR/recursive2.pil && diff $F1 $F2 || (echo \"ERROR: $F1 $F2 are different\"; exit 1)",
"recursive_verifier_check": ". ./pre.sh && F1=$BDIR/recursive1.verifier.circom && F2=$BDIR/recursive2.verifier.circom && diff $F1 $F2 || (echo \"ERROR: $F1 $F2 are different\"; exit 1)",

"recursivef_gencircom": ". ./pre.sh && node $NODE src/main_genrecursivef.js --verkey1 $BDIR/recursive1.verkey.json --verkey2 $BDIR/recursive2.verkey.json -o $BDIR/recursivef.circom",
"recursivef_compile": ". ./pre.sh && circom --r1cs --sym --wasm --c --verbose --O1 --prime goldilocks $BDIR/recursivef.circom -o $BDIR -l node_modules/pil-stark/circuits.gl -l node_modules/circomlib/circuits",
"recursivef_setup": ". ./pre.sh && $PILSTARK/compressor12/main_compressor12_setup.js -r $BDIR/recursivef.r1cs -p $BDIR/recursivef.pil -c $BDIR/recursivef.const -e $BDIR/recursivef.exec",
"recursivef_buildstarkinfo": ". ./pre.sh && $PILSTARK/main_genstarkinfo.js -p $BDIR/recursivef.pil -s $BDIR/recursivef.starkstruct.json -i $BDIR/recursivef.starkinfo.json",
"recursivef_buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -m -p $BDIR/recursivef.pil -s $BDIR/recursivef.starkstruct.json -c $BDIR/recursivef.chelpers/recursivef.chelpers.cpp -C StarkRecursiveF",
"recursivef_buildconstanttree": ". ./pre.sh && $BCTREE -c $BDIR/recursivef.const -p $BDIR/recursivef.pil -s $BDIR/recursivef.starkstruct.json -t $BDIR/recursivef.consttree -v $BDIR/recursivef.verkey.json",
"recursivef_verifier_gencircom": ". ./pre.sh && $PILSTARK/main_pil2circom.js --skipMain -p $BDIR/recursivef.pil -s $BDIR/recursivef.starkstruct.json -v $BDIR/recursivef.verkey.json -o $BDIR/recursivef.verifier.circom",

"final_gencircom": ". ./pre.sh && cp recursive/final.circom $BDIR",
"final_compile": ". ./pre.sh && circom --r1cs --sym --wasm --c --verbose $BDIR/final.circom -o $BDIR -l node_modules/pil-stark/circuits.bn128 -l node_modules/circomlib/circuits",

"downloadptaw": "wget -P build https://hermez.s3-eu-west-1.amazonaws.com/powersOfTau28_hez_final.ptau",
"g16setup": ". ./pre.sh && $SNARKJS g16s $BDIR/final.r1cs build/powersOfTau28_hez_final.ptau $BDIR/final.g16.0000.zkey",
"g16contribute": ". ./pre.sh && $SNARKJS zkc $BDIR/final.g16.0000.zkey $BDIR/final.g16.0001.zkey -e=\"$(dd if=/dev/random bs=64 count=1 | base64 -w0)\"",
"g16evk": ". ./pre.sh && $SNARKJS zkev $BDIR/final.g16.0001.zkey $BDIR/final.g16.verkey.json",
"g16solidity": ". ./pre.sh && $SNARKJS zkesv $BDIR/final.g16.0001.zkey $BDIR/final.g16.verifier.sol",


"preg16setup": ". ./pre.sh && [ -f build/powersOfTau28_hez_final.ptau ] || npm run downloadptaw",
"prebuildstarkinfo": ". ./pre.sh && if [ \"$npm_config_starkstruct\" = \"debug\" ]; then node tools/gen_debug_starkstruct.js -t GL $PIL -s $BDIR/zkevm.starkstruct.json; else cp src/zkevm.starkstruct.json $BDIR; fi",
"prec12a_buildstarkinfo": ". ./pre.sh && if [ \"$npm_config_starkstruct\" = \"debug\" ]; then node tools/gen_debug_starkstruct.js -t GL -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json; else cp src/zkevm.c12a.starkstruct.json $BDIR; fi",
Expand All @@ -98,9 +92,7 @@
"buildsetup:basic": "npm run buildsetup --pil=pil/basic_main.pil --build=build/basic_proof --starkstruct=debug",
"buildall:basic": "npm run buildall --pil=pil/basic_main.pil --build=build/basic_proof --starkstruct=debug",
"buildproof:basic": "npm run buildproof --pil=pil/basic_main.pil --build=build/basic_proof --starkstruct=debug",

"help": "npm_config_help=true && . ./pre.sh",

"test": "mocha",
"test:storage": "mocha test/sm_storage_test.js",
"test:mem_align": "mocha test/sm_mem_align_test.js",
Expand Down
29 changes: 24 additions & 5 deletions src/main_joinzkin.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const fs = require("fs");
const path = require("path");
const { polMulAxi } = require("pil-stark/src/polutils");
const version = require("../package").version;
const JSONbig = require("json-bigint");

const argv = require("yargs")
.version(version)
Expand All @@ -10,20 +11,22 @@ const argv = require("yargs")

async function run() {

const zkin11File = typeof(argv.zkin2) === "string" ? argv.zkin2.trim() : "zkin2.json";
const zkin1File = typeof(argv.zkin1) === "string" ? argv.zkin1.trim() : "zkin1.json";
const zkin2File = typeof(argv.zkin2) === "string" ? argv.zkin2.trim() : "zkin2.json";
const zkinOutFile = typeof(argv.zkinOut) === "string" ? argv.zkinOut : "zkinOut.json";
const zkinOutFile = typeof(argv.zkinout) === "string" ? argv.zkinout : "zkinOut.json";
const verKeyFile = typeof(argv.verkey) === "string" ? argv.verkey.trim() : "recursive2.verkey.json";


const zkin1 = JSON.parse(await fs.promises.readFile(zkin11File, "utf8"));
const zkin1 = JSON.parse(await fs.promises.readFile(zkin1File, "utf8"));
const zkin2 = JSON.parse(await fs.promises.readFile(zkin2File, "utf8"));
const verKey = JSONbig.parse(await fs.promises.readFile(verKeyFile, "utf8"));
const constRoot = verKey.constRoot;


const zkinOut = {};

zkinOut.publics = [];

for (let i=0; i<8; i++) zkinOut.publics[0+i] = zkin1.publics[0+i]; // oldStateRoot

for (let i=0; i<8; i++) zkinOut.publics[8+i] = zkin1.publics[8+i]; // oldAccInputHash0
Expand All @@ -48,11 +51,14 @@ async function run() {
for (let i=0; i<8; i++) zkinOut.publics[26+i] = zkin2.publics[26+i]; // newAccInputHash0
for (let i=0; i<8; i++) zkinOut.publics[34+i] = zkin2.publics[34+i]; // newLocalExitRoot

zkinOut.publics[42] = zkin2.publics[42]; // oldBatchNum

zkinOut.a_publics = zkin1.publics;
zkinOut.a_root1 = zkin1.root1;
zkinOut.a_root2 = zkin1.root2;
zkinOut.a_root3 = zkin1.root3;
zkinOut.a_root4 = zkin1.root4;
zkinOut.a_evals = zkin1.evals;
zkinOut.a_s0_vals1 = zkin1.s0_vals1;
zkinOut.a_s0_vals3 = zkin1.s0_vals3;
zkinOut.a_s0_vals4 = zkin1.s0_vals4;
Expand All @@ -68,14 +74,19 @@ async function run() {
zkinOut.a_s1_siblings = zkin1.s1_siblings;
zkinOut.a_s2_siblings = zkin1.s2_siblings;
zkinOut.a_s3_siblings = zkin1.s3_siblings;
zkinOut.a_s4_siblings = zkin1.s4_siblings;
zkinOut.a_s1_vals = zkin1.s1_vals;
zkinOut.a_s2_vals = zkin1.s2_vals;
zkinOut.a_s3_vals = zkin1.s3_vals;
zkinOut.a_s4_vals = zkin1.s4_vals;
zkinOut.a_finalPol = zkin1.finalPol;


zkinOut.b_publics = zkin2.publics;
zkinOut.b_root1 = zkin2.root1;
zkinOut.b_root2 = zkin2.root2;
zkinOut.b_root3 = zkin2.root3;
zkinOut.b_root4 = zkin2.root4;
zkinOut.b_evals = zkin2.evals;
zkinOut.b_s0_vals1 = zkin2.s0_vals1;
zkinOut.b_s0_vals3 = zkin2.s0_vals3;
zkinOut.b_s0_vals4 = zkin2.s0_vals4;
Expand All @@ -91,9 +102,17 @@ async function run() {
zkinOut.b_s1_siblings = zkin2.s1_siblings;
zkinOut.b_s2_siblings = zkin2.s2_siblings;
zkinOut.b_s3_siblings = zkin2.s3_siblings;
zkinOut.b_s4_siblings = zkin2.s4_siblings;
zkinOut.b_s1_vals = zkin2.s1_vals;
zkinOut.b_s2_vals = zkin2.s2_vals;
zkinOut.b_s3_vals = zkin2.s3_vals;
zkinOut.b_s4_vals = zkin2.s4_vals;
zkinOut.b_finalPol = zkin2.finalPol;

zkinOut.rootC = constRoot;
zkinOut.rootC = [];
for (let i=0; i<4; i++) {
zkinOut.rootC[i] = constRoot[i].toString();
}

await fs.promises.writeFile(zkinOutFile, JSON.stringify(zkinOut, null, 1), "utf8");

Expand Down

0 comments on commit 88da65a

Please sign in to comment.