mirror of
https://github.com/eth-act/ere.git
synced 2026-04-03 03:00:17 -04:00
Refactor mods to separate compiler and zkvm (#184)
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user