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