Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop #44

Merged
merged 32 commits into from
Oct 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
0708d75
First iteration
ignasirv Sep 6, 2022
4f0f1e8
Merge pull request #33 from 0xPolygonHermez/feature/access-storage
krlosMata Sep 21, 2022
4efaa6a
update scripts and versions
zkronos73 Sep 21, 2022
0556aaa
Remove funcName "isSetReplacingZero" as it is not used in the rom Sto…
agnusmor Sep 22, 2022
dbbf099
steps feature to extend execution out n in debug mode
zkronos73 Sep 26, 2022
79f528f
on debug skip checkFinalState control
zkronos73 Sep 28, 2022
a011b9c
fastDebugExit flag
zkronos73 Sep 28, 2022
052b73b
Merge pull request #46 from 0xPolygonHermez/feature/steps-vs-n
zkronos73 Sep 28, 2022
7813ed8
Small acessedStorage fixes
ignasirv Sep 22, 2022
e50bf57
remove old tracer. Full-tracer actuvated with -T flag. Update run-inputs
laisolizq Sep 29, 2022
7f46141
Merge pull request #45 from 0xPolygonHermez/remove-issetreplacingzero
zkronos73 Sep 29, 2022
cdb625f
fix mem tracer
invocamanman Sep 29, 2022
d2507d3
Merge pull request #48 from 0xPolygonHermez/feature/acessedStorage-fix
krlosMata Sep 30, 2022
5f46c26
run-inputs with 22 steps
krlosMata Sep 22, 2022
afcaa5e
remove old tracer. Full-tracer actovated with -t flag
krlosMata Sep 22, 2022
e8d1d20
Add scripts to run tests in parallel from GHA
ignasirv Sep 23, 2022
f31be9f
Set stepsN for out of memory issues
ignasirv Sep 29, 2022
94989a7
Merge pull request #52 from 0xPolygonHermez/feature/parallel-tests
krlosMata Sep 30, 2022
3612ca1
Apply changes from tracer cpp
ignasirv Sep 30, 2022
5fc4a9d
Merge pull request #50 from 0xPolygonHermez/feature/fixMemTracer
krlosMata Sep 30, 2022
3511691
Merge pull request #53 from 0xPolygonHermez/feature/tracer-gas-limit
krlosMata Sep 30, 2022
89c499c
Add input param chainId
ignasirv Sep 30, 2022
aea29b6
adapt tool build-genesis
krlosMata Sep 30, 2022
a42d960
Update commonjs version
ignasirv Sep 30, 2022
ee26e82
Merge pull request #54 from 0xPolygonHermez/feature/chain-id
zkronos73 Oct 2, 2022
ba3141c
improve storage test and tests tools
zkronos73 Oct 2, 2022
9ec4e23
set versions and dependencies on package.json, add --bctree option
zkronos73 Oct 2, 2022
69bd681
Merge branch 'develop' into fix/storage-counter-on-delete
zkronos73 Oct 3, 2022
16c68e0
update commonjs version.
zkronos73 Oct 3, 2022
fc1e1d4
Merge pull request #55 from 0xPolygonHermez/fix/storage-counter-on-de…
krlosMata Oct 3, 2022
6b428da
set 2 jobs in test:run-parallel
krlosMata Oct 5, 2022
5f31c89
update versions of dependencies of package.json
zkronos73 Oct 6, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ testvectors/commit.bin
testvectors/constants.bin
tmp
pil-config.json
parallel-tests
40 changes: 24 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@0xpolygonhermez/zkevm-proverjs",
"version": "0.0.7",
"version": "0.4.0",
"description": "JS version of the zkProver.",
"main": "index.js",
"scripts": {
Expand All @@ -14,30 +14,30 @@
"exec": ". ./pre.sh && INPUT=${npm_config_input:=tools/build-genesis/input_executor.json} && echo \"input: $INPUT\" && node $NODE src/main_executor $INPUT $PIL -r $BDIR/rom.json -o $BDIR/zkevm.commit && cp $INPUT $BDIR/input_executor.json",
"pilverify": ". ./pre.sh && $PILCOM/main_pilverifier.js $BDIR/zkevm.commit -c $BDIR/zkevm.const $PIL",
"buildstarkinfo": ". ./pre.sh && $PILSTARK/main_genstarkinfo.js $PIL -s $BDIR/zkevm.starkstruct.json -i $BDIR/zkevm.starkinfo.json",
"buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js $PIL -s $BDIR/zkevm.starkstruct.json -c $BDIR/zkevm.chelpers.cpp",
"buildconstanttree": ". ./pre.sh && $PILSTARK/main_buildconsttree.js -c $BDIR/zkevm.const $PIL -s $BDIR/zkevm.starkstruct.json -t $BDIR/zkevm.consttree -v $BDIR/zkevm.verkey.json",
"buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -m $PIL -s $BDIR/zkevm.starkstruct.json -c $BDIR/zkevm.chelpers/zkevm.chelpers.cpp",
"buildconstanttree": ". ./pre.sh && $BCTREE -c $BDIR/zkevm.const $PIL -s $BDIR/zkevm.starkstruct.json -t $BDIR/zkevm.consttree -v $BDIR/zkevm.verkey.json",
"prove": ". ./pre.sh && $PILSTARK/main_prover.js -m $BDIR/zkevm.commit -c $BDIR/zkevm.const -t $BDIR/zkevm.consttree $PIL -s $BDIR/zkevm.starkstruct.json -o $BDIR/zkevm.proof.json -z $BDIR/zkevm.zkin.proof.json -b $BDIR/zkevm.public.json",
"verify": ". ./pre.sh && $PILSTARK/main_verifier.js $PIL -s $BDIR/zkevm.starkstruct.json -o $BDIR/zkevm.proof.json -b $BDIR/zkevm.public.json -v $BDIR/zkevm.verkey.json",
"gencircom": ". ./pre.sh && $PILSTARK/main_pil2circom.js $PIL -s $BDIR/zkevm.starkstruct.json -v $BDIR/zkevm.verkey.json -o $BDIR/zkevm.verifier.circom",
"compilecircom": ". ./pre.sh && circom --O1 --prime goldilocks --r1cs --sym --wasm --c --verbose $BDIR/zkevm.verifier.circom -o $BDIR -l node_modules/pil-stark/circuits.gl",

"c12a_setup": ". ./pre.sh && $PILSTARK/compressor12/main_compressor12_setup.js -r $BDIR/zkevm.verifier.r1cs -p $BDIR/zkevm.c12a.pil -c $BDIR/zkevm.c12a.const -e $BDIR/zkevm.c12a.exec",
"c12a_buildstarkinfo": ". ./pre.sh && $PILSTARK/main_genstarkinfo.js -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -i $BDIR/zkevm.c12a.starkinfo.json",
"c12a_buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -c $BDIR/zkevm.c12a.chelpers.cpp",
"c12a_buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -m -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -c $BDIR/zkevm.c12a.chelpers/zkevm.c12a.chelpers.cpp",
"c12a_exec": ". ./pre.sh && $PILSTARK/compressor12/main_compressor12_exec.js -i $BDIR/zkevm.zkin.proof.json -w $BDIR/zkevm.verifier_js/zkevm.verifier.wasm -p $BDIR/zkevm.c12a.pil -e $BDIR/zkevm.c12a.exec -m $BDIR/zkevm.c12a.commit",
"c12a_pilverify": ". ./pre.sh && $PILCOM/main_pilverifier.js $BDIR/zkevm.c12a.commit -c $BDIR/zkevm.c12a.const -p $BDIR/zkevm.c12a.pil",
"c12a_buildconstanttree": ". ./pre.sh && $PILSTARK/main_buildconsttree.js -c $BDIR/zkevm.c12a.const -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -t $BDIR/zkevm.c12a.consttree -v $BDIR/zkevm.c12a.verkey.json",
"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 --proverAddr=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
"c12a_buildconstanttree": ". ./pre.sh && $BCTREE -c $BDIR/zkevm.c12a.const -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -t $BDIR/zkevm.c12a.consttree -v $BDIR/zkevm.c12a.verkey.json",
"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 -p $BDIR/zkevm.c12a.pil -s $BDIR/zkevm.c12a.starkstruct.json -v $BDIR/zkevm.c12a.verkey.json -o $BDIR/zkevm.c12a.verifier.circom",
"c12a_compilecircom": ". ./pre.sh && circom --r1cs --sym --wasm --c --verbose --O1 --prime goldilocks $BDIR/zkevm.c12a.verifier.circom -o $BDIR -l node_modules/pil-stark/circuits.gl",

"c12b_setup": ". ./pre.sh && $PILSTARK/compressor12/main_compressor12_setup.js -r $BDIR/zkevm.c12a.verifier.r1cs -p $BDIR/zkevm.c12b.pil -c $BDIR/zkevm.c12b.const -e $BDIR/zkevm.c12b.exec",
"c12b_buildstarkinfo": ". ./pre.sh && $PILSTARK/main_genstarkinfo.js -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -i $BDIR/zkevm.c12b.starkinfo.json",
"c12b_buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -c $BDIR/zkevm.c12b.chelpers.cpp",
"c12b_buildchelpers": ". ./pre.sh && $PILSTARK/main_buildchelpers.js -m -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -c $BDIR/zkevm.c12b.chelpers/zkevm.c12b.chelpers.cpp",
"c12b_exec": ". ./pre.sh && $PILSTARK/compressor12/main_compressor12_exec.js -i $BDIR/zkevm.c12a.zkin.proof.json -w $BDIR/zkevm.c12a.verifier_js/zkevm.c12a.verifier.wasm -p $BDIR/zkevm.c12b.pil -e $BDIR/zkevm.c12b.exec -m $BDIR/zkevm.c12b.commit",
"c12b_pilverify": ". ./pre.sh && $PILCOM/main_pilverifier.js $BDIR/zkevm.c12b.commit -c $BDIR/zkevm.c12b.const -p $BDIR/zkevm.c12b.pil",
"c12b_buildconstanttree": ". ./pre.sh && $PILSTARK/main_buildconsttree.js -c $BDIR/zkevm.c12b.const -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -t $BDIR/zkevm.c12b.consttree -v $BDIR/zkevm.c12b.verkey.json",
"c12b_buildconstanttree": ". ./pre.sh && $BCTREE -c $BDIR/zkevm.c12b.const -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -t $BDIR/zkevm.c12b.consttree -v $BDIR/zkevm.c12b.verkey.json",
"c12b_prove": ". ./pre.sh && $PILSTARK/main_prover.js -m $BDIR/zkevm.c12b.commit -c $BDIR/zkevm.c12b.const -t $BDIR/zkevm.c12b.consttree -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -o $BDIR/zkevm.c12b.proof.json -z $BDIR/zkevm.c12b.zkin.proof.json -b $BDIR/zkevm.c12b.public.json --proverAddr=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
"c12b_verify": ". ./pre.sh && $PILSTARK/main_verifier.js -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -o $BDIR/zkevm.c12b.proof.json -b $BDIR/zkevm.c12b.public.json -v $BDIR/zkevm.c12b.verkey.json",
"c12b_gencircom": ". ./pre.sh && $PILSTARK/main_pil2circom.js -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json -v $BDIR/zkevm.c12b.verkey.json -o $BDIR/zkevm.c12b.verifier.circom",
Expand All @@ -55,7 +55,13 @@
"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",
"prec12b_buildstarkinfo": ". ./pre.sh && if [ \"$npm_config_starkstruct\" = \"debug\" ]; then node tools/gen_debug_starkstruct.js -t BN128 -p $BDIR/zkevm.c12b.pil -s $BDIR/zkevm.c12b.starkstruct.json; else cp src/zkevm.c12b.starkstruct.json $BDIR; fi",

"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",

"test": "mocha",

"test:storage": "mocha test/sm_storage_test.js",
"test:mem_align": "mocha test/sm_mem_align_test.js",
"test:counters:arith": "mocha test/counters/arith.js",
Expand All @@ -65,30 +71,32 @@
"test:counters:padding_pg": "mocha test/counters/padding_pg.js",
"test:counters:poseidon": "mocha test/counters/poseidon.js",
"test:counters:storage": "mocha test/counters/storage.js",
"test:all-inputs": "mocha --timeout 0 --max-old-space-size=8000 tools/run-test/run-inputs-mocha.test.js"
"test:all-inputs": "mocha --timeout 0 --max-old-space-size=8000 tools/run-test/run-inputs-mocha.test.js",
"test:gen-parallel": "node tools/run-test/gen-parallel-tests.js",
"test:run-parallel": "mocha --jobs 2 --timeout 0 --max-old-space-size=8000 --parallel tools/run-test/parallel-tests/*.test.js"
},
"author": "Jordi Baylina",
"license": "UNLICENSED",
"dependencies": {
"@0xpolygonhermez/zkasmcom": "https://github.com/0xPolygonHermez/zkasmcom.git#mandarin",
"@0xpolygonhermez/zkevm-commonjs": "https://github.com/0xpolygonhermez/zkevm-commonjs.git",
"@0xpolygonhermez/zkevm-rom": "https://github.com/0xpolygonhermez/zkevm-rom.git",
"@0xpolygonhermez/zkasmcom": "https://github.com/0xPolygonHermez/zkasmcom.git#v0.4.0.0",
"@0xpolygonhermez/zkevm-commonjs": "https://github.com/0xpolygonhermez/zkevm-commonjs.git#v0.4.0.1",
"@0xpolygonhermez/zkevm-rom": "https://github.com/0xpolygonhermez/zkevm-rom.git#v0.4.0.0",
"chalk": "^3.0.0",
"circomlib": "^2.0.3",
"circomlibjs": "0.1.1",
"ejs": "^3.1.6",
"ethers": "^5.4.7",
"ffjavascript": "^0.2.55",
"fs": "^0.0.1-security",
"pil-stark": "^0.0.25",
"pilcom": "^0.0.17",
"snarkjs": "^0.4.24",
"pil-stark": "0.0.25",
"pilcom": "0.0.18",
"snarkjs": "0.4.27",
"yargs": "^17.4.0"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-as-promised": "^7.1.1",
"circom_tester": "^0.0.9",
"mocha": "^9.1.3"
}
}

