diff --git a/prover/src/inner/prover.rs b/prover/src/inner/prover.rs index 695ec5d546..9cfb49f244 100644 --- a/prover/src/inner/prover.rs +++ b/prover/src/inner/prover.rs @@ -8,6 +8,7 @@ use crate::{ }; use anyhow::Result; use eth_types::l2_types::BlockTrace; +use snark_verifier_sdk::Snark; use std::marker::PhantomData; mod mock; @@ -15,14 +16,14 @@ mod mock; #[derive(Debug)] pub struct Prover { // Make it public for testing with inner functions (unnecessary for FFI). - pub inner: common::Prover, + pub prover_impl: common::Prover, phantom: PhantomData, } impl From for Prover { - fn from(inner: common::Prover) -> Self { + fn from(prover_impl: common::Prover) -> Self { Self { - inner, + prover_impl, phantom: PhantomData, } } @@ -33,6 +34,14 @@ impl Prover { common::Prover::from_params_dir(params_dir, &[*INNER_DEGREE]).into() } + pub fn gen_inner_snark(&mut self, id: &str, block_traces: Vec) -> Result { + assert!(!block_traces.is_empty()); + let rng = gen_rng(); + let witness_block = chunk_trace_to_witness_block(block_traces)?; + self.prover_impl + .gen_inner_snark::(id, rng, &witness_block) + } + pub fn load_or_gen_inner_proof( &mut self, name: &str, @@ -44,17 +53,10 @@ impl Prover { match output_dir.and_then(|output_dir| Proof::from_json_file(output_dir, &filename).ok()) { Some(proof) => Ok(proof), None => { - assert!(!block_traces.is_empty()); - - let rng = gen_rng(); - let witness_block = chunk_trace_to_witness_block(block_traces)?; - let result = self - .inner - .gen_inner_snark::(id, rng, &witness_block) - .map(|snark| { - let raw_vk = serialize_vk(self.inner.pk(id).unwrap().get_vk()); - Proof::from_snark(snark, raw_vk) - }); + let result = self.gen_inner_snark(id, block_traces).map(|snark| { + let raw_vk = serialize_vk(self.prover_impl.pk(id).unwrap().get_vk()); + Proof::from_snark(snark, raw_vk) + }); if let (Some(output_dir), Ok(proof)) = (output_dir, &result) { proof.dump(output_dir, &filename)?;