@@ -48,6 +48,47 @@ pub fn checkout_chunk_task(
4848 ) ?)
4949}
5050
51+ /// Convert the universal task json into compatible form for old prover
52+ pub fn univ_task_compatibility_fix ( task_json : & str ) -> eyre:: Result < String > {
53+ use scroll_zkvm_types:: proof:: VmInternalStarkProof ;
54+
55+ let task: tasks:: ProvingTask = serde_json:: from_str ( task_json) ?;
56+ let aggregated_proofs: Vec < VmInternalStarkProof > = task
57+ . aggregated_proofs
58+ . into_iter ( )
59+ . map ( |proof| VmInternalStarkProof {
60+ proofs : proof. proofs ,
61+ public_values : proof. public_values ,
62+ } )
63+ . collect ( ) ;
64+
65+ #[ derive( Serialize ) ]
66+ struct CompatibleProvingTask {
67+ /// seralized witness which should be written into stdin first
68+ pub serialized_witness : Vec < Vec < u8 > > ,
69+ /// aggregated proof carried by babybear fields, should be written into stdin
70+ /// followed `serialized_witness`
71+ pub aggregated_proofs : Vec < VmInternalStarkProof > ,
72+ /// Fork name specify
73+ pub fork_name : String ,
74+ /// The vk of app which is expcted to prove this task
75+ pub vk : Vec < u8 > ,
76+ /// An identifier assigned by coordinator, it should be kept identify for the
77+ /// same task (for example, using chunk, batch and bundle hashes)
78+ pub identifier : String ,
79+ }
80+
81+ let compatible_u_task = CompatibleProvingTask {
82+ serialized_witness : task. serialized_witness ,
83+ aggregated_proofs,
84+ fork_name : task. fork_name ,
85+ vk : task. vk ,
86+ identifier : task. identifier ,
87+ } ;
88+
89+ Ok ( serde_json:: to_string ( & compatible_u_task) ?)
90+ }
91+
5192/// Generate required staff for proving tasks
5293/// return (pi_hash, metadata, task)
5394pub fn gen_universal_task (
0 commit comments