1- mod operation;
2- mod statement;
1+ use anyhow:: { anyhow, Result } ;
2+ use itertools:: Itertools ;
3+ use plonky2:: hash:: poseidon:: PoseidonHash ;
4+ use plonky2:: plonk:: config:: Hasher ;
5+ use std:: any:: Any ;
6+ use std:: fmt;
37
48use crate :: middleware:: {
5- self , hash_str, AnchoredKey , Hash , MainPodInputs , NativeOperation , NativeStatement , NonePod ,
9+ self , hash_str, AnchoredKey , Hash , MainPodInputs , NativeOperation , NativePredicate , NonePod ,
610 Params , Pod , PodId , PodProver , StatementArg , ToFields , KEY_TYPE , SELF ,
711} ;
8- use anyhow:: Result ;
9- use itertools:: Itertools ;
12+
13+ mod operation;
14+ mod statement;
1015pub use operation:: * ;
11- use plonky2:: hash:: poseidon:: PoseidonHash ;
12- use plonky2:: plonk:: config:: Hasher ;
1316pub use statement:: * ;
14- use std:: any:: Any ;
15- use std:: fmt;
1617
1718pub const VALUE_TYPE : & str = "MockMainPOD" ;
1819
@@ -222,26 +223,25 @@ impl MockMainPod {
222223 fn find_op_arg (
223224 statements : & [ Statement ] ,
224225 op_arg : & middleware:: Statement ,
225- ) -> Result < OperationArg , OperationArgError > {
226+ ) -> Result < OperationArg > {
226227 match op_arg {
227228 middleware:: Statement :: None => Ok ( OperationArg :: None ) ,
228229 _ => statements
229230 . iter ( )
230231 . enumerate ( )
231232 . find_map ( |( i, s) | {
232- // TODO: Error handling
233- ( & middleware:: Statement :: try_from ( s. clone ( ) ) . unwrap ( ) == op_arg) . then_some ( i)
233+ ( & middleware:: Statement :: try_from ( s. clone ( ) ) . ok ( ) ? == op_arg) . then_some ( i)
234234 } )
235235 . map ( OperationArg :: Index )
236- . ok_or ( OperationArgError :: StatementNotFound ) ,
236+ . ok_or ( anyhow ! ( "statement not found" ) ) ,
237237 }
238238 }
239239
240240 fn process_private_statements_operations (
241241 params : & Params ,
242242 statements : & [ Statement ] ,
243243 input_operations : & [ middleware:: Operation ] ,
244- ) -> Result < Vec < Operation > , OperationArgError > {
244+ ) -> Result < Vec < Operation > > {
245245 let mut operations = Vec :: new ( ) ;
246246 for i in 0 ..params. max_priv_statements ( ) {
247247 let op = input_operations
@@ -252,7 +252,7 @@ impl MockMainPod {
252252 let mut args = mid_args
253253 . iter ( )
254254 . map ( |mid_arg| Self :: find_op_arg ( statements, mid_arg) )
255- . collect :: < Result < Vec < _ > , OperationArgError > > ( ) ?;
255+ . collect :: < Result < Vec < _ > > > ( ) ?;
256256 Self :: pad_operation_args ( params, & mut args) ;
257257 operations. push ( Operation ( op. code ( ) , args) ) ;
258258 }
@@ -265,7 +265,7 @@ impl MockMainPod {
265265 params : & Params ,
266266 statements : & [ Statement ] ,
267267 mut operations : Vec < Operation > ,
268- ) -> Result < Vec < Operation > , OperationArgError > {
268+ ) -> Result < Vec < Operation > > {
269269 let offset_public_statements = statements. len ( ) - params. max_public_statements ;
270270 operations. push ( Operation ( NativeOperation :: NewEntry , vec ! [ ] ) ) ;
271271 for i in 0 ..( params. max_public_statements - 1 ) {
@@ -318,7 +318,7 @@ impl MockMainPod {
318318 statements[ statements. len ( ) - params. max_public_statements ..] . to_vec ( ) ;
319319
320320 // get the id out of the public statements
321- let id: PodId = PodId ( hash_statements ( & public_statements) ? ) ;
321+ let id: PodId = PodId ( hash_statements ( & public_statements) ) ;
322322
323323 Ok ( Self {
324324 params : params. clone ( ) ,
@@ -335,7 +335,7 @@ impl MockMainPod {
335335 fn statement_none ( params : & Params ) -> Statement {
336336 let mut args = Vec :: with_capacity ( params. max_statement_args ) ;
337337 Self :: pad_statement_args ( & params, & mut args) ;
338- Statement ( NativeStatement :: None , args)
338+ Statement ( NativePredicate :: None , args)
339339 }
340340
341341 fn operation_none ( params : & Params ) -> Operation {
@@ -353,12 +353,12 @@ impl MockMainPod {
353353 }
354354}
355355
356- pub fn hash_statements ( statements : & [ Statement ] ) -> Result < middleware:: Hash > {
356+ pub fn hash_statements ( statements : & [ Statement ] ) -> middleware:: Hash {
357357 let field_elems = statements
358358 . into_iter ( )
359359 . flat_map ( |statement| statement. clone ( ) . to_fields ( ) . 0 )
360360 . collect :: < Vec < _ > > ( ) ;
361- Ok ( Hash ( PoseidonHash :: hash_no_pad ( & field_elems) . elements ) )
361+ Hash ( PoseidonHash :: hash_no_pad ( & field_elems) . elements )
362362}
363363
364364impl Pod for MockMainPod {
@@ -367,14 +367,14 @@ impl Pod for MockMainPod {
367367 // get the input_statements from the self.statements
368368 let input_statements = & self . statements [ input_statement_offset..] ;
369369 // get the id out of the public statements, and ensure it is equal to self.id
370- let ids_match = self . id == PodId ( hash_statements ( & self . public_statements ) . unwrap ( ) ) ;
370+ let ids_match = self . id == PodId ( hash_statements ( & self . public_statements ) ) ;
371371 // find a ValueOf statement from the public statements with key=KEY_TYPE and check that the
372372 // value is PodType::MockMainPod
373373 let has_type_statement = self
374374 . public_statements
375375 . iter ( )
376376 . find ( |s| {
377- s. 0 == NativeStatement :: ValueOf
377+ s. 0 == NativePredicate :: ValueOf
378378 && s. 1 . len ( ) > 0
379379 && if let StatementArg :: Key ( AnchoredKey ( pod_id, key_hash) ) = s. 1 [ 0 ] {
380380 pod_id == SELF && key_hash == hash_str ( KEY_TYPE )
@@ -402,7 +402,7 @@ impl Pod for MockMainPod {
402402 s,
403403 )
404404 } )
405- . filter ( |( _, s) | s. 0 == NativeStatement :: ValueOf )
405+ . filter ( |( _, s) | s. 0 == NativePredicate :: ValueOf )
406406 . flat_map ( |( i, s) | {
407407 if let StatementArg :: Key ( ak) = & s. 1 [ 0 ] {
408408 vec ! [ ( i, ak. 1 , ak. 0 ) ]
@@ -473,37 +473,38 @@ pub mod tests {
473473 use crate :: middleware;
474474
475475 #[ test]
476- fn test_mock_main_zu_kyc ( ) {
476+ fn test_mock_main_zu_kyc ( ) -> Result < ( ) > {
477477 let params = middleware:: Params :: default ( ) ;
478478
479479 let ( gov_id_builder, pay_stub_builder) = zu_kyc_sign_pod_builders ( & params) ;
480480 let mut signer = MockSigner {
481481 pk : "ZooGov" . into ( ) ,
482482 } ;
483- let gov_id_pod = gov_id_builder. sign ( & mut signer) . unwrap ( ) ;
483+ let gov_id_pod = gov_id_builder. sign ( & mut signer) ? ;
484484 let mut signer = MockSigner {
485485 pk : "ZooDeel" . into ( ) ,
486486 } ;
487- let pay_stub_pod = pay_stub_builder. sign ( & mut signer) . unwrap ( ) ;
487+ let pay_stub_pod = pay_stub_builder. sign ( & mut signer) ? ;
488488 let kyc_builder = zu_kyc_pod_builder ( & params, & gov_id_pod, & pay_stub_pod) ;
489489
490490 let mut prover = MockProver { } ;
491- let kyc_pod = kyc_builder. prove ( & mut prover) . unwrap ( ) ;
491+ let kyc_pod = kyc_builder. prove ( & mut prover) ? ;
492492 let pod = kyc_pod. pod . into_any ( ) . downcast :: < MockMainPod > ( ) . unwrap ( ) ;
493493
494494 println ! ( "{:#}" , pod) ;
495495
496496 assert_eq ! ( pod. verify( ) , true ) ; // TODO
497497 // println!("id: {}", pod.id());
498498 // println!("pub_statements: {:?}", pod.pub_statements());
499+ Ok ( ( ) )
499500 }
500501
501502 #[ test]
502- fn test_mock_main_great_boy ( ) {
503+ fn test_mock_main_great_boy ( ) -> Result < ( ) > {
503504 let great_boy_builder = great_boy_pod_full_flow ( ) ;
504505
505506 let mut prover = MockProver { } ;
506- let great_boy_pod = great_boy_builder. prove ( & mut prover) . unwrap ( ) ;
507+ let great_boy_pod = great_boy_builder. prove ( & mut prover) ? ;
507508 let pod = great_boy_pod
508509 . pod
509510 . into_any ( )
@@ -513,16 +514,20 @@ pub mod tests {
513514 println ! ( "{}" , pod) ;
514515
515516 assert_eq ! ( pod. verify( ) , true ) ;
517+
518+ Ok ( ( ) )
516519 }
517520
518521 #[ test]
519- fn test_mock_main_tickets ( ) {
522+ fn test_mock_main_tickets ( ) -> Result < ( ) > {
520523 let tickets_builder = tickets_pod_full_flow ( ) ;
521524 let mut prover = MockProver { } ;
522- let proof_pod = tickets_builder. prove ( & mut prover) . unwrap ( ) ;
525+ let proof_pod = tickets_builder. prove ( & mut prover) ? ;
523526 let pod = proof_pod. pod . into_any ( ) . downcast :: < MockMainPod > ( ) . unwrap ( ) ;
524527
525528 println ! ( "{}" , pod) ;
526529 assert_eq ! ( pod. verify( ) , true ) ;
530+
531+ Ok ( ( ) )
527532 }
528533}
0 commit comments