Skip to content

Releases: scroll-tech/zkvm-prover

v0.5.6

11 Aug 00:06
37a6678
Compare
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
Compare
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
Compare
Choose a tag to compare
v0.5.0rc1 Pre-release
Pre-release

TODO

v0.4.3

16 Jun 05:21
1b431ac
Compare
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
Compare
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
Compare
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"),
)?;