@@ -182,27 +182,25 @@ pub fn range_instance_generation<G: PrimeGroup, R: RngCore>(
182182 let [ var_G, var_H] = instance. allocate_elements ( ) ;
183183 let [ var_x, var_r] = instance. allocate_scalars ( ) ;
184184 let vars_b = instance. allocate_scalars_vec ( bases. len ( ) ) ;
185- let vars_s = instance. allocate_scalars_vec ( bases. len ( ) - 1 ) ;
185+ let vars_s = instance. allocate_scalars_vec ( bases. len ( ) ) ;
186186 let var_s2 = instance. allocate_scalars_vec ( bases. len ( ) ) ;
187187 let var_Ds = instance. allocate_elements_vec ( bases. len ( ) ) ;
188188
189189 // `var_C` is a Pedersen commitment to `var_x`.
190190 let var_C = instance. allocate_eq ( var_x * var_G + var_r * var_H) ;
191191 // `var_Ds[i]` are bit commitments...
192- for i in 1 ..bases. len ( ) {
192+ for i in 0 ..bases. len ( ) {
193193 instance. append_equation ( var_Ds[ i] , vars_b[ i] * var_G + vars_s[ i] * var_H) ;
194194 instance. append_equation ( var_Ds[ i] , vars_b[ i] * var_Ds[ i] + var_s2[ i] * var_H) ;
195195 }
196196 // ... satisfying that sum(Ds[i] * bases[i]) = C
197197 instance. append_equation (
198- var_Ds[ 0 ] ,
199- var_C
200- - var_G * G :: Scalar :: from ( range. start )
201- - ( 1 ..bases. len ( ) )
198+ var_C,
199+ var_G * G :: Scalar :: from ( range. start )
200+ + ( 0 ..bases. len ( ) )
202201 . map ( |i| var_Ds[ i] * G :: Scalar :: from ( bases[ i] ) )
203202 . sum :: < Sum < _ > > ( ) ,
204203 ) ;
205- instance. append_equation ( var_Ds[ 0 ] , vars_b[ 0 ] * var_Ds[ 0 ] + var_s2[ 0 ] * var_H) ;
206204
207205 // Compute the witness
208206 let r = G :: Scalar :: random ( & mut rng) ;
@@ -492,24 +490,26 @@ pub fn elgamal_subtraction<G: PrimeGroup, R: RngCore>(
492490 let mut instance = LinearRelation :: new ( ) ;
493491 let [ dk, a, r] = instance. allocate_scalars ( ) ;
494492 let [ ek, C , D , H , G ] = instance. allocate_elements ( ) ;
495- let v = G :: Scalar :: from ( 100 ) ;
496493
497494 instance. append_equation ( ek, dk * H ) ;
498495
499496 instance. append_equation ( D , r * H ) ;
500497 instance. append_equation ( C , r * ek + a * G ) ;
501498
502- instance. append_equation ( C , G * v + dk * D + a * G ) ;
499+ instance. append_equation ( C , dk * D + a * G ) ;
503500
504- // set dk for testing to
505- let witness = vec ! [
506- G :: Scalar :: from ( 4242 ) ,
507- G :: Scalar :: from ( 1000 ) ,
508- G :: Scalar :: random ( & mut * rng ) ,
509- ] ;
501+ let witness_dk = G :: Scalar :: from ( 4242 ) ;
502+ let witness_a = G :: Scalar :: from ( 1000 ) ;
503+ let witness_r = G :: Scalar :: random ( & mut * rng ) ;
504+ let witness = vec ! [ witness_dk , witness_a , witness_r ] ;
505+
506+ // Assign group elements consistent with the witness so compute_image is unnecessary.
510507 let alt_gen = G :: random ( & mut * rng) ;
511508 instance. set_elements ( [ ( G , G :: generator ( ) ) , ( H , alt_gen) ] ) ;
512- instance. compute_image ( & witness) . unwrap ( ) ;
509+ let ek_val = alt_gen * witness_dk;
510+ let D_val = alt_gen * witness_r;
511+ let C_val = ek_val * witness_r + G :: generator ( ) * witness_a;
512+ instance. set_elements ( [ ( ek, ek_val) , ( D , D_val ) , ( C , C_val ) ] ) ;
513513
514514 ( instance. canonical ( ) . unwrap ( ) , witness)
515515}
0 commit comments