Files
linea-monorepo/prover
David Pearce bf71b6b5ca Prover: compatibility check between zkevmbin and lt trace file (#745)
* 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>
2025-03-07 08:45:54 +09:00
..
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-09-06 10:57:28 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00

linea-monorepo/prover

This directory contains the implementation of the prover of Linea. As part of it, it contains an implementation of the Vortex polynomial commitment, of the Arcane compiler, the instantiation of the zkEVM using the arithmetization and the server implementation.

Building and running

The prover has the following build dependencies

  • rust@1.74.0 and cargo
  • go@1.21.5
  • make

The repository counts 2 main binaries:

  • bin/prover : bin/prover setup generate the assets (setup / preprocessing) bin/prover prove run process a request, create a proof and outputs a response.
  • bin/controller : a file-system based server to run Linea's prover

Building and running the setup generator

The setup-generation (make setup) is used to generate the setup for all the types of provers. Execution, Decompression and Aggregation. By default, if the --force flag is not provided, the tool will compile the circuit and check if the destination dir already contains a setup that matches, skipping the CPU intensive phase of the actual plonk Setup if needed.

Run

make setup

Integration tests

./integration/run.sh dev-mode
./integration/run.sh full-mode