1 change: 1 addition & 0 deletions pre.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ PIL="-p ${npm_config_pil:=pil/main.pil}`[ ! -z $npm_config_pilconfig ] && echo \
PILSTARK="node $NODE node_modules/pil-stark/src"
PILCOM="node $NODE node_modules/pilcom/src"
SNARKJS="node $NODE node_modules/snarkjs/cli.js"
BCTREE="${npm_config_bctree:=$PILSTARK/main_buildconsttree.js}"
true
7 changes: 4 additions & 3 deletions src/main_executor.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const fileCachePil = path.join(__dirname, "../cache-main-pil.json");

const argv = require("yargs")
.version(version)
.usage("main_executor <input.json> -r <rom.json> -o <proof.json> -t <test.json> -l <logs.json> -s -d [-p <main.pil>] [-P <pilconfig.json>] -u -e -v")
.usage("main_executor <input.json> -r <rom.json> -o <proof.json> -t <test.json> -l <logs.json> -s -d [-p <main.pil>] [-P <pilconfig.json>] -u -e -v -T")
.alias("o", "output")
.alias("r", "rom")
.alias("t", "test")
Expand All @@ -39,8 +39,8 @@ const argv = require("yargs")
.alias("P", "pilconfig")
.alias("u", "unsigned")
.alias("e", "execute")
.alias("P", "pilconfig")
.alias("v", "verbose")
.alias("T", "tracer")
.argv;

