@@ -5,7 +5,7 @@ pub use verifier::{TaskType, VerifierConfig};
55mod utils;
66
77use sbv_primitives:: B256 ;
8- use scroll_zkvm_types:: { public_inputs :: ForkName , util:: vec_as_base64} ;
8+ use scroll_zkvm_types:: util:: vec_as_base64;
99use serde:: { Deserialize , Serialize } ;
1010use serde_json:: value:: RawValue ;
1111use std:: path:: Path ;
@@ -49,27 +49,39 @@ pub fn gen_universal_task(
4949 let ( pi_hash, metadata, mut u_task) = match task_type {
5050 x if x == TaskType :: Chunk as i32 => {
5151 let mut task = serde_json:: from_str :: < ChunkProvingTask > ( task_json) ?;
52- let fork_name = ForkName :: from ( task. fork_name . to_lowercase ( ) . as_str ( ) ) ;
53- task. fork_name = fork_name. to_string ( ) ;
54- assert_eq ! ( fork_name_str, task. fork_name. as_str( ) ) ;
55- let ( pi_hash, metadata, u_task) =
56- gen_universal_chunk_task ( task, fork_name, interpreter) ?;
52+ // normailze fork name field in task
53+ task. fork_name = task. fork_name . to_lowercase ( ) ;
54+ // always respect the fork_name_str (which has been normalized) being passed
55+ // if the fork_name wrapped in task is not match, consider it a malformed task
56+ if fork_name_str != task. fork_name . as_str ( ) {
57+ eyre:: bail!( "fork name in chunk task not match the calling arg, expected {fork_name_str}, get {}" , task. fork_name) ;
58+ }
59+ let ( pi_hash, metadata, u_task) = utils:: panic_catch ( move || {
60+ gen_universal_chunk_task ( task, fork_name_str. into ( ) , interpreter)
61+ } )
62+ . map_err ( |e| eyre:: eyre!( "catched panic in chunk task{e}" ) ) ??;
5763 ( pi_hash, AnyMetaData :: Chunk ( metadata) , u_task)
5864 }
5965 x if x == TaskType :: Batch as i32 => {
6066 let mut task = serde_json:: from_str :: < BatchProvingTask > ( task_json) ?;
61- let fork_name = ForkName :: from ( task. fork_name . to_lowercase ( ) . as_str ( ) ) ;
62- task. fork_name = fork_name. to_string ( ) ;
63- assert_eq ! ( fork_name_str, task. fork_name. as_str( ) ) ;
64- let ( pi_hash, metadata, u_task) = gen_universal_batch_task ( task, fork_name) ?;
67+ task. fork_name = task. fork_name . to_lowercase ( ) ;
68+ if fork_name_str != task. fork_name . as_str ( ) {
69+ eyre:: bail!( "fork name in batch task not match the calling arg, expected {fork_name_str}, get {}" , task. fork_name) ;
70+ }
71+ let ( pi_hash, metadata, u_task) =
72+ utils:: panic_catch ( move || gen_universal_batch_task ( task, fork_name_str. into ( ) ) )
73+ . map_err ( |e| eyre:: eyre!( "catched panic in chunk task{e}" ) ) ??;
6574 ( pi_hash, AnyMetaData :: Batch ( metadata) , u_task)
6675 }
6776 x if x == TaskType :: Bundle as i32 => {
6877 let mut task = serde_json:: from_str :: < BundleProvingTask > ( task_json) ?;
69- let fork_name = ForkName :: from ( task. fork_name . to_lowercase ( ) . as_str ( ) ) ;
70- task. fork_name = fork_name. to_string ( ) ;
71- assert_eq ! ( fork_name_str, task. fork_name. as_str( ) ) ;
72- let ( pi_hash, metadata, u_task) = gen_universal_bundle_task ( task, fork_name) ?;
78+ task. fork_name = task. fork_name . to_lowercase ( ) ;
79+ if fork_name_str != task. fork_name . as_str ( ) {
80+ eyre:: bail!( "fork name in bundle task not match the calling arg, expected {fork_name_str}, get {}" , task. fork_name) ;
81+ }
82+ let ( pi_hash, metadata, u_task) =
83+ utils:: panic_catch ( move || gen_universal_bundle_task ( task, fork_name_str. into ( ) ) )
84+ . map_err ( |e| eyre:: eyre!( "catched panic in chunk task{e}" ) ) ??;
7385 ( pi_hash, AnyMetaData :: Bundle ( metadata) , u_task)
7486 }
7587 _ => return Err ( eyre:: eyre!( "unrecognized task type {task_type}" ) ) ,
0 commit comments