@@ -46,6 +46,7 @@ use std::{
4646
4747use dense_mlpoly:: { DensePolynomial , PolyEvalProof } ;
4848use errors:: { ProofVerifyError , R1CSError } ;
49+ use halo2curves:: serde:: SerdeObject ;
4950use instance:: Instance ;
5051use itertools:: Itertools ;
5152use math:: Math ;
@@ -79,34 +80,21 @@ pub struct ComputationDecommitment<S: SpartanExtensionField> {
7980#[ derive( Clone , Serialize , Deserialize ) ]
8081pub struct Assignment < S : SpartanExtensionField > {
8182 /// Entries of an assignment
82- pub assignment : Vec < S > ,
83+ pub assignment : Vec < S :: BaseField > ,
8384}
8485
8586impl < S : SpartanExtensionField > Assignment < S > {
8687 /// Constructs a new `Assignment` from a vector
8788 pub fn new ( assignment : & [ [ u8 ; 32 ] ] ) -> Result < Assignment < S > , R1CSError > {
88- let bytes_to_scalar = |vec : & [ [ u8 ; 32 ] ] | -> Result < Vec < S > , R1CSError > {
89- let mut vec_scalar: Vec < S > = Vec :: new ( ) ;
90- for v in vec {
91- let val = S :: from_bytes ( v) ;
92- if val. is_some ( ) . unwrap_u8 ( ) == 1 {
93- vec_scalar. push ( val. unwrap ( ) ) ;
94- } else {
95- return Err ( R1CSError :: InvalidScalar ) ;
96- }
97- }
98- Ok ( vec_scalar)
89+ let bytes_to_scalar = |vec : & [ [ u8 ; 32 ] ] | -> Result < Vec < S :: BaseField > , R1CSError > {
90+ vec
91+ . into_iter ( )
92+ . map ( |v| S :: BaseField :: from_raw_bytes ( v) . ok_or ( R1CSError :: InvalidScalar ) )
93+ . collect ( )
9994 } ;
10095 let assignment_scalar = bytes_to_scalar ( assignment) ;
10196
102- // check for any parsing errors
103- if assignment_scalar. is_err ( ) {
104- return Err ( R1CSError :: InvalidScalar ) ;
105- }
106-
107- Ok ( Assignment {
108- assignment : assignment_scalar. unwrap ( ) ,
109- } )
97+ assignment_scalar. map ( |a| Assignment { assignment : a } )
11098 }
11199
112100 /// Write the assignment into a file
0 commit comments