@@ -23,20 +23,18 @@ use dotenv::dotenv;
23
23
use eyre:: Result ;
24
24
use openvm_build:: GuestOptions ;
25
25
use openvm_native_compiler:: ir:: DIGEST_SIZE ;
26
- use openvm_native_recursion:: halo2:: utils:: { CacheHalo2ParamsReader , Halo2ParamsReader } ;
27
26
use openvm_sdk:: {
28
- DefaultStaticVerifierPvHandler , F , Sdk ,
27
+ F , Sdk ,
29
28
commit:: CommitBytes ,
30
- config:: { AggConfig , AppConfig , SdkVmConfig } ,
29
+ config:: { AppConfig , SdkVmConfig } ,
31
30
fs:: write_exe_to_file,
32
31
} ;
33
32
use openvm_stark_sdk:: { openvm_stark_backend:: p3_field:: PrimeField32 , p3_bn254_fr:: Bn254Fr } ;
34
33
use snark_verifier_sdk:: snark_verifier:: loader:: evm:: compile_solidity;
35
34
36
- const LOG_PREFIX : & str = "[build-guest]" ;
35
+ mod verifier ;
37
36
38
- /// The default directory to locate openvm's halo2 SRS parameters.
39
- const DEFAULT_PARAMS_DIR : & str = concat ! ( env!( "HOME" ) , "/.openvm/params/" ) ;
37
+ pub ( crate ) const LOG_PREFIX : & str = "[build-guest]" ;
40
38
41
39
/// File descriptor for app openvm config.
42
40
const FD_APP_CONFIG : & str = "openvm.toml" ;
@@ -336,54 +334,18 @@ fn run_stage5_dump_evm_verifier(verifier_output_dir: &PathBuf, recompute_mode: b
336
334
if let Some ( parent) = path_verifier_bin. parent ( ) {
337
335
std:: fs:: create_dir_all ( parent) ?;
338
336
}
339
- let verifier_contract = if recompute_mode {
340
- let dir_halo2_params = Path :: new ( DEFAULT_PARAMS_DIR ) . to_path_buf ( ) ;
341
- let halo2_params_reader = CacheHalo2ParamsReader :: new ( & dir_halo2_params) ;
342
- let agg_pk = Sdk :: new ( ) . agg_keygen (
343
- AggConfig :: default ( ) ,
344
- & halo2_params_reader,
345
- & DefaultStaticVerifierPvHandler ,
346
- ) ?;
347
- let halo2_params = halo2_params_reader
348
- . read_params ( agg_pk. halo2_pk . wrapper . pinning . metadata . config_params . k ) ;
349
- snark_verifier_sdk:: evm:: gen_evm_verifier_shplonk :: <
350
- snark_verifier_sdk:: halo2:: aggregation:: AggregationCircuit ,
351
- > (
352
- & halo2_params,
353
- agg_pk. halo2_pk . wrapper . pinning . pk . get_vk ( ) ,
354
- agg_pk. halo2_pk . wrapper . pinning . metadata . num_pvs . clone ( ) ,
355
- Some ( & path_verifier_sol) ,
356
- )
357
- } else {
358
- println ! ( "{LOG_PREFIX} Downloading pre-built verifier from openvm-solidity-sdk..." ) ;
359
- let verifier_url = "https://github.com/openvm-org/openvm-solidity-sdk/raw/refs/heads/main/src/v1.3/Halo2Verifier.sol" ;
360
-
361
- let output = std:: process:: Command :: new ( "wget" )
362
- . arg ( "-q" )
363
- . arg ( "-O" )
364
- . arg ( "-" )
365
- . arg ( verifier_url)
366
- . output ( ) ?;
367
-
368
- if !output. status . success ( ) {
369
- return Err ( eyre:: eyre!(
370
- "Failed to download verifier from {}: wget exited with code {:?}" ,
371
- verifier_url,
372
- output. status. code( )
373
- ) ) ;
374
- }
375
337
376
- let sol_code = String :: from_utf8 ( output. stdout ) ?;
377
- std:: fs:: write ( & path_verifier_sol, & sol_code) ?;
378
- println ! (
379
- "{LOG_PREFIX} Downloaded verifier.sol to {}" ,
380
- path_verifier_sol. display( )
381
- ) ;
382
-
383
- compile_solidity ( & sol_code)
338
+ let verifier_sol = if recompute_mode {
339
+ verifier:: generate_evm_verifier ( ) ?
340
+ } else {
341
+ verifier:: download_evm_verifier ( ) ?
384
342
} ;
385
- std:: fs:: write ( & path_verifier_bin, & verifier_contract) ?;
386
- println ! ( "{LOG_PREFIX} verifier_contract written to {path_verifier_bin:?}" ) ;
343
+ std:: fs:: write ( & path_verifier_sol, & verifier_sol) ?;
344
+ println ! ( "{LOG_PREFIX} verifier_sol written to {path_verifier_sol:?}" ) ;
345
+
346
+ let verifier_bin = compile_solidity ( & verifier_sol) ;
347
+ std:: fs:: write ( & path_verifier_bin, & verifier_bin) ?;
348
+ println ! ( "{LOG_PREFIX} verifier_bin written to {path_verifier_bin:?}" ) ;
387
349
388
350
println ! ( "{LOG_PREFIX} === Stage 5 Finished ===" ) ;
389
351
Ok ( ( ) )
@@ -470,6 +432,7 @@ pub fn main() -> Result<()> {
470
432
471
433
run_stage4_dump_vk_json ( & release_output_dir, leaf_commitments, exe_commitments) ?;
472
434
435
+ env:: set_current_dir ( & workspace_dir) ?;
473
436
run_stage5_dump_evm_verifier (
474
437
& release_output_dir. join ( "verifier" ) ,
475
438
stages_to_run. contains ( "stage5" ) ,
0 commit comments