Skip to content

0xPolygonHermez/zkevm-proverjs

Folders and files

NameName
Last commit message
Last commit date
Mar 7, 2024
Mar 27, 2023
Jan 21, 2024
Oct 20, 2023
Mar 26, 2024
Mar 4, 2024
Feb 17, 2023
Mar 25, 2024
Nov 10, 2023
Mar 23, 2024
Mar 27, 2023
Mar 27, 2023
Nov 30, 2023
Mar 26, 2024
Mar 26, 2024
Nov 10, 2023
Dec 15, 2023
Mar 23, 2024

Repository files navigation

zkEVM ProverJS

zkEVM proof generator reference written in Javascript

General info

setup

$ npm install
$ npm run build

Usage

Basic 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.bin

Additional 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 asserts newStateRoot and newLocalExitRoot
  • -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. Loads verbose-config.json
  • -S <stats.json>: save stats to a file

Verbose configuration

  • fulltracer.enable: prints events originated in the full tracer
  • fulltracer.printOpcodes: print opcodes
  • fulltracer.filterOpcodes: string filter when printing opcodes
  • fulltracer.initFinalState: print pre/post state of touched addresses
  • fulltracer.bytecode: add bytecode to pre/post state
  • fulltracer.saveInitFinalState: save file with pre/post state
  • zkPC: print info program counter
  • batchL2Data: print info about batch L2 data
  • step: print executor step

Build setup

npm run buildsetup --build=build/v0.7.0.0-rc.1 --bctree=../zkevm-prover/build/bctree

Build prove

npm run buildall

Build prove with basic main (without SM, only for debugging)

npm run buildall --pil=pil/basic_main.pil --starkstruct=debug

Build prove with pilconfig (only for debugging)

npm run buildall --pilconfig=testvectors/pilconfig.pil --starkstruct=debug

Build options

from: syntax is --from=<step> to indicate step where start build/rebuild

npm run buildsetup --from=c12setup

continue: this option hasn't additional argument. With this option buildall detected last step well done and continues from next step.

npm run buildsetup --continue

step: syntax is --step=<step> to indicate step to execute (one step only)

npm run buildsetup --step=c12setup

steps: to show list of steps

npm run buildsetup --steps

pil: syntax is --pil=<main.pil> where main.pil was name of pil to compile. For debugging could use basic_main.pil. See --starkstruct option

npm run buildsetup --pil=pil/basic_main.pil --starkstruct=debug

pilconfig: 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=debug

starkstruct: 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=debug

build: with this option could change build directory, by default build directory is build/proof.

npm run buildall --build=build/basic_proof

input: with this option indicates input file to use.

npm run buildall --input=test/myinputfile.json

bctree: syntax is --bctree=<bctree_exec> specify an external binary (executable) to generate build constanttree

npm run buildall --bctree=../zkevm-prover/build/bctree

Memory

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