Skip to content

Releases: scroll-tech/zkvm-prover

v0.7.1

27 Nov 23:00
85dc6bc

Choose a tag to compare

hardfork: GalileoV2 (#236)

* feat: galileo-v2

* Revert "refactor sdk cycle counting (#222)"

This reverts commit 5f0509c4a5c603aa0e06f6364605b1dad3a98a05.

* x

* data

* 0.7.1

* commit

---------

Co-authored-by: Zhang Zhuo <[email protected]>

Scroll Galileo

21 Nov 11:01
56c9518

Choose a tag to compare

Scroll Galileo (v0.7.0)

The release v0.7.0 adds support for hardfork Galileo for Scroll.

This upgrade brings:

  • support for Fusaka EIPs on Scroll
  • Robust L1 fee mechanism
  • Several optimisations for guest programs.

Furthermore, we upgrade the OpenVM dependency to v1.4.1 which contributes further performance gains across the entire proving pipeline.

v0.5.6

11 Aug 00:06
37a6678

Choose a tag to compare

This is a minor change to simplify release process.

Breaking changes:

Verifier now only needs evm verifier file. No longer needs the root exe and root config.

v0.5.0: The Feynman Upgrade

21 Jul 05:42
4fb6fb2

Choose a tag to compare

This is the release for Scroll Feynman Upgrade.

Protocol changes:

  • switch to latest scroll revm to include changes of blockhash, ec-pairing, EIP-2935
  • change codec version to 8, and add it into bundle pi hash

Other notable code changes:

  • upgrade guest openvm to v1.3.0
  • guest uses the same scroll branch with scroll reth node.
  • switch to openvm official stark_verify implementation

v0.5.0rc1

14 Jul 05:58
0eb4c11

Choose a tag to compare

v0.5.0rc1 Pre-release
Pre-release

TODO

v0.4.3

16 Jun 05:21
1b431ac

Choose a tag to compare

Scroll Euclid Guest & Prover with Plonky3 soundness fix

See https://github.com/scroll-tech/zkvm-prover/releases/tag/v0.2.0 for more details.

v0.4.1

13 May 13:56

Choose a tag to compare

v0.4.1 Pre-release
Pre-release
scroll crates

Euclid Phase-1 + Phase-2 Unified Release

27 Mar 23:54
5854f81

Choose a tag to compare

The 0.2.0 release unifies Euclid's phase-1 and phase-2 upgrades on the circuitry.

The release assets (uploaded to s3) have the following structure:

|
|-- chunk
    |
    |-- app.vmexe
    |-- openvm.toml
|
|-- batch
    |
    |-- app.vmexe
    |-- openvm.toml
|
|-- bundle
    |
    |-- app.vmexe
    |-- app_euclidv1.vmexe
    |-- digest_1.hex          <!-- digest-1 for Euclid phase-2 -->
    |-- digest_2.hex          <!-- digest-2 for Euclid phase-2 -->
    |-- digest_1_euclidv1.hex <!-- digest-1 for Euclid phase-1 -->
    |-- digest_2_euclidv1.hex <!-- digest-2 for Euclid phase-1 -->
    |-- openvm.toml
    |-- verifier.bin
    |-- verifier.sol
|
|-- verifier
    |-- root-verifier-committed-exe
    |-- root-verifier-vm-config
    |-- verifier.bin

Depend on scroll-zkvm-prover and scroll-zkvm-verifier:

scroll-zkvm-prover = { git = "https://github.com/scroll-tech/zkvm-prover", tag = "v0.2.0" }
scroll-zkvm-verifier = { git = "https://github.com/scroll-tech/zkvm-prover", tag = "v0.2.0" }

Setup Provers for Euclid Phase-1:

// chunk prover
let config = scroll_zkvm_prover::ProverConfig {
    path_app_exe: Path::new("/path/to/chunk/app.vmexe").to_path_buf(),
    path_app_config: Path::new("/path/to/chunk/openvm.toml").to_path_buf(),
    dir_cache: None,                    // disable proof caching
    dir_halo2_params: None,             // use the default "~/.openvm/params" directory
    segment_len: Some((1 << 22) - 100), // segment length for GPU-prover
};
let chunk_prover = scroll_zkvm_prover::ChunkProver::setup(config)?;

// batch prover
let config = scroll_zkvm_prover::ProverConfig {
    path_app_exe: Path::new("/path/to/batch/app.vmexe").to_path_buf(),
    path_app_config: Path::new("/path/to/batch/openvm.toml").to_path_buf(),
    dir_cache: None,                    // disable proof caching
    dir_halo2_params: None,             // use the default "~/.openvm/params" directory
    segment_len: Some((1 << 22) - 100), // segment length for GPU-prover
};
let batch_prover = scroll_zkvm_prover::BatchProver::setup(config)?;

// bundle prover (Euclid Phase-1)
let config = scroll_zkvm_prover::ProverConfig {
    path_app_exe: Path::new("/path/to/bundle/app_euclidv1.vmexe").to_path_buf(),
    path_app_config: Path::new("/path/to/bundle/openvm.toml").to_path_buf(),
    dir_cache: None,                    // disable proof caching
    dir_halo2_params: None,             // use the default "~/.openvm/params" directory
    segment_len: Some((1 << 22) - 100), // segment length for GPU-prover
};
let bundle_prover = scroll_zkvm_prover::BundleProverEuclidV1::setup(config)?;

Setup Provers for Euclid Phase-2:

// chunk/batch prover: same as Euclid Phase-1

// bundle prover (Euclid Phase-2)
let config = scroll_zkvm_prover::ProverConfig {
    path_app_exe: Path::new("/path/to/bundle/app.vmexe").to_path_buf(),
    path_app_config: Path::new("/path/to/bundle/openvm.toml").to_path_buf(),
    dir_cache: None,                    // disable proof caching
    dir_halo2_params: None,             // use the default "~/.openvm/params" directory
    segment_len: Some((1 << 22) - 100), // segment length for GPU-prover
};
let bundle_prover = scroll_zkvm_prover::BundleProverEuclidV2::setup(config)?;

Setup Verifiers for Euclid Phase-1:

// chunk verifier
let chunk_verifier = scroll_zkvm_verifier::ChunkVerifier::setup(
    Path::new("/path/to/root-verifier-vm-config"),
    Path::new("/path/to/root-verifier-committed-exe"),
    Path::new("/path/to/verifier.bin"),
)?;

// batch verifier
let batch_verifier = scroll_zkvm_verifier::BatchVerifier::setup(
    Path::new("/path/to/root-verifier-vm-config"),
    Path::new("/path/to/root-verifier-committed-exe"),
    Path::new("/path/to/verifier.bin"),
)?;

// bundle verifier (Euclid Phase-1)
let bundle_verifier = scroll_zkvm_verifier::BundleVerifierEuclidV1::setup(
    Path::new("/path/to/root-verifier-vm-config"),
    Path::new("/path/to/root-verifier-committed-exe"),
    Path::new("/path/to/verifier.bin"),
)?;

Setup Verifiers for Euclid Phase-2:

// chunk/batch verifier: same as Euclid Phase-1

// bundle verifier (Euclid Phase-2)
let bundle_verifier = scroll_zkvm_verifier::BundleVerifierEuclidV2::setup(
    Path::new("/path/to/root-verifier-vm-config"),
    Path::new("/path/to/root-verifier-committed-exe"),
    Path::new("/path/to/verifier.bin"),
)?;