Skip to content

Commit 34c61df

Browse files
chore: some more test fixes + clippy
1 parent 329e46b commit 34c61df

File tree

9 files changed

+94
-102
lines changed

9 files changed

+94
-102
lines changed

crates/continuations/src/tests/e2e.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ use super::{
4848
};
4949
use crate::{
5050
circuit::{
51-
deferral::{verify::DeferralMerkleProofs, DeferralCircuitPvs, DEF_HOOK_PVS_AIR_ID},
51+
deferral::{DeferralCircuitPvs, DeferralMerkleProofs, DEF_HOOK_PVS_AIR_ID},
5252
inner::ProofsType,
5353
},
5454
prover::{
@@ -74,7 +74,7 @@ const INPUT_RAW_0: [u8; 8] = [1, 2, 3, 4, 5, 6, 7, 8];
7474
const INPUT_RAW_1: [u8; 8] = [8, 7, 6, 5, 4, 3, 2, 1];
7575
const INPUT_RAW_2: [u8; 8] = [9, 9, 9, 9, 9, 9, 9, 9];
7676

77-
fn make_deferral_extension() -> DeferralExtension {
77+
fn make_deferral_extension(commits: Vec<[u8; 32]>) -> DeferralExtension {
7878
let fns: Vec<_> = (0..NUM_DEF_CIRCUITS)
7979
.map(|idx| {
8080
Arc::new(DeferralFn::new(move |input_raw| {
@@ -89,7 +89,7 @@ fn make_deferral_extension() -> DeferralExtension {
8989
}))
9090
})
9191
.collect();
92-
DeferralExtension::new(fns)
92+
DeferralExtension::new(fns, commits)
9393
}
9494

9595
fn deferral_fn_output(idx: u16, input_raw: &[u8]) -> Vec<u8> {
@@ -230,17 +230,14 @@ fn test_deferral_e2e() -> Result<()> {
230230
let (_, def_circuit_vk) = gpu_engine.keygen(&[empty_air]);
231231
let def_circuit_vk = Arc::new(def_circuit_vk);
232232

233-
let def_leaf_prover = DeferralInnerProver::<2>::new::<GpuEngine>(
234-
def_circuit_vk.clone(),
235-
leaf_system_params(),
236-
false,
237-
);
238-
let def_i0_prover = DeferralInnerProver::<2>::new::<GpuEngine>(
233+
let def_leaf_prover =
234+
DeferralInnerProver::new::<GpuEngine>(def_circuit_vk.clone(), leaf_system_params(), false);
235+
let def_i0_prover = DeferralInnerProver::new::<GpuEngine>(
239236
def_leaf_prover.get_vk(),
240237
internal_system_params(),
241238
false,
242239
);
243-
let def_i1_prover = DeferralInnerProver::<2>::new::<GpuEngine>(
240+
let def_i1_prover = DeferralInnerProver::new::<GpuEngine>(
244241
def_i0_prover.get_vk(),
245242
internal_system_params(),
246243
true,
@@ -288,7 +285,7 @@ fn test_deferral_e2e() -> Result<()> {
288285
rv32i: Rv32I,
289286
rv32m: Rv32M::default(),
290287
io: Rv32Io,
291-
deferral: make_deferral_extension(),
288+
deferral: make_deferral_extension(transpiler_commits.clone()),
292289
};
293290

294291
let elf = Elf::decode(
@@ -408,7 +405,7 @@ fn test_deferral_e2e() -> Result<()> {
408405
proofs: Vec<Proof<SC>>,
409406
leaf_children: Vec<([F; DIGEST_SIZE], [F; DIGEST_SIZE])>,
410407
) -> Result<Proof<SC>> {
411-
let leaf_prover = DeferralInnerProver::<2>::new::<GpuEngine>(
408+
let leaf_prover = DeferralInnerProver::new::<GpuEngine>(
412409
def_circuit_vk.clone(),
413410
leaf_system_params(),
414411
false,
@@ -431,7 +428,7 @@ fn test_deferral_e2e() -> Result<()> {
431428
current_proofs = next;
432429
child_merkle_depth += 1;
433430

434-
let i4l_prover = DeferralInnerProver::<2>::new::<GpuEngine>(
431+
let i4l_prover = DeferralInnerProver::new::<GpuEngine>(
435432
leaf_prover.get_vk(),
436433
internal_system_params(),
437434
false,
@@ -453,7 +450,7 @@ fn test_deferral_e2e() -> Result<()> {
453450
current_proofs = next;
454451
child_merkle_depth += 1;
455452

456-
let ir_prover = DeferralInnerProver::<2>::new::<GpuEngine>(
453+
let ir_prover = DeferralInnerProver::new::<GpuEngine>(
457454
i4l_prover.get_vk(),
458455
internal_system_params(),
459456
true,

crates/continuations/src/tests/mod.rs

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -360,16 +360,9 @@ fn test_root_prover_trace_heights() -> Result<()> {
360360
// DEFERRAL TESTS
361361
///////////////////////////////////////////////////////////////////////////////
362362

363-
#[cfg(feature = "cuda")]
364-
fn generate_single_def_proof(
365-
_child_extra_recursive_layers: usize,
366-
) -> Result<(Arc<MultiStarkVerifyingKey<SC>>, Proof<SC>)> {
367-
dummy::generate_single_dummy_def_proof()
368-
}
369-
370363
#[cfg(feature = "cuda")]
371364
fn aggregate_deferral_layer(
372-
prover: &DeferralInnerProver<2>,
365+
prover: &DeferralInnerProver,
373366
proofs: &[Proof<SC>],
374367
child_is_def: bool,
375368
child_merkle_depth: usize,
@@ -412,17 +405,13 @@ pub(in crate::tests) fn generate_deferral_internal_recursive_proof_from_copies(
412405
let mut current_proofs = vec![def_proof.clone(); num_copies];
413406
let mut child_merkle_depth = 0usize;
414407

415-
let leaf_prover =
416-
DeferralInnerProver::<2>::new::<Engine>(deferral_vk, leaf_system_params(), false);
408+
let leaf_prover = DeferralInnerProver::new::<Engine>(deferral_vk, leaf_system_params(), false);
417409
current_proofs =
418410
aggregate_deferral_layer(&leaf_prover, &current_proofs, false, child_merkle_depth)?;
419411
child_merkle_depth += 1;
420412

421-
let internal_for_leaf_prover = DeferralInnerProver::<2>::new::<Engine>(
422-
leaf_prover.get_vk(),
423-
internal_system_params(),
424-
false,
425-
);
413+
let internal_for_leaf_prover =
414+
DeferralInnerProver::new::<Engine>(leaf_prover.get_vk(), internal_system_params(), false);
426415
current_proofs = aggregate_deferral_layer(
427416
&internal_for_leaf_prover,
428417
&current_proofs,
@@ -433,7 +422,7 @@ pub(in crate::tests) fn generate_deferral_internal_recursive_proof_from_copies(
433422

434423
let child_vk = internal_for_leaf_prover.get_vk();
435424
let internal_recursive_prover =
436-
DeferralInnerProver::<2>::new::<Engine>(child_vk, internal_system_params(), true);
425+
DeferralInnerProver::new::<Engine>(child_vk, internal_system_params(), true);
437426
loop {
438427
current_proofs = aggregate_deferral_layer(
439428
&internal_recursive_prover,
@@ -506,19 +495,14 @@ fn expected_deferral_inner_merkle_commit_from_copies(
506495
}
507496

508497
#[cfg(feature = "cuda")]
509-
#[test_case(0, 1 ; "internal_recursive_dag_commit not set + one child")]
510-
#[test_case(1, 1 ; "internal_recursive_dag_commit set + one child")]
511-
#[test_case(0, 2 ; "internal_recursive_dag_commit not set + two children")]
512-
#[test_case(1, 2 ; "internal_recursive_dag_commit set + two children")]
513-
fn test_deferral_leaf_prover(
514-
child_extra_recursive_layers: usize,
515-
num_children: usize,
516-
) -> Result<()> {
498+
#[test_case(1)]
499+
#[test_case(2)]
500+
fn test_deferral_leaf_prover(num_children: usize) -> Result<()> {
517501
setup_tracing_with_log_level(Level::INFO);
518-
let (deferral_vk, def_proof) = generate_single_def_proof(child_extra_recursive_layers)?;
502+
let (deferral_vk, def_proof) = dummy::generate_single_dummy_def_proof()?;
519503

520504
let deferral_inner_prover =
521-
DeferralInnerProver::<2>::new::<Engine>(deferral_vk, leaf_system_params(), false);
505+
DeferralInnerProver::new::<Engine>(deferral_vk, leaf_system_params(), false);
522506
let wrapped_proof = deferral_inner_prover.agg_prove::<Engine>(
523507
&vec![def_proof.clone(); num_children],
524508
DeferralChildVkKind::DeferralCircuit,
@@ -549,7 +533,7 @@ fn test_deferral_leaf_prover(
549533
#[test_case(5 ; "partially empty aggregation tree")]
550534
fn test_deferral_aggregation(num_children: usize) -> Result<()> {
551535
setup_tracing_with_log_level(Level::INFO);
552-
let (deferral_vk, def_proof) = generate_single_def_proof(0)?;
536+
let (deferral_vk, def_proof) = dummy::generate_single_dummy_def_proof()?;
553537
let (vk, final_proof) = generate_deferral_internal_recursive_proof_from_copies(
554538
deferral_vk,
555539
def_proof.clone(),
@@ -575,21 +559,17 @@ fn test_deferral_aggregation(num_children: usize) -> Result<()> {
575559
#[test]
576560
fn test_deferral_internal_recursive_vk_stabilization() -> Result<()> {
577561
setup_tracing_with_log_level(Level::INFO);
578-
let (deferral_vk, _) = generate_single_def_proof(0)?;
562+
let (deferral_vk, _) = dummy::generate_single_dummy_def_proof()?;
579563

580-
let leaf_prover =
581-
DeferralInnerProver::<2>::new::<Engine>(deferral_vk, leaf_system_params(), false);
582-
let internal_0_prover = DeferralInnerProver::<2>::new::<Engine>(
583-
leaf_prover.get_vk(),
584-
internal_system_params(),
585-
false,
586-
);
587-
let internal_1_prover = DeferralInnerProver::<2>::new::<Engine>(
564+
let leaf_prover = DeferralInnerProver::new::<Engine>(deferral_vk, leaf_system_params(), false);
565+
let internal_0_prover =
566+
DeferralInnerProver::new::<Engine>(leaf_prover.get_vk(), internal_system_params(), false);
567+
let internal_1_prover = DeferralInnerProver::new::<Engine>(
588568
internal_0_prover.get_vk(),
589569
internal_system_params(),
590570
false,
591571
);
592-
let test_prover = DeferralInnerProver::<2>::new::<Engine>(
572+
let test_prover = DeferralInnerProver::new::<Engine>(
593573
internal_1_prover.get_vk(),
594574
internal_system_params(),
595575
true,
@@ -610,7 +590,7 @@ fn test_deferral_hook_prover(num_children: usize) -> Result<()> {
610590
use crate::circuit::utils::vk_commit_components;
611591

612592
setup_tracing_with_log_level(Level::INFO);
613-
let (deferral_vk, def_proof) = generate_single_def_proof(0)?;
593+
let (deferral_vk, def_proof) = dummy::generate_single_dummy_def_proof()?;
614594
let (deferral_internal_recursive_vk, final_inner_proof) =
615595
generate_deferral_internal_recursive_proof_from_copies(
616596
deferral_vk,

crates/sdk/src/prover/deferral/circuit.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ pub struct SingleDefCircuitProver {
3131
pub internal_for_leaf_prover: DeferralInnerProver,
3232
}
3333

34+
pub struct SingleDefCircuitResult {
35+
pub internal_for_leaf_proofs: Vec<Proof<SC>>,
36+
pub leaf_io_commits: Vec<DeferralIoCommit<F>>,
37+
}
38+
3439
impl SingleDefCircuitProver {
3540
pub fn new<DP: DeferralCircuitProver<SC> + 'static>(
3641
def_circuit_prover: DP,
@@ -64,19 +69,16 @@ impl SingleDefCircuitProver {
6469
}
6570
}
6671

67-
pub fn prove(
68-
&self,
69-
inputs: &DeferralInput,
70-
) -> Result<(Vec<Proof<SC>>, Vec<DeferralIoCommit<F>>)> {
72+
pub fn prove(&self, inputs: &DeferralInput) -> Result<SingleDefCircuitResult> {
7173
// Generate deferral circuit proofs
7274
let def_proofs = inputs
7375
.byte_vec
7476
.iter()
75-
.map(|input| self.def_circuit_prover.prove(&input))
77+
.map(|input| self.def_circuit_prover.prove(input))
7678
.collect_vec();
7779

7880
// Extract leaf IO commits from the deferral circuit proofs
79-
let leaf_children = def_proofs
81+
let leaf_io_commits = def_proofs
8082
.iter()
8183
.map(|proof| {
8284
let pvs: &DeferralCircuitPvs<F> = proof.public_values[DEF_CIRCUIT_PVS_AIR_ID]
@@ -116,8 +118,8 @@ impl SingleDefCircuitProver {
116118
// Verify leaf-layer proofs and generate internal-for-leaf-layer proofs
117119
let mut internal_node_idx = 0u32;
118120
let child_merkle_depth = (leaf_proofs.len() != 1).then_some(1);
119-
let internal_proofs =
120-
info_span!("agg_layer", group = "internal_for_leaf").in_scope(|| {
121+
let internal_for_leaf_proofs = info_span!("agg_layer", group = "internal_for_leaf")
122+
.in_scope(|| {
121123
leaf_proofs
122124
.chunks(2)
123125
.map(|proofs| {
@@ -135,7 +137,10 @@ impl SingleDefCircuitProver {
135137
.collect::<Result<Vec<_>>>()
136138
})?;
137139

138-
Ok((internal_proofs, leaf_children))
140+
Ok(SingleDefCircuitResult {
141+
internal_for_leaf_proofs,
142+
leaf_io_commits,
143+
})
139144
}
140145

141146
pub fn vk_commit(&self, internal_for_leaf_dag_commit: DagCommit<F>) -> Digest {

crates/sdk/src/prover/deferral/mod.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use std::sync::Arc;
33
use eyre::Result;
44
use openvm_continuations::{
55
bn254::CommitBytes,
6-
circuit::deferral::hook::DeferralIoCommit,
76
prover::{DeferralChildVkKind, DeferralCircuitProver},
87
SC,
98
};
@@ -40,6 +39,7 @@ pub use merkle::*;
4039

4140
pub type DefAggProvingKey = AggProvingKey;
4241

42+
#[allow(clippy::large_enum_variant)]
4343
pub enum DeferralProof {
4444
Present(Proof<SC>),
4545
Absent(DeferralPvs<F>),
@@ -51,6 +51,9 @@ pub struct DeferralProver {
5151
pub def_hook_prover: DeferralHookProver,
5252
}
5353

54+
unsafe impl Send for DeferralProver {}
55+
unsafe impl Sync for DeferralProver {}
56+
5457
impl DeferralProver {
5558
pub fn new<DP: DeferralCircuitProver<SC> + 'static>(
5659
def_circuit_prover: DP,
@@ -123,7 +126,7 @@ impl DeferralProver {
123126

124127
pub fn prove(&self, inputs: &[DeferralInput]) -> Result<Vec<DeferralProof>> {
125128
// Generate internal-for-leaf proofs and leaf IO commits per circuit
126-
let per_circuit: Vec<(Vec<Proof<SC>>, Vec<DeferralIoCommit<F>>)> = self
129+
let per_circuit = self
127130
.single_circuit_provers
128131
.iter()
129132
.zip(inputs)
@@ -134,7 +137,8 @@ impl DeferralProver {
134137
per_circuit
135138
.into_iter()
136139
.enumerate()
137-
.map(|(circuit_idx, (mut proofs, leaf_children))| {
140+
.map(|(circuit_idx, res)| {
141+
let mut proofs = res.internal_for_leaf_proofs;
138142
if proofs.is_empty() {
139143
let def_vk_commit = self.single_circuit_provers[circuit_idx]
140144
.vk_commit(self.internal_recursive_prover.get_dag_commit(false));
@@ -199,7 +203,7 @@ impl DeferralProver {
199203
// Generate the deferral hook proof
200204
Ok(DeferralProof::Present(
201205
self.def_hook_prover
202-
.prove::<E>(proofs.pop().unwrap(), leaf_children)?,
206+
.prove::<E>(proofs.pop().unwrap(), res.leaf_io_commits)?,
203207
))
204208
}
205209
})

crates/sdk/src/stdin.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ impl DeferralInput {
8080
pub fn into_inputs<I: Decode>(self) -> Vec<I> {
8181
self.byte_vec
8282
.iter()
83-
.map(|input| I::decode_from_bytes(&input).unwrap())
83+
.map(|input| I::decode_from_bytes(input).unwrap())
8484
.collect_vec()
8585
}
8686

crates/sdk/src/tests.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ use openvm_stark_sdk::config::{
1010
root_params_with_100_bits_security,
1111
};
1212
use openvm_transpiler::elf::Elf;
13-
use openvm_verify_stark_circuit::{
14-
extension::{get_deferral_state, get_raw_deferral_results, verify_stark_deferral_fn},
15-
prover::{DefaultEngine, DeferredVerifyDefaultCircuitProver, DeferredVerifyDefaultProver},
13+
use openvm_verify_stark_circuit::extension::{
14+
get_deferral_state, get_raw_deferral_results, verify_stark_deferral_fn,
1615
};
1716
use openvm_verify_stark_host::vk::NonRootStarkVerifyingKey;
1817

@@ -22,7 +21,19 @@ use crate::{
2221
CpuSdk, DeferralInput, Sdk, StdIn,
2322
};
2423

25-
type E = openvm_stark_sdk::config::baby_bear_bn254_poseidon2::BabyBearBn254Poseidon2CpuEngine;
24+
cfg_if::cfg_if! {
25+
if #[cfg(feature = "cuda")] {
26+
use openvm_verify_stark_circuit::prover::DeferredVerifyGpuProver as VerifyProver;
27+
use openvm_verify_stark_circuit::prover::DeferredVerifyGpuCircuitProver as VerifyCircuitProver;
28+
type E = openvm_cuda_backend::BabyBearPoseidon2GpuEngine;
29+
type RootE = openvm_stark_sdk::config::baby_bear_bn254_poseidon2::BabyBearBn254Poseidon2CpuEngine;
30+
} else {
31+
use openvm_verify_stark_circuit::prover::DeferredVerifyCpuProver as VerifyProver;
32+
use openvm_verify_stark_circuit::prover::DeferredVerifyCpuCircuitProver as VerifyCircuitProver;
33+
type E = openvm_stark_sdk::config::baby_bear_poseidon2::BabyBearPoseidon2CpuEngine;
34+
type RootE = openvm_stark_sdk::config::baby_bear_bn254_poseidon2::BabyBearBn254Poseidon2CpuEngine;
35+
}
36+
}
2637

2738
#[test]
2839
fn test_root_prover_trace_heights() -> Result<()> {
@@ -45,7 +56,7 @@ fn test_root_prover_trace_heights() -> Result<()> {
4556

4657
let proof = evm_prover.prove(stdin)?;
4758
let vk = evm_prover.root_prover.0.get_vk();
48-
let engine = E::new(vk.inner.params.clone());
59+
let engine = RootE::new(vk.inner.params.clone());
4960
engine.verify(&vk, &proof)?;
5061

5162
Ok(())
@@ -85,15 +96,15 @@ fn test_verify_stark_deferral() -> Result<()> {
8596
let num_user_pvs = fib_system_config.num_public_values;
8697

8798
let def_circuit_params = internal_params_with_100_bits_security();
88-
let deferred_verify_prover = DeferredVerifyDefaultProver::new::<DefaultEngine>(
99+
let deferred_verify_prover = VerifyProver::new::<E>(
89100
ir_vk,
90101
ir_pcs_data,
91102
def_circuit_params,
92103
memory_dimensions,
93104
num_user_pvs,
94105
None,
95106
);
96-
let verify_stark_prover = DeferredVerifyDefaultCircuitProver::new(deferred_verify_prover);
107+
let verify_stark_prover = VerifyCircuitProver::new(deferred_verify_prover);
97108

98109
// ---- Step 3: Create DeferralProver ----
99110
let hook_params = root_params_with_100_bits_security();

0 commit comments

Comments
 (0)