async function run() {
Expand Down Expand Up @@ -106,7 +106,8 @@ async function run() {
inputName: path.basename(inputFile, ".json")
},
unsigned: (argv.unsigned === true),
execute: (argv.execute === true)
execute: (argv.execute === true),
tracer: (argv.tracer === true)
}

const N = cmPols.Main.PC.length;
Expand Down
29 changes: 14 additions & 15 deletions src/sm/sm_main/debug/full-tracer.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,7 @@ class FullTracer {
return;
}
this.info[this.info.length - 1].error = errorName;
// Dont decrease depth if the error is from processing a RETURN opcode
const lastOpcode = this.info[this.info.length - 1]
if (!opDecContext.includes(lastOpcode.opcode)) {
this.depth--
}

// Revert logs
this.logs[ctx.CTX] = null
}
Expand Down Expand Up @@ -223,7 +219,12 @@ class FullTracer {
};

//Set consumed tx gas
response.gas_used = String(Number(response.gas_left) - Number(ctx.GAS));
if(Number(ctx.GAS) > Number(response.gas_left)) {
response.gas_used = String(Number(response.gas_left));
} else {
response.gas_used = String(Number(response.gas_left) - Number(ctx.GAS));
}

response.call_trace.context.gas_used = response.gas_used;
this.accBatchGas += Number(response.gas_used);

