diff --git a/zkvm/Cargo.toml b/zkvm/Cargo.toml index fe9cdf66..6ccdbe1d 100644 --- a/zkvm/Cargo.toml +++ b/zkvm/Cargo.toml @@ -20,4 +20,4 @@ backend = { git = "https://github.com/powdr-labs/powdr.git", branch = "main", pa [dev-dependencies] env_logger = "0.10" - +hex = "0.4.3" diff --git a/zkvm/src/lib.rs b/zkvm/src/lib.rs index e682a75f..65f37765 100644 --- a/zkvm/src/lib.rs +++ b/zkvm/src/lib.rs @@ -11,6 +11,8 @@ mod tests { }; use std::path::PathBuf; + static BYTECODE: &str = "61029a60005260206000f3"; + #[test] fn compile_rust_riscv() { env_logger::try_init().unwrap_or_default(); @@ -23,24 +25,31 @@ mod tests { // Compile REVM to powdr asm let powdr_asm = compile_rust(case, &temp_dir, true, &coprocessors, true).unwrap(); + let bytes = hex::decode(BYTECODE).unwrap(); + + let length: GoldilocksField = (bytes.len() as u64).into(); + let mut bytecode: Vec = vec![length]; + bytecode.extend(bytes.into_iter().map(|x| GoldilocksField::from(x as u64))); + // Load the powdr asm - let pipeline_factory = - || Pipeline::default().from_asm_string(powdr_asm.1.clone(), Some(PathBuf::from(case))); + let pipeline_factory = || { + Pipeline::default() + .from_asm_string(powdr_asm.1.clone(), Some(PathBuf::from(case))) + .with_prover_inputs(bytecode.clone()) + }; // Execute the evm and generate inputs for segment let bootloader_inputs = rust_continuations_dry_run::( pipeline_factory(), - [11, 97, 2, 154, 96, 0, 82, 96, 32, 96, 0, 243] - .map(GoldilocksField::from) - .into(), + bytecode.clone() ); // Build the wtns and proof - let prove_with = Some(BackendType::EStark); + //let prove_with = Some(BackendType::EStark); let generate_witness_and_prove_maybe = |mut pipeline: Pipeline| -> Result<(), Vec> { pipeline.advance_to(Stage::GeneratedWitness).unwrap(); - prove_with.map(|backend| pipeline.with_backend(backend).proof().unwrap()); + //prove_with.map(|backend| pipeline.with_backend(backend).proof().unwrap()); Ok(()) };