Refactor mods to separate compiler and zkvm (#184)

This commit is contained in:
Han
2025-10-30 18:54:08 +08:00
committed by GitHub
parent 9957836858
commit ffc2fccaea
109 changed files with 3410 additions and 3019 deletions

View File

@@ -21,16 +21,16 @@ tracing = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, features = ["env-filter"], optional = true }
# Local dependencies
ere-airbender = { workspace = true, optional = true }
ere-jolt = { workspace = true, optional = true }
ere-miden = { workspace = true, optional = true }
ere-nexus = { workspace = true, optional = true }
ere-openvm = { workspace = true, optional = true }
ere-pico = { workspace = true, optional = true }
ere-risc0 = { workspace = true, optional = true }
ere-sp1 = { workspace = true, optional = true }
ere-ziren = { workspace = true, optional = true }
ere-zisk = { workspace = true, optional = true }
ere-airbender = { workspace = true, features = ["zkvm"], optional = true }
ere-jolt = { workspace = true, features = ["zkvm"], optional = true }
ere-miden = { workspace = true, features = ["zkvm"], optional = true }
ere-nexus = { workspace = true, features = ["zkvm"], optional = true }
ere-openvm = { workspace = true, features = ["zkvm"], optional = true }
ere-pico = { workspace = true, features = ["zkvm"], optional = true }
ere-risc0 = { workspace = true, features = ["zkvm"], optional = true }
ere-sp1 = { workspace = true, features = ["zkvm"], optional = true }
ere-ziren = { workspace = true, features = ["zkvm"], optional = true }
ere-zisk = { workspace = true, features = ["zkvm"], optional = true }
ere-zkvm-interface = { workspace = true, features = ["clap"] }
[dev-dependencies]

View File

