Skip to content

Commit

Permalink
support stark aggregation (#71)
Browse files Browse the repository at this point in the history
* add comment for recursive

* add --agg_stage flag

* add aggregation stage

* add recursive_proof_to_stark.sh

* add  stark_aggregation.sh

* add combine two zkin script

* update stark_aggregation.sh

* update stark_aggregation.sh

* add prover.js

* update stark_verifier_circom.rs

* update stark aggregation shell

* add prover.js

* add snark_verifier.sh

* add stark setup

* update snark_verifier.sh

* add final_test

* update snark_verifier.sh

* update snark_verifier.sh

* update aggregation

* fmt stark_verifier_circom.rs

* remove unused code at main_joinzkin.js

* update main_joinzkin.js

* update main_joinzkin.js

* update recurvie_proof_to_snark to support generate stark proof

* remove recursive_proof_to_stark.sh

* update stark_aggregation shell

* update stark_aggregation.sh

* update stark_aggregation.sh

* update stark_aggregation.sh

* update snark_verifier.sh: back run to generate zkey

* remove recursive_proof_to_stark

* fix recursive2 err after update version

* update stark_aggregation shell

* update stark_aggregation.sh

* update stark_aggregation.sh

* update main_joinzkin: generate fri proof by setup.steps

* update stark_aggregation

* update main_joinkin

* optimize  verifier circom

* add snarkjs local

* update main_joinzkin
  • Loading branch information
cyl19970726 authored Jul 11, 2023
1 parent da03d53 commit a61fcf0
Show file tree
Hide file tree
Showing 16 changed files with 768 additions and 13 deletions.
91 changes: 91 additions & 0 deletions starkjs/src/recursive/main_joinzkin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
const fs= require("fs");
const version = require("../../package").version;

const argv = require("yargs")
.version(version)
.usage("node --starksetup <starksetup.json> --zkin1 <in1.zkin.json> --zkin2 <in2.zkin.json> --zkinout <out.zkin.json>")
.alias("s","starksetup")
.alias("1","zkin1")
.alias("2","zkin2")
.alias("o","zkinout")
.argv;

async function run() {

const starkSetupFile = typeof(argv.starksetup) === "string" ? argv.starksetup.trim() : "starksetup.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 starkSetup = JSON.parse(await fs.promises.readFile(starkSetupFile, "utf8"));
const zkin1 = JSON.parse(await fs.promises.readFile(zkin1File, "utf8"));
const zkin2 = JSON.parse(await fs.promises.readFile(zkin2File, "utf8"));

const zkinOut = {};

zkinOut.a_publics = zkin1.publics;
zkinOut.a_rootC = zkin1.rootC;
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;
zkinOut.a_s0_valsC = zkin1.s0_valsC;
zkinOut.a_s0_siblings1 = zkin1.s0_siblings1;
zkinOut.a_s0_siblings3 = zkin1.s0_siblings3;
zkinOut.a_s0_siblings4 = zkin1.s0_siblings4;
zkinOut.a_s0_siblingsC = zkin1.s0_siblingsC;
for (let i = 1; i < starkSetup["steps"].length; i++) {
let keyRoot = `a_s${i}_root`;
let keySiblings = `a_s${i}_siblings`;
let keyVals = `a_s${i}_vals`;

zkinOut[keyRoot] = zkin1[`s${i}_root`];
zkinOut[keySiblings] = zkin1[`s${i}_siblings`];
zkinOut[keyVals] = zkin1[`s${i}_vals`];
}
zkinOut.a_finalPol = zkin1.finalPol;

zkinOut.b_publics = zkin2.publics;
zkinOut.b_rootC = zkin2.rootC;
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;
zkinOut.b_s0_valsC = zkin2.s0_valsC;
zkinOut.b_s0_siblings1 = zkin2.s0_siblings1;
zkinOut.b_s0_siblings3 = zkin2.s0_siblings3;
zkinOut.b_s0_siblings4 = zkin2.s0_siblings4;
zkinOut.b_s0_siblingsC = zkin2.s0_siblingsC;
for (let i = 1; i < starkSetup["steps"].length; i++) {
let keyRoot = `b_s${i}_root`;
let keySiblings = `b_s${i}_siblings`;
let keyVals = `b_s${i}_vals`;

zkinOut[keyRoot] = zkin2[`s${i}_root`];
zkinOut[keySiblings] = zkin2[`s${i}_siblings`];
zkinOut[keyVals] = zkin2[`s${i}_vals`];
}

zkinOut.b_finalPol = zkin2.finalPol;

fs.writeFileSync(zkinOutFile, JSON.stringify(zkinOut, null, 1), "utf8");

console.log("file Generated Correctly");

}

run().then(()=> {
process.exit(0);
}, (err) => {
console.log(err.message);
console.log(err.stack);
process.exit(1);
});
7 changes: 3 additions & 4 deletions starky/data/c12.starkStruct.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
{
"nBits": 18,
"nBitsExt": 19,
"nBits": 15,
"nBitsExt": 16,
"nQueries": 8,
"verificationHashType": "GL",
"steps": [
{ "nBits": 19 },
{ "nBits": 15 },
{ "nBits": 16 },
{ "nBits": 11 },
{ "nBits": 7 },
{ "nBits": 4 }
Expand Down
13 changes: 13 additions & 0 deletions starky/data/final.starkStruct.bn128.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"nBits": 16,
"nBitsExt": 17,
"nQueries": 8,
"verificationHashType": "BN128",
"steps": [
{ "nBits": 17 },
{ "nBits": 11 },
{ "nBits": 7 },
{ "nBits": 4 }
]
}

14 changes: 14 additions & 0 deletions starky/data/r2.starkStruct.bn128.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"nBits": 20,
"nBitsExt": 21,
"nQueries": 8,
"verificationHashType": "BN128",
"steps": [
{ "nBits": 21 },
{ "nBits": 15 },
{ "nBits": 11 },
{ "nBits": 7 },
{ "nBits": 4 }
]
}

13 changes: 13 additions & 0 deletions starky/data/r2.starkStruct.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"nBits": 17,
"nBitsExt": 18,
"nQueries": 6,
"verificationHashType": "GL",
"steps": [
{ "nBits": 18 },
{ "nBits": 11 },
{ "nBits": 7 },
{ "nBits": 4 }
]
}

1 change: 1 addition & 0 deletions starky/src/pil2circom.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use crate::types::{StarkStruct, PIL};
pub struct StarkOption {
pub enable_input: bool,
pub verkey_input: bool,
pub agg_stage: bool,
pub skip_main: bool,
}

Expand Down
Loading

0 comments on commit a61fcf0

Please sign in to comment.