diff --git a/evm/src/cpu/kernel/interpreter.rs b/evm/src/cpu/kernel/interpreter.rs index b5f44103..e179d713 100644 --- a/evm/src/cpu/kernel/interpreter.rs +++ b/evm/src/cpu/kernel/interpreter.rs @@ -60,7 +60,8 @@ pub struct Interpreter<'a> { offset: usize, pub(crate) stack: Vec, pub(crate) memory: EvmMemory, - prover_inputs: &'a HashMap, + prover_inputs_map: &'a HashMap, + prover_inputs: Vec, running: bool, } @@ -89,7 +90,8 @@ pub fn run<'a>( offset: initial_offset, stack: initial_stack, memory: EvmMemory::default(), - prover_inputs, + prover_inputs_map: prover_inputs, + prover_inputs: Vec::new(), running: true, }; @@ -343,11 +345,12 @@ impl<'a> Interpreter<'a> { fn run_prover_input(&mut self) -> anyhow::Result<()> { let prover_input_fn = self - .prover_inputs + .prover_inputs_map .get(&(self.offset - 1)) .ok_or_else(|| anyhow!("Offset not in prover inputs."))?; let output = prover_input_fn.run(self.stack.clone()); self.stack.push(output); + self.prover_inputs.push(output); Ok(()) }