diff --git a/crates/ere-jolt/src/lib.rs b/crates/ere-jolt/src/lib.rs index 03c3906..fd46a25 100644 --- a/crates/ere-jolt/src/lib.rs +++ b/crates/ere-jolt/src/lib.rs @@ -44,15 +44,16 @@ pub struct EreJolt { program: ::Program, } -impl zkVM for EreJolt { - type Error = JoltError; - +impl EreJolt { fn new( program: ::Program, _resource_type: ProverResourceType, ) -> Self { EreJolt { program: program } } +} +impl zkVM for EreJolt { + type Error = JoltError; fn execute( &self, diff --git a/crates/ere-openvm/src/lib.rs b/crates/ere-openvm/src/lib.rs index ec04237..b449ea8 100644 --- a/crates/ere-openvm/src/lib.rs +++ b/crates/ere-openvm/src/lib.rs @@ -47,15 +47,16 @@ pub struct EreOpenVM { program: ::Program, } -impl zkVM for EreOpenVM { - type Error = OpenVMError; - +impl EreOpenVM { fn new( program: ::Program, _resource_type: ProverResourceType, ) -> Self { Self { program } } +} +impl zkVM for EreOpenVM { + type Error = OpenVMError; fn execute( &self, diff --git a/crates/ere-pico/src/lib.rs b/crates/ere-pico/src/lib.rs index 9bb00e7..bbd3bd0 100644 --- a/crates/ere-pico/src/lib.rs +++ b/crates/ere-pico/src/lib.rs @@ -51,10 +51,8 @@ pub struct ErePico { program: ::Program, } -impl zkVM for ErePico { - type Error = PicoError; - - fn new( +impl ErePico { + pub fn new( program_bytes: ::Program, _resource_type: ProverResourceType, ) -> Self { @@ -62,6 +60,9 @@ impl zkVM for ErePico { program: program_bytes, } } +} +impl zkVM for ErePico { + type Error = PicoError; fn execute( &self, diff --git a/crates/ere-sp1/src/lib.rs b/crates/ere-sp1/src/lib.rs index 4e2c7af..a354333 100644 --- a/crates/ere-sp1/src/lib.rs +++ b/crates/ere-sp1/src/lib.rs @@ -92,10 +92,8 @@ impl Compiler for RV32_IM_SUCCINCT_ZKVM_ELF { } } -impl zkVM for EreSP1 { - type Error = SP1Error; - - fn new( +impl EreSP1 { + pub fn new( program: ::Program, resource: ProverResourceType, ) -> Self { @@ -112,6 +110,10 @@ impl zkVM for EreSP1 { vk, } } +} + +impl zkVM for EreSP1 { + type Error = SP1Error; fn execute( &self, diff --git a/crates/zkvm-interface/src/lib.rs b/crates/zkvm-interface/src/lib.rs index 367d9fb..842ee67 100644 --- a/crates/zkvm-interface/src/lib.rs +++ b/crates/zkvm-interface/src/lib.rs @@ -25,11 +25,9 @@ pub enum ProverResourceType { #[allow(non_camel_case_types)] /// zkVM trait to abstract away the differences between each zkVM -pub trait zkVM { +pub trait zkVM { type Error: std::error::Error + Send + Sync + 'static; - fn new(program_bytes: C::Program, resource: ProverResourceType) -> Self; - /// Executes the given program with the inputs accumulated in the Input struct. /// For RISCV programs, `program_bytes` will be the ELF binary fn execute(&self, inputs: &Input) -> Result;