@@ -3,7 +3,7 @@ use crate::api::{
execute_response::Result as ExecuteResult, prove_response::Result as ProveResult,
verify_response::Result as VerifyResult,
};
use ere_zkvm_interface::{
use ere_zkvm_interface::zkvm::{
ProgramExecutionReport, ProgramProvingReport, Proof, ProofKind, PublicValues,
};
use std::time::{Duration, Instant};
@@ -15,7 +15,7 @@ pub use twirp::{TwirpErrorResponse, url::Url};
#[derive(Debug, Error)]
#[allow(non_camel_case_types)]
pub enum zkVMClientError {
pub enum Error {
#[error("zkVM method error: {0}")]
zkVM(String),
#[error("Connection to zkVM server timeout after 5 minutes")]
@@ -31,7 +31,7 @@ pub struct zkVMClient {
}
impl zkVMClient {
pub async fn new(url: Url) -> Result<Self, zkVMClientError> {
pub async fn new(url: Url) -> Result<Self, Error> {
const TIMEOUT: Duration = Duration::from_secs(300); // 5mins
const INTERVAL: Duration = Duration::from_millis(500);
@@ -40,7 +40,7 @@ impl zkVMClient {
let start = Instant::now();
loop {
if start.elapsed() > TIMEOUT {
return Err(zkVMClientError::ConnectionTimeout);
return Err(Error::ConnectionTimeout);
}
match http_client.get(url.join("health").unwrap()).send().await {
@@ -57,7 +57,7 @@ impl zkVMClient {
pub async fn execute(
&self,
input: Vec<u8>,
) -> Result<(PublicValues, ProgramExecutionReport), zkVMClientError> {
) -> Result<(PublicValues, ProgramExecutionReport), Error> {
let request = Request::new(ExecuteRequest { input });
let response = self.client.execute(request).await?;
@@ -69,7 +69,7 @@ impl zkVMClient {
.map_err(deserialize_report_err)?
.0,
)),
ExecuteResult::Err(err) => Err(zkVMClientError::zkVM(err)),
ExecuteResult::Err(err) => Err(Error::zkVM(err)),
}
}
@@ -77,7 +77,7 @@ impl zkVMClient {
&self,
input: Vec<u8>,
proof_kind: ProofKind,
) -> Result<(PublicValues, Proof, ProgramProvingReport), zkVMClientError> {
) -> Result<(PublicValues, Proof, ProgramProvingReport), Error> {
let request = Request::new(ProveRequest {
input,
proof_kind: proof_kind as i32,
@@ -93,11 +93,11 @@ impl zkVMClient {
.map_err(deserialize_report_err)?
.0,
)),
ProveResult::Err(err) => Err(zkVMClientError::zkVM(err)),
ProveResult::Err(err) => Err(Error::zkVM(err)),
}
}
pub async fn verify(&self, proof: &Proof) -> Result<PublicValues, zkVMClientError> {
pub async fn verify(&self, proof: &Proof) -> Result<PublicValues, Error> {
let request = Request::new(VerifyRequest {
proof: proof.as_bytes().to_vec(),
proof_kind: proof.kind() as i32,
@@ -107,7 +107,7 @@ impl zkVMClient {
match response.into_body().result.ok_or_else(result_none_err)? {
VerifyResult::Ok(result) => Ok(result.public_values),
VerifyResult::Err(err) => Err(zkVMClientError::zkVM(err)),
VerifyResult::Err(err) => Err(Error::zkVM(err)),
}
}
}

View File

@@ -1,7 +1,7 @@
use anyhow::{Context, Error};
use clap::Parser;
use ere_server::server::{router, zkVMServer};
use ere_zkvm_interface::{ProverResourceType, zkVM};
use ere_zkvm_interface::zkvm::{ProverResourceType, zkVM};
use std::{
io::{self, Read},
net::{Ipv4Addr, SocketAddr},
@@ -113,34 +113,34 @@ fn construct_zkvm(program: Vec<u8>, resource: ProverResourceType) -> Result<impl
.with_context(|| "Failed to deserialize program")?;
#[cfg(feature = "airbender")]
let zkvm = ere_airbender::EreAirbender::new(program, resource);
let zkvm = ere_airbender::zkvm::EreAirbender::new(program, resource);
#[cfg(feature = "jolt")]
let zkvm = ere_jolt::EreJolt::new(program, resource);
let zkvm = ere_jolt::zkvm::EreJolt::new(program, resource);
#[cfg(feature = "miden")]
let zkvm = ere_miden::EreMiden::new(program, resource);
let zkvm = ere_miden::zkvm::EreMiden::new(program, resource);
#[cfg(feature = "nexus")]
let zkvm = ere_nexus::EreNexus::new(program, resource);
let zkvm = ere_nexus::zkvm::EreNexus::new(program, resource);
#[cfg(feature = "openvm")]
let zkvm = ere_openvm::EreOpenVM::new(program, resource);
let zkvm = ere_openvm::zkvm::EreOpenVM::new(program, resource);
#[cfg(feature = "pico")]
let zkvm = ere_pico::ErePico::new(program, resource);
let zkvm = ere_pico::zkvm::ErePico::new(program, resource);
#[cfg(feature = "risc0")]
let zkvm = ere_risc0::EreRisc0::new(program, resource);
let zkvm = ere_risc0::zkvm::EreRisc0::new(program, resource);
#[cfg(feature = "sp1")]
let zkvm = ere_sp1::EreSP1::new(program, resource);
let zkvm = ere_sp1::zkvm::EreSP1::new(program, resource);
#[cfg(feature = "ziren")]
let zkvm = ere_ziren::EreZiren::new(program, resource);
let zkvm = ere_ziren::zkvm::EreZiren::new(program, resource);
#[cfg(feature = "zisk")]
let zkvm = ere_zisk::EreZisk::new(program, resource);
let zkvm = ere_zisk::zkvm::EreZisk::new(program, resource);
zkvm.with_context(|| "Failed to instantiate zkVM")
}

View File

@@ -4,7 +4,7 @@ use crate::api::{
execute_response::Result as ExecuteResult, prove_response::Result as ProveResult,
verify_response::Result as VerifyResult,
};
use ere_zkvm_interface::{Proof, ProofKind, zkVM};
use ere_zkvm_interface::zkvm::{Proof, ProofKind, zkVM};
use twirp::{
Request, Response, TwirpErrorResponse, async_trait::async_trait, internal, invalid_argument,
};