zkEVM proof generator reference written in Javascript
$ npm install
$ npm run buildBasic usage:
$ node src/main_executor <input.json> -r <rom.json> -o <proof.json>Example:
$ node src/main_executor tools/build-genesis/input_executor.json -r ../zkevm-rom/build/rom.json -o tmp/commit.binAdditional parameters:
-t <test.json>: test-l <logs.json>: logs-s: skip compile pil-d: debug mode-p: select pilprogram.pil-P: load pilConfig.json file-u: unsigned transactions mode-e: skip assertsnewStateRootandnewLocalExitRoot-v: verbose mode PIL-T: enable tracer-c: disable zk-counters-N <number>: override number of steps-V <verbose-config.json>: verbode executor & full-tracer. Loadsverbose-config.json-S <stats.json>: save stats to a file
fulltracer.enable: prints events originated in the full tracerfulltracer.printOpcodes: print opcodesfulltracer.filterOpcodes: string filter when printing opcodesfulltracer.initFinalState: print pre/post state of touched addressesfulltracer.bytecode: add bytecode to pre/post statefulltracer.saveInitFinalState: save file with pre/post statezkPC: print info program counterbatchL2Data: print info about batch L2 datastep: print executor step
npm run buildsetup --build=build/v0.7.0.0-rc.1 --bctree=../zkevm-prover/build/bctreenpm run buildallnpm run buildall --pil=pil/basic_main.pil --starkstruct=debugnpm run buildall --pilconfig=testvectors/pilconfig.pil --starkstruct=debugfrom: syntax is --from=<step> to indicate step where start build/rebuild
npm run buildsetup --from=c12setupcontinue: this option hasn't additional argument. With this option buildall detected last step well done and continues from next step.
npm run buildsetup --continuestep: syntax is --step=<step> to indicate step to execute (one step only)
npm run buildsetup --step=c12setupsteps: to show list of steps
npm run buildsetup --stepsrom: syntax is --rom=<rom_dir> where rom_dir is path where found rom project (default: node_modules/@0xpolygonhermez/zkevm-rom).
npm run buildsetup --rom=node_modules/@0xpolygonhermez/zkevm-rompil: syntax is --pil=<main.pil> where main.pil is name of pil to compile. For debugging could use basic_main.pil. See --starkstruct option
npm run buildsetup --pil=pil/basic_main.pil --starkstruct=debugpilconfig: syntax is --pilconfig=<pilconfig.json> where pilconfig.json was name of config used in pil compilation. See --starkstruct option
npm run buildall --pilconfig=testvectors/pilconfig.json --starkstruct=debugstarkstruct: syntax is --startstruct=debug to generates automatic starkstruct adapted to pil bits number. Only for debugging. This option shall used with --pil or pilconfig if number of bits change.
npm run buildall --starkstruct=debugbuild: with this option could change build directory, by default build directory is build/proof.
npm run buildall --build=build/basic_proofinput: with this option indicates input file to use.
npm run buildall --input=test/myinputfile.jsonbctree: syntax is --bctree=<bctree_exec> specify an external binary (executable) to generate build constanttree
npm run buildall --bctree=../zkevm-prover/build/bctree| Region (base-to) | Size | Content |
|---|---|---|
| 0x000000 - 0x03FFFF | 8MiB | |
| 0x040000 - 0x07FFFF | 8MiB | First context |
| 0x080000 - 0x0BFFFF | 8MiB | Second context |
| : | 8MiB | : |
| Region (base-to) | Size | Content |
|---|---|---|
| CTX.base + [0x000000 - 0x00FFFF] | 2MiB | Context specific variables |
| CTX.base + [0x010000 - 0x01FFFF] | 2MiB | EVM Stack |
| CTX.base + [0x020000 - 0x03FFFF] | 4MiB | EVM Memory |