@@ -11,7 +11,10 @@ use openvm_native_circuit::NativeGpuBuilder as NativeBuilder;
1111use openvm_circuit:: arch:: instructions:: exe:: VmExe ;
1212use openvm_sdk:: { DefaultStarkEngine , config:: SdkVmBuilder } ;
1313use openvm_sdk:: { F , Sdk , StdIn , prover:: StarkProver } ;
14- use scroll_zkvm_types:: { proof:: OpenVmEvmProof , types_agg:: ProgramCommitment , utils:: serialize_vk} ;
14+ use scroll_zkvm_types:: {
15+ proof:: OpenVmEvmProof , types_agg:: ProgramCommitment , utils:: serialize_vk,
16+ zkvm:: AGG_STARK_PROVING_KEY_V13 ,
17+ } ;
1518use scroll_zkvm_verifier:: verifier:: { AGG_STARK_PROVING_KEY , UniversalVerifier } ;
1619use tracing:: instrument;
1720
@@ -46,6 +49,8 @@ pub struct ProverConfig {
4649 pub path_app_config : PathBuf ,
4750 /// The maximum length for a single OpenVM segment.
4851 pub segment_len : Option < usize > ,
52+ /// Use v1.3 openvm
53+ pub is_openvm_v13 : bool ,
4954}
5055
5156const DEFAULT_SEGMENT_SIZE : usize = ( 1 << 22 ) - 1000 ;
@@ -81,9 +86,22 @@ impl Prover {
8186 segmentation_limits. max_trace_height = segment_len as u32 ;
8287 segmentation_limits. max_cells = 1_200_000_000_usize ; // For 24G vram
8388
84- let sdk = Sdk :: new ( app_config) . expect ( "sdk init failed" ) ;
89+ let mut sdk = Sdk :: new ( app_config) . expect ( "sdk init failed" ) ;
90+
91+ let verifier_k = if self . config . is_openvm_v13 { 24 } else { 23 } ;
92+ tracing:: info!(
93+ "changing openvm_sdk.halo2_config.verifier_k from {} to {}" ,
94+ sdk. halo2_config( ) . verifier_k,
95+ verifier_k
96+ ) ;
97+ sdk. halo2_config_mut ( ) . verifier_k = verifier_k;
98+
8599 // 45s for first time
86- let sdk = sdk. with_agg_pk ( AGG_STARK_PROVING_KEY . clone ( ) ) ;
100+ let sdk = sdk. with_agg_pk ( if self . config . is_openvm_v13 {
101+ AGG_STARK_PROVING_KEY_V13 . clone ( )
102+ } else {
103+ AGG_STARK_PROVING_KEY . clone ( )
104+ } ) ;
87105 Ok ( sdk)
88106 } )
89107 }
0 commit comments