mirror of
https://github.com/vacp2p/linea-monorepo.git
synced 2026-01-09 04:08:01 -05:00
* 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>
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package zkevm
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/consensys/go-corset/pkg/mir"
|
|
"github.com/consensys/linea-monorepo/prover/config"
|
|
"github.com/consensys/linea-monorepo/prover/protocol/compiler/dummy"
|
|
"github.com/consensys/linea-monorepo/prover/protocol/wizard"
|
|
"github.com/consensys/linea-monorepo/prover/zkevm/arithmetization"
|
|
)
|
|
|
|
var (
|
|
checkerZkEvm *ZkEvm
|
|
onceCheckerZkEvm = sync.Once{}
|
|
|
|
checkerCompilationSuite = compilationSuite{
|
|
// The dummy compiler returns the witness as the proof and manually
|
|
// checks it as the verifier. It is essentially the trivial proof
|
|
// system.
|
|
dummy.Compile,
|
|
}
|
|
)
|
|
|
|
// The checker is not meant to generate proofs, it is meant to be used to check
|
|
// that the provided prover inputs are correct. It typically is used to audit
|
|
// the traces of the arithmetization. Currently, it does not include the keccaks
|
|
// nor does it include the state-management checks.
|
|
func CheckerZkEvm(tl *config.TracesLimits, cfg *config.Config) *ZkEvm {
|
|
onceCheckerZkEvm.Do(func() {
|
|
settings := Settings{
|
|
Arithmetization: arithmetization.Settings{
|
|
Limits: tl,
|
|
OptimisationLevel: &mir.DEFAULT_OPTIMISATION_LEVEL,
|
|
IgnoreCompatibilityCheck: &cfg.Execution.IgnoreCompatibilityCheck,
|
|
},
|
|
CompilationSuite: checkerCompilationSuite,
|
|
Metadata: wizard.VersionMetadata{
|
|
Title: "linea/evm-execution/checker",
|
|
Version: "beta-v1",
|
|
},
|
|
}
|
|
checkerZkEvm = NewZkEVM(settings)
|
|
})
|
|
return checkerZkEvm
|
|
}
|