* use new gkr API
* fix Table pointers
* refactor: remove removed test engine option
* chore: don't initialize struct for interface assertion
* refactor: plonk-in-wizard hardcoded over U64 for now
* refactor: use new gnark-crypto stateless RSis API
* test: disable incompatible tests
* chore: go mod update to PR tip
* chore: dependency against gnark master
* chore: cherry-pick 43141fc13d
* test: cherry pick test from 407d2e25ecfc32f5ed702ab42e5b829d7cabd483
* chore: remove magic values
* chore: update go version in Docker builder to match go.mod
---------
Co-authored-by: Ivo Kubjas <ivo.kubjas@consensys.net>
* fix race condition
* fix: add a mutex to avoid mem leak in quotient computation
---------
Co-authored-by: AlexandreBelling <alexandrebelling8@gmail.com>
* 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>
* bench(global): adds a benchmark for the global constraint compiler
* perf(merging): accumulates the factors before creating the expression
* perf(product): computes the ESH without using a smart-vector
* perf(factor): preallocations in the factorization algorithm
* perf(removeZeroes): implements a lazy allocation mechanism in removeZeroCoeffs
* perfs(alloc): counts the ret elements before returning in expandTerms to minimze the number of allocations.
* perf(factor): use an integer map instead of a field.Element map when possible
* fixup(expands): fix the skip condition for term expansion
* perf(constructor): improves the immutable constructors to reduce the number of calls to NewProduct and NewLinComb
* feat(repr): adds a json repr function to help debugging
* test(constructor): cleans the test of the constructors
* perf(factor): address maps using the first limb of a field.Element instead of the full field.Element
* fixup(commit): adds missing file in previous commit
* perf(factor): reduce the number of calls to rankChildren
* perf(rmpolyeval): creates the equivalent expression more directly to save on unnecessary optims
* perf(factors): use a counter in getCommonProdParentOfCs
* perf(factor): remove map copy from findGdChildrenGroup and replace getCommonProdParent by a simpler function
* clean(factor): remove unneeded function and imports
* feat(utils): adds a generic sort interface implementation
* perf(rankChildren): lazy allocation of the map to save on allocations
* perf(factorize): reduces the loop-bound for factorizeExpression
* (chore): fix a missing argument and format gofmt
* feat: readd test
---------
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
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
* feat(setup): run setup in deterministic order
* fix(pubinp): fix the public input names
* fix(gate-wire): bumps gnark's version to incorporate the fix
* feat(dummy): the dummy prover does not change the columns status anymore
* tmp(ecpair): deactivate the ecpair module
* (feat): Implements the full-recursion and test for a simple test
* msg(sticker): better error in the sticker
* test(full-recursion): adds a test for double full-recursion (overflowing memory)
* fix: sort out the packages after rebasing
* fix(pi): renaming of the public inputs
* fix(hasher): adjust the code to using a [hash.StateStorer]
* fix(pairing): pass the new format for fp12 elements
* doc(plonk): adds more doc in plonk.alignment.go
* doc(fs-hook): improves the documentation of the FiatShamirHook field.
* docs(skipping): adds doc on the ByRoundRegister
* feat(pubinp): move the zkevm public inputs to using the new public-input framework
* doc(column-store): adds documentation for the more precise methods regarding the inclusion in the FS transcript.
* clean(self-recursion): remove the self-recursion tuning file
* doc(vortex): explain the separation between the verifier steps
* doc(full-recursion): documents the prover and verifier actions
* doc(columns): improve the documentation on the IncludeInProverFS
* 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>
* 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>
* fft optimization: used parallel approach from gnark-crypto
* following OmegaTymbJIep: Use atomic uint instead of the chan of uints in parallel task tracking
* Adding bitreverse from gnark-crypto
* Use atomic counter instead of uint chan to avoid locks
* Add test for AtomicCounter
* fixed build issues due to changes in keccak
* increase butterflyThreshold (because we now use kerDITNP_256 instead of kerDITNP_8)
* rollback butterflyThreshold
* adding check for nBTasks in parallel.execute
* using GOMAXPROCS instead of NumCPU
* adding execution pool
* fixed initializing thread pool
* adding ExecutePoolChunkyWithCache
* returning back from ExecutePoolChunkyWithCache to ExecutePoolChunky, adding ExecutePoolChunky to multi_to_single_point.go
* adding ExecutePoolChunkyWithAllocated
* replacing ExecutePoolChunky with ExecuteChunky in InitOpeningWithLC
* returning back ExecutePoolChunky in InitOpeningWithLC, adding additional ExecutePoolChunky into quotient
* replacing ExecutePoolChunky with Execute into quotient
* fix: removing redundant mainWg in multi_to_single_point.go
* fix multi_to_single_point.go councurency waitning, retry quotient with ExecutePoolChunky
* ExecutePoolChunky in opening_prover.go, rolling back quotient.go
* ExecutePoolChunky in multi_to_single_point.go
* removing mutexes from quotient
* Avoid redundant bigint allocations
* fixed pool - removing redundant
* fixed - removing redundant comments
* removing keccak optimization
---------
Co-authored-by: olegfomenko <oleg.fomenko2002@gmail.com>
Co-authored-by: Anton Levochko <hykakdela@gmail.com>
* added the verifier check for local opening
* fixed the edge case for product
---------
Co-authored-by: AlexandreBelling <alexandrebelling8@gmail.com>
* ignore queries over the eligible columns
* adding the constraints
* fix the golangci-lint error
* organizing the package
* adding a missing verifier check
* support shifted version of verifier columns
* adding a test case for verifier columns
* readding the old splitter
* feat(limits): unhardcode the keccak limits
* limits(shomei): double the state limits
* fix(rlpaddr): uses the right stamp column for rlpaddr
* fix(ecpair): fix 1 invalid constraints and a bug in the assignment
* log(plonk): logs which circuit is failing in plonk-in-wizard
* log(projection): print a more informative message when a projection query fails
* feat(csv): adds more options to FmtCSV
* fix(mimc): removes a non-necessary constraint for mimc padding
* fix(mimc): address the edge-case where the mimc data size is a multiple of 31
* fix(sha2): uses the correct selectors to extract the sha2 hashes
* chores(makefile): dont recreate the zkevm.bin when linting or running the checker
* chore(make): adds the bin/checker in the .PHONY
* chores(cs): bump the constraints to rc7
* fix(arithmetization): fix invalid casting into a variable
* scanning the compiler trace for the eligible column
* committing to the eligible columns
* replacing the eligible subcolumns with their stitching
* local opening constraints
* eligible expression for the compilation
* ignoring the queries over the eligible columns
* local constraints
*global constraints
* supporting the verifier col in the expression
* expanding the verifier columns per expression
* adding the verifier's checks for the very small columns
---------
Signed-off-by: Leo Jeong <dreamerty@postech.ac.kr>
Co-authored-by: Leo Jeong <dreamerty@postech.ac.kr>
* feat(pool): implements a multi-level caching system for the pool
* fix(sym): make sure that all the nodes are freed
* feat(pool): implements a DebugPool to debug leakage to gc
* feat(parallel): implements a channel based parallelization template
* test(pool): ensure that symbolic evaluation does not leak to gc
* fixup(par): adds a wg to the workload worker
* create an prover-checker that can be used for checking
* feat(check-only): adds a check-only mode in the config
* test(smartvectors): update the tests
* chores(makefile): rm corset flags from the unneeding commands
* remove the change on config-benchmark
* perf(pool): Use the pool for regular massive FFT workload
* 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
* bench(expr): Creates a unit-benchmark to help optimizing the expressions
* adds the cbor attribute
* commit zip file instead of the plain cbor object
* 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
* 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
* add supports for cancellable plonk
* optimize the range-checker assignment
* prover: add verifier checks for the activators
* fixup: set the check to the right column
* remove trailing printf's