* feat(exit): make sure that keccak uses 77 when overflowing and not a panic message
* feat(exit): makes PadAssign return a 77 when vector builder overflows
* feat(exit): adds a toggle mechanism for the exiting strategy
* feat(unsatisfied): adds exiting when encountering an unsatisfied constraint
* adds the toggle for the exit when finding unsatisfied constraints
* feat(77): uses the 77 exit code to tell when we have too many merkle proofs
* fix log for modexp
* fix execution large circuitID and add sanity-check for traces limits checksum between setup and config
* fix: add sync.once fullZkEvmSetup and fullZkEvmSetupLarge for setup
* fix: prover large cbor Unmarshal error "exceeded max number of elements"
- use default value (131072) x 1024 for MaxArrayElements and MaxMapPairs
* feat(state): connect the Hub and the StateSummary
* Merged main into prover/beta-v2
* constraints: bump to beta-v2.0-rc1
* use beta-v2.0-rc1 zkevm.bin generated by go-corset
* bump go-corset to v0.9.1
* fix go-corset compile errors
* bump constraints to beta v2.0-rc1.1
* go-corset v0.9.1 with metadata
* fix ReadZkevmBin error to align with go-corset v0.9.1
* add optimization level to CheckerZkEvm
* ReadZkevmBinadd detailed logs to
* feat(state-manager):adding arithmetization column names for ACP and SCP
* bump go-corset to v0.9.2
* fix go-corset v0.9.2 compatibility
* constraints: bump to beta-v2.1-rc1
* use zkevm.bin without 2B block gas limit for testing
* fix(state manager):batch numbers on prover side + updated 20-byte address calculation
* feat(go-corset): go-corset as submodule (#743)
* remove corset submodule
* add go-corset submodule
* use go-corst in Makefile
* use go-corset v0.9.2
* update go-corset submodule url
* fix(go-corset): typo in submodule url
* fix(state-manager): fixed Shomei issue through skippable traces + missing HUB processed address constraints + cosmetic refactoring
* fix(state-manager):fixed wrong begin/end markers for account segments due to skipped Shomei traces
* fix(state-manager): added an intermediary keccakcodehash column in state summary for the HUB connection + its constraints
* (bump prover/beta-v2 branch): constraints beta-v2.1-rc4 and go-corset v1.0.1 (#766)
- bump constraints from beta-v2.1-rc1 to rc4
- bump go-corset from v0.9.2 to v1.0.1
- this commit is to bump branch prover/beta-v2 branch to the latest verion of constraints and go-corsete without rebasing onto main
* fix(state-manager): account insertion's storage segments are excluded in the lookup from HUB to state summary.
* fix(state-manager): added missing constraints for the insertion edge case.
* (bump beta-v2 branch): constraints beta-v2.1-rc6 and go-corset v1.0.2
* fix(state-manager): address edge case for SSLOAD out of gas exception behavior that results in no traces on Shomei side, but rows on the HUB side.
* remove polluting changes
* fix(state-manager): address edge case for SSLOAD out of gas exception behavior that results in no traces on Shomei side, but rows on the HUB side, proper commit.
* fix(state-manager): address bug in the constancy constraint for the INSERT filter .
* minor(alignment): better error message when overflowing a precompile limit
* remove old v3 testdata to before merging origin/main
* bump: constraints beta-v2.1-rc10 and go-corset v1.0.3
* chore: remove unnecessary code
* revert pnpm-lock.yaml to main branch version
* update go.sum
* revert state-recovery/appcore/logic/build.gradle to main version
Remove the files to revert back to the main version. Its directory structure has changed.
Signed-off-by: Leo Jeong <dreamerty@postech.ac.kr>
* Revert "revert state-recovery/appcore/logic/build.gradle to main version"
This reverts commit 97f6c92230e511a66a29fd597bf059c9c003adfe.
* revert back to the mainnet build.gradle
* fixup(test): fix a test in the state-summary
* minor(csv): comment out the csv tracing
---------
Signed-off-by: Leo Jeong <dreamerty@postech.ac.kr>
Co-authored-by: AlexandreBelling <alexandrebelling8@gmail.com>
Co-authored-by: Bogdan Ursu <bogdanursuoffice@gmail.com>
* update `go-corset` to `v0.9.4`
* feat: add binfile / tracefile compatibility check
This adds a compatibility check between the zkevm.bin file and the lt
trace file. The compatibility check extracts the constraints commit
used to generate the respective asset, and ensures a match. If not, the
code panics with an error. Likewise, if the metadata is missing then
code will panic with an error.
* support "relaxed mode"
This intention here is to enable the strong compatibility check to be
disabled. It seems sensible to have an option to turn it off, and a
flag is added to the `bin/checker` to disable it.
* remove file-based constraints version check
* update to later version of `go-corset`
In order to allow embedded line count information (as requested
separately from this PR), go-corset now uses a structured form of
metadata. This simply updates this PR to use the revised API.
* rename "RelaxedMode" => "IgnoreCompabitilityCheck"
This simply renames the "relaxed mode" to something more direct, namely
"IgnoreCompatiblityCheck" which does what it says on the tin.
* update `go-corset` to v1.0.0
* add IgnoreCompatibilityCheck option to prover config
* remove unnecessary variable
* Update compatibility check to fail early on incompatibility
* add log when IgnoreCompatibilityCheck is enabled
---------
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
* clean(naturalize): harmonize the implementation of the verifier
* update constraints version to rc3.1
* clean(corset): use the lisp to name the constraints
* fix(permutation): compile zcatalog in deterministic order
---------
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
* bump go-corset
* fix compile errors
* constraints: bump to v0.1.0-rc1 for beta-v1.2
* bump to latest go-corset
* constraints: bump to beta-v1.2 / v0.1.0-rc2
* bump go-corset
* bump zkevm bin
* use next power of two value for non-power of two size columns (e.g., MMIO)
* remove a check for the power of two size
* bump corset to 9.7.18
* bump zkevm.bin
* bump corset to v9.7.18
* update zkevm.bin
* added interleaved to the compilediop columns
* adjusted size for corset columns
* Prover/Codehash Non Power of Two Column Size (#618)
* Revert "adjusted size for corset columns"
This reverts commit b1a7319fa586319a04ba57f421f10b55492124ff.
* fixed bug and added panic message for a non power of two size column
* removing panic
* reinsteaded the panic
---------
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
* adjusted size for corset columns
* constraints: bump to beta v1.2/v0.1.0-rc3
* update constraints version to rc3
* bump to latest go-corset
* apply hotfix for BLOCKDATA
* move NextPowerOfTwo unit test to utils
* add logs for adjusted columns with non-power of two size
* turn off trace version check
* fix golangcli-lint
* Prover/fix public input timestamps from new blockdata (#644)
* updated timestamp fetcher and arithmetization mock data for unit testing.
* fix(codehash): uses 0x0 for the codehash of non-existing accounts instead of the default EOA codehash
* fix(mimccodehash): unimport the rom codehash for initialization code
* fixup(execDataHash): revert the exec-data hash check
* timestamp byte change
* fix(execdatahash): adds the real blockhash in the execdata hash instead of 0x0
* fixup previous commit
* fixup(build): removes imports
* Revert "fixup(execDataHash): revert the exec-data hash check"
This reverts commit eb8d984e13fab627a853dc98b2c94980a7eed0b3.
* fix(consistency): adds a smaller size to the consistency module
* feat(mimc): alex -- mimc simplification -- start
* optimize factorExpression
* feat(exec): uses the ProveCheck in the execution proof
* Revert "feat(mimc): alex -- mimc simplification -- start"
This reverts commit 184771b92746070dedb5ca356ed81f989a3daea5.
* fix (public-input): changed the hashing method to match compression
* perf(mem): adds a detector for constant regular column.
* fixup(mem): support the edge-case for smartvectors of size 1
* fix(codehash): support the case where the ROM is empty
* feat(csv): adds a feature to rename columns when using fmtcsv
* fixup(codehash): supports the case where no codehash are available
* test(codehash): adds test for empty rom or statesummary
* fix(ss-connect): skip the integration connector test
---------
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
Co-authored-by: Soleimani193 <azam.soleimanian@ens.fr>
Co-authored-by: Arijit Dutta <37040536+arijitdutta67@users.noreply.github.com>
Co-authored-by: Bogdan Ursu <bogdanursuoffice@gmail.com>
* clean(prover): more hilo into zkevm/prover/common
* feat(codehash): implements the module connecting the codehash and the statesummary
* clean(ss): apply the changes for the statesummary
* feat(rand): moves everything to use rand/v2
* feat(csv): adds WriteExplicit
* feat(codehash): implements the consistency module
* fix(rng): Int31n -> Int32N
* fix(lint): pass the use of test-rng
* clean: clean one of the comment to remove debugging data
* fix(test): fix conversion test and also simplify the use of rng
* feat(codehash): enable the codehash consistency module
* reconnect the execution data hasher with the public input
* revert the rand/v2 for the testcase-gen of the contracts
* edit Makefile
* edit prover Makefile to capture tracefile dep.
* added prover arithmetization version validation check
* added regex check for conflated trace files
* add log msgs to prover validation checks
* add check for traces engine version and conflated trace file
* impl soft changes
* impl soft changes and replace zkevm.bim with version from main branch
* replace config-sepolia-full.toml with the version from main branch
* undo change to set the conflate dir to default value
* fix typo in comments
* embed constraint version files at compile time
* update regex check to include optional dir path in trace file
* fix(execution): assigns the functional public inputs
* revert(execution): reinstate the panic if the traes do not match the checksum.
* clean(circuit): remove the systematic circuit profiling
* fix(pi-interconnection): fix the check on the aggregation circuit
* chores(prover): remove the overly verbose log
* chores(zkevm.bin) commit the updated zkevm.bin
* fix(public-input): point to data_hilo instead of addr_hilo
* fixup: pi-interconnection fix in the circuit and the assignment
---------
Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
* test and fix the encoding-decoding of transaction with an empty to
* fix typo
* readd the explicit test case
* fix: move decompressBlob out of the "no-CI" build tag
* fix tag confusion
* Fix prover libs CI release (#450)
* prover: try to fix native libs arm build
---------
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
Co-authored-by: Pedro Novais <1478752+jpnovais@users.noreply.github.com>
* fix(execution): a few fixes in the wizard verifier
* feat(dict): pass the dict path from config
* fix: makeBw6Proof returns circuitID instead of -1
* fix(circuitID): make bw6Proof returns the circuitID
* fix(config-testing)
* feat(config): sepolia-full uses full aggregation
* style(naming): renaming the rolling hash fields and documenting the checks in pi-interconnection
* feat: flag for target number of constraints
* fix refactoring oversight
---------
Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
* fix rolling hash updates in collectFields
* fix initial rolling hash in piq
* fix assignment rolling hash logic
* docs give names to all checks
* docs point out checks in circuit
* refac check for chain id etc first
---------
Co-authored-by: Arya Tabaie <15056835+Tabaie@users.noreply.github.com>
Co-authored-by: AlexandreBelling <alexandrebelling8@gmail.com>
* feat(conf): adds a config field to explicitly set the dictionary path
* fix(typo): prover assets path
* fix(e2e): specifies an explicit dict path
* comment(dict_path): adds a comment stressing to not use the field outside E2E testing context.
* perf load setup in parallel to compilation and assignment
* style gofmt
* fix use waitgroup instead of channel
---------
Co-authored-by: Arya Tabaie <15056835+Tabaie@users.noreply.github.com>
* chore bring over changes from other branch
* chore: blocks as byte arrays not lists; tx.S <- 1
* build: update compressor lib release script by jpnovais
* docs and go generate
---------
Co-authored-by: Arya Tabaie <15056835+Tabaie@users.noreply.github.com>
* fix simplified public input embedding
* update integration test
* build bump go-ethereum version
* fix pi setup in integration test
* feat dummy pi circuit
* refactor move ToVariableSlice to utils
* test small "integration test" for aggr
* fix max = 0 edge case for NewRange
* truncate cvks (unnecessary)
* build update gnark dep
* refactor simplify aggregation backend logic
* feat(statemanager): adds a generic interface for traces
* feat(shomei): checks the ordering of the traces shomei
* feat(shomei): check the ordering of the account segments
* chores(shomei): adds the type of account segment in the error trace
* style(shomei): remove systematic error log
* fix(shomei): sort the state-access to match shomei's expectations
* fix(mock): EOA has codeHash equal to emptyStorageHash instead of emptyCodeHash
* fix(ringsis): fix the failing CI tests for MiMC
* fix(serialization): fix the CI for the serialization test
* fix(shomei): fix read zero shomei
* fix(shomei): rename test to TestStateSummaryReadNonZeroShomei
* fix reuse of the same circuit
---------
Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
* disconnect the hub from the actual arithmetization
* adds the missing columns from the arithmetization
* fix invalid bound constraint for ecdsa
* adds the settings for all the modules
* deduplicating the columns names between sha2.packing and keccak.packing
* adjust the number of inputs for ecadd and ecmul
* sanity-checks against creating giant columns and giant range-checks
* more informative message about failing to split a global constraint
* fixing a mistake in the multi-limb cmp
* splitter: adding support for periodic sample with larger period
* ecpair: adjust the number of G2 check per circuit
* fix: generate missing twiddles for specific sis instances
* optime the FromAccessor verifier col to make it lighter
* fix: make all fields of ConstCol public
* serialization: add checks to panic when entering a private field
* factorization: remove false edge-case
* added logs for the artefact writing
* lookup: fix ensuring that the zCatalog are processed in deterministic order
* corset.go: remove deadcode
* artefacts: fix the file existence check in wizard.Artefact
* codehash: fix state-manager assignment code hash
* adds sha2 circuit
* ecdsa: fix a few bugs in the assignment part
* implements the tx-signature getter
* config: fix maximal value for the log level
* remove-me: making debugging simpler
* fixup + add some more informations
* batch-interpolate: fix the batch interpolation algorithm
* add more logs in the vortex prover
* fixup: remove the test acceleration
* vector builder: more friendly-message repush last on top of an empty builder
* public input: set the name in the settings automatically
* sha2: address the case where sha2 is never called
* keccak: remove trailing printf
* fix: sha2 failing test
* lookup: fix error message on lookup prover
* const-col: simplify the return of GetColAssignmentAt
* lane: address case where sha2 is never called
* mimccodehash: address the case where the codehash is empty
* multi-limbs: fix incorrect range query
* storage-peek: adjust the storage key decomposition to use less limbs
* fixup: remove trailing printf
* fixup: (from accessors) fix invalid getterAt
* more informative message for the projection queries
* log (dummy verifier): add a log when a query fails
* fix(nbZeroes): address the case where the number of inputs is zero
* fix(sha2): address the case where sha2 is not called
* fix(state-summary): address the fact that read|readzero follow a different pattern of account traces
* fix(state-summary): change the ordering in the state-summary
* fix(mimcCodeHash): reverse the direction of the lookup
* chores(inclusion): make the error more comprehensive by listing all the missing rows
* feat(state-manager): adds constraints for ensuring writes happen after reads
* feat(compressor): revert to the old way of hashing
* fix: comment out the checks that are pertaining to assessed issues in the arithmetization
* chores(projection): sends more insightful logs in the projection query
* style(ecdsa): remove nbTxs from assignTxSignature
* fix(vortex): adds a missing column ignoral
* adding new SIS parameters to the test
* feat(vortex): change the default SIS parameters
* chores(fs): skip the fiat-shamir update when running in dummy.Compile
* fix(vortex): bug when handling shadow columns
* fix(gnark-interpolation): better handling of constant terms
* fix(public-input): fix wrong query addressing
* fix(execution): change the structure of the circuit builder
* fixup
* feat(setup): change the ordering of the circuit generation
* fix(execution): allocate explicitly the L2 message hashes
* fixup
* fixup: remove debugging line
* fix(s3): change the line in the makefile to use include/exclude
* fix(circuit): fix incorrect assignment function
* fix(execution): correct the FinalBlockNumber assignment
* fix(execution): adjust the hashing of the L2 message hashes
* fix the assignment of modexp
* rm gitignore
* feat: Add the wizard to the zkevm instantiation
* make the l2BridgeAddress part of the witness
* add L2Message in the extractor
* update the backend so that it works with the new zkevm api
* compute the functional inputs
* update rand
* solves a cyclic dependency issue by moving some code of blob decompression into utils
* arrange the way the func inputs are computed from the crafting
* integrate the changes with the aggregation package
* fix invalid go:generate statement
* fixup: invalid import
* update golangci.yml to relax the linting rules (were breaking the CI)
* rename package ecrecover to ecdsa
* move everything into ecdsa folder
* refactor the api of the antichamber module
* adjust the arithmetization interface
* rename the ecdsa API to EcdsaZkEvm
* adjust the API of ecadd/ecmul
* simplify the API for keccak
* simplify the API for modexp
* unexport the sha2 blocks
* adjust the ecpairing interface
* NewStateManager returns a pointer
* perfect the zk-evm API
* remove "features" from the config
* remove unused parameter in ecadd/ecmul.Assign
* implements the assignment part of the main zkevm
* add missing settings assignment to the keccak_zkevm
* remove outdated comment in keccak_single_provider
* doc: fixing a wrong comment for keccak
* adds sha2 as part of the zkevm
* skip flacky test in e2e_test for pi-interconnection
* fix bug in lookup compiler when no lookup are parts of the protocol
* fix a handful of bugs in plonk in wizard
* skip second flacky test in the pi-interconnection
* fix bug in ecpair
* remove features from the e2e testing config