Skip to content

Commit e0e90bc

Browse files
committed
Return result
1 parent 34cb38d commit e0e90bc

File tree

2 files changed

+16
-26
lines changed

2 files changed

+16
-26
lines changed

openvm/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,7 @@ pub fn prove(
876876
if mock {
877877
do_with_trace(program, inputs, |vm, pk, ctx| {
878878
debug_proving_ctx(vm, pk, &ctx);
879-
});
879+
})?;
880880
} else {
881881
let mut app_prover = sdk.app_prover(exe.clone())?;
882882

openvm/src/trace_generation.rs

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub fn do_with_trace(
3737
&MultiStarkProvingKey<BabyBearSC>,
3838
ProvingContext<<BabyBearPoseidon2Engine as StarkEngine>::PB>,
3939
),
40-
) {
40+
) -> Result<(), Box<dyn std::error::Error>> {
4141
let exe = &program.exe;
4242
let vm_config = program.vm_config.clone();
4343

@@ -47,23 +47,17 @@ pub fn do_with_trace(
4747
let app_config = AppConfig::new(app_fri_params, vm_config.clone());
4848

4949
// Create the SDK
50-
let sdk = PowdrSdk::new(app_config).unwrap();
50+
let sdk = PowdrSdk::new(app_config)?;
5151
// Build owned vm instance, so we can mutate it later
5252
let vm_builder = sdk.app_vm_builder().clone();
5353
let vm_pk = sdk.app_pk().app_vm_pk.clone();
54-
let exe = sdk.convert_to_exe(exe.clone()).unwrap();
55-
let mut vm_instance: VmInstance<_, _> =
56-
new_local_prover(vm_builder, &vm_pk, exe.clone()).unwrap();
54+
let exe = sdk.convert_to_exe(exe.clone())?;
55+
let mut vm_instance: VmInstance<_, _> = new_local_prover(vm_builder, &vm_pk, exe.clone())?;
5756

5857
vm_instance.reset_state(inputs.clone());
5958
let metered_ctx = vm_instance.vm.build_metered_ctx(&exe);
60-
let metered_interpreter = vm_instance
61-
.vm
62-
.metered_interpreter(vm_instance.exe())
63-
.unwrap();
64-
let (segments, _) = metered_interpreter
65-
.execute_metered(inputs.clone(), metered_ctx)
66-
.unwrap();
59+
let metered_interpreter = vm_instance.vm.metered_interpreter(vm_instance.exe())?;
60+
let (segments, _) = metered_interpreter.execute_metered(inputs.clone(), metered_ctx)?;
6761
let mut state = vm_instance.state_mut().take();
6862

6963
// Move `vm` and `interpreter` out of `vm_instance`
@@ -72,7 +66,7 @@ pub fn do_with_trace(
7266
let mut interpreter = vm_instance.interpreter;
7367

7468
// Get reusable inputs for `debug_proving_ctx`, the mock prover API from OVM.
75-
let air_inv = vm.config().create_airs().unwrap();
69+
let air_inv = vm.config().create_airs()?;
7670
let pk = air_inv.keygen::<BabyBearPoseidon2Engine>(&vm.engine);
7771

7872
for (seg_idx, segment) in segments.into_iter().enumerate() {
@@ -91,21 +85,17 @@ pub fn do_with_trace(
9185
system_records,
9286
record_arenas,
9387
to_state,
94-
} = vm
95-
.execute_preflight(
96-
&mut interpreter,
97-
from_state,
98-
Some(num_insns),
99-
&trace_heights,
100-
)
101-
.unwrap();
88+
} = vm.execute_preflight(
89+
&mut interpreter,
90+
from_state,
91+
Some(num_insns),
92+
&trace_heights,
93+
)?;
10294
state = Some(to_state);
10395

104-
// Generate proving context for each segment
105-
let ctx = vm
106-
.generate_proving_ctx(system_records, record_arenas)
107-
.unwrap();
96+
let ctx = vm.generate_proving_ctx(system_records, record_arenas)?;
10897

10998
callback(&vm, &pk, ctx);
11099
}
100+
Ok(())
111101
}

0 commit comments

Comments
 (0)