Skip to content

Euclid Phase-1 + Phase-2 Unified Release

Latest
Compare
Choose a tag to compare
@roynalnaruto roynalnaruto released this 27 Mar 23:54
· 2 commits to master since this release
5854f81

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"),
)?;