Expand Down Expand Up @@ -368,13 +369,14 @@ class FullTracer {
const finalMemory = [];
const lengthMemOffset = findOffsetLabel(ctx.rom.program, "memLength");
const lenMemValue = ctx.mem[offsetCtx + lengthMemOffset];
const lenMemValueFinal = typeof lenMemValue === "undefined" ? 0 : Number(fea2scalar(ctx.Fr, lenMemValue));

const lenMemValueFinal = typeof lenMemValue === "undefined" ? 0 : Math.ceil(Number(fea2scalar(ctx.Fr, lenMemValue))/32);

for (let i = 0; i < lenMemValueFinal; i++) {
const memValue = ctx.mem[addrMem + i];
if (typeof memValue === "undefined")
if (typeof memValue === "undefined") {
finalMemory.push("0".padStart(64, "0"))
continue;
}
let memScalar = fea2scalar(ctx.Fr, memValue);
let hexString = memScalar.toString(16);
hexString = hexString.length % 2 ? `0${hexString}` : hexString;
Expand All @@ -399,6 +401,7 @@ class FullTracer {
}

// add info opcodes
this.depth = Number(getVarFromCtx(ctx, true, "depth"));
singleInfo.depth = this.depth;
singleInfo.pc = Number(ctx.PC);
singleInfo.remaining_gas = ctx.GAS.toString();
Expand Down Expand Up @@ -438,6 +441,7 @@ class FullTracer {
singleInfo.contract.data = getCalldataFromStack(ctx);
singleInfo.contract.gas = this.txGAS[this.depth];
singleInfo.storage = JSON.parse(JSON.stringify(this.deltaStorage[this.depth]));

// Round up to next multiple of 32
singleInfo.memory_size = String(Math.ceil(Number(getVarFromCtx(ctx, false, "memLength")) / 32) * 32);
singleInfo.counters = {
Expand Down Expand Up @@ -481,13 +485,8 @@ class FullTracer {
}
}

//Check opcodes that alter depth
if (opDecContext.includes(singleInfo.opcode)) {
this.depth--;
}
if (opIncContext.includes(singleInfo.opcode)) {
this.depth++;
this.deltaStorage[this.depth] = {};
this.deltaStorage[this.depth + 1] = {};
}
}

Expand Down
128 changes: 0 additions & 128 deletions src/sm/sm_main/debug/tracer.js

This file was deleted.

Loading