@@ -144,7 +144,7 @@ impl KShuffleGadget {
144144 . map ( |v| prover. commit ( * v, Scalar :: random ( & mut blinding_rng) ) )
145145 . unzip ( ) ;
146146
147- let cs = prover. finalize_inputs ( ) ;
147+ let mut cs = prover. finalize_inputs ( ) ;
148148
149149 Self :: fill_cs ( & mut cs, & input_vars, & output_vars) ;
150150
@@ -178,127 +178,91 @@ impl KShuffleGadget {
178178 . map ( |commitment| verifier. commit ( * commitment) )
179179 . collect ( ) ;
180180
181- let cs = verifier. finalize_inputs ( ) ;
181+ let mut cs = verifier. finalize_inputs ( ) ;
182182
183183 Self :: fill_cs ( & mut cs, & input_vars, & output_vars) ;
184184
185185 cs. verify ( proof)
186186 }
187187}
188188
189- fn kshuffle_prove_helper ( k : usize , c : & mut Criterion ) {
190- let label = format ! ( "{}-shuffle proof creation" , k) ;
191-
192- c. bench_function ( & label, move |b| {
193- // Generate inputs and outputs to kshuffle
194- let mut rng = rand:: thread_rng ( ) ;
195- let ( min, max) = ( 0u64 , std:: u64:: MAX ) ;
196- let input: Vec < Scalar > = ( 0 ..k)
197- . map ( |_| Scalar :: from ( rng. gen_range ( min, max) ) )
198- . collect ( ) ;
199- let mut output = input. clone ( ) ;
200- rand:: thread_rng ( ) . shuffle ( & mut output) ;
201-
202- // Make kshuffle proof
203- let pc_gens = PedersenGens :: default ( ) ;
204- let bp_gens = BulletproofGens :: new ( 128 , 1 ) ;
205- b. iter ( || {
206- let mut prover_transcript = Transcript :: new ( b"ShuffleTest" ) ;
207- KShuffleGadget :: prove ( & pc_gens, & bp_gens, & mut prover_transcript, & input, & output)
208- . unwrap ( ) ;
209- } )
210- } ) ;
211- }
212-
213- fn kshuffle_prove_8 ( c : & mut Criterion ) {
214- kshuffle_prove_helper ( 8 , c) ;
215- }
216- fn kshuffle_prove_16 ( c : & mut Criterion ) {
217- kshuffle_prove_helper ( 16 , c) ;
218- }
219- fn kshuffle_prove_32 ( c : & mut Criterion ) {
220- kshuffle_prove_helper ( 32 , c) ;
221- }
222- fn kshuffle_prove_64 ( c : & mut Criterion ) {
223- kshuffle_prove_helper ( 64 , c) ;
224- }
225- fn kshuffle_prove_17 ( c : & mut Criterion ) {
226- kshuffle_prove_helper ( 17 , c) ;
189+ fn bench_kshuffle_prove ( c : & mut Criterion ) {
190+ c. bench_function_over_inputs (
191+ "k-shuffle proof creation" ,
192+ move |b, k| {
193+ // Generate inputs and outputs to kshuffle
194+ let mut rng = rand:: thread_rng ( ) ;
195+ let ( min, max) = ( 0u64 , std:: u64:: MAX ) ;
196+ let input: Vec < Scalar > = ( 0 ..* k)
197+ . map ( |_| Scalar :: from ( rng. gen_range ( min, max) ) )
198+ . collect ( ) ;
199+ let mut output = input. clone ( ) ;
200+ rand:: thread_rng ( ) . shuffle ( & mut output) ;
201+
202+ // Make kshuffle proof
203+ let pc_gens = PedersenGens :: default ( ) ;
204+ let bp_gens = BulletproofGens :: new ( 128 , 1 ) ;
205+ b. iter ( || {
206+ let mut prover_transcript = Transcript :: new ( b"ShuffleTest" ) ;
207+ KShuffleGadget :: prove ( & pc_gens, & bp_gens, & mut prover_transcript, & input, & output)
208+ . unwrap ( ) ;
209+ } )
210+ } ,
211+ vec ! [ 8 , 16 , 32 , 64 , 17 ] ,
212+ ) ;
227213}
228214
229215criterion_group ! {
230216 name = kshuffle_prove;
231217 config = Criterion :: default ( ) ;
232218 targets =
233- kshuffle_prove_8,
234- kshuffle_prove_16,
235- kshuffle_prove_32,
236- kshuffle_prove_64,
237- kshuffle_prove_17,
219+ bench_kshuffle_prove,
238220}
239221
240- fn kshuffle_verify_helper ( k : usize , c : & mut Criterion ) {
241- let label = format ! ( "{}-shuffle proof verification" , k) ;
242-
243- c. bench_function ( & label, move |b| {
244- // Generate inputs and outputs to kshuffle
245- let mut rng = rand:: thread_rng ( ) ;
246- let ( min, max) = ( 0u64 , std:: u64:: MAX ) ;
247- let input: Vec < Scalar > = ( 0 ..k)
248- . map ( |_| Scalar :: from ( rng. gen_range ( min, max) ) )
249- . collect ( ) ;
250- let mut output = input. clone ( ) ;
251- rand:: thread_rng ( ) . shuffle ( & mut output) ;
252-
253- // Make kshuffle proof
254- let pc_gens = PedersenGens :: default ( ) ;
255- let bp_gens = BulletproofGens :: new ( 128 , 1 ) ;
256- let mut prover_transcript = Transcript :: new ( b"ShuffleTest" ) ;
257- let ( proof, in_commitments, out_commitments) =
258- KShuffleGadget :: prove ( & pc_gens, & bp_gens, & mut prover_transcript, & input, & output)
222+ fn bench_kshuffle_verify ( c : & mut Criterion ) {
223+ c. bench_function_over_inputs (
224+ "k-shuffle proof verification" ,
225+ move |b, k| {
226+ // Generate inputs and outputs to kshuffle
227+ let mut rng = rand:: thread_rng ( ) ;
228+ let ( min, max) = ( 0u64 , std:: u64:: MAX ) ;
229+ let input: Vec < Scalar > = ( 0 ..* k)
230+ . map ( |_| Scalar :: from ( rng. gen_range ( min, max) ) )
231+ . collect ( ) ;
232+ let mut output = input. clone ( ) ;
233+ rand:: thread_rng ( ) . shuffle ( & mut output) ;
234+
235+ // Make kshuffle proof
236+ let pc_gens = PedersenGens :: default ( ) ;
237+ let bp_gens = BulletproofGens :: new ( 128 , 1 ) ;
238+ let mut prover_transcript = Transcript :: new ( b"ShuffleTest" ) ;
239+ let ( proof, in_commitments, out_commitments) =
240+ KShuffleGadget :: prove ( & pc_gens, & bp_gens, & mut prover_transcript, & input, & output)
241+ . unwrap ( ) ;
242+
243+ // Verify kshuffle proof
244+ b. iter ( || {
245+ let mut verifier_transcript = Transcript :: new ( b"ShuffleTest" ) ;
246+ KShuffleGadget :: verify (
247+ & pc_gens,
248+ & bp_gens,
249+ & mut verifier_transcript,
250+ & proof,
251+ & in_commitments,
252+ & out_commitments,
253+ )
259254 . unwrap ( ) ;
260-
261- // Verify kshuffle proof
262- b. iter ( || {
263- let mut verifier_transcript = Transcript :: new ( b"ShuffleTest" ) ;
264- KShuffleGadget :: verify (
265- & pc_gens,
266- & bp_gens,
267- & mut verifier_transcript,
268- & proof,
269- & in_commitments,
270- & out_commitments,
271- )
272- . unwrap ( ) ;
273- } )
274- } ) ;
275- }
276-
277- fn kshuffle_verify_8 ( c : & mut Criterion ) {
278- kshuffle_verify_helper ( 8 , c) ;
279- }
280- fn kshuffle_verify_16 ( c : & mut Criterion ) {
281- kshuffle_verify_helper ( 16 , c) ;
282- }
283- fn kshuffle_verify_32 ( c : & mut Criterion ) {
284- kshuffle_verify_helper ( 32 , c) ;
285- }
286- fn kshuffle_verify_64 ( c : & mut Criterion ) {
287- kshuffle_verify_helper ( 64 , c) ;
288- }
289- fn kshuffle_verify_17 ( c : & mut Criterion ) {
290- kshuffle_verify_helper ( 17 , c) ;
255+ } )
256+ } ,
257+ vec ! [ 8 , 16 , 32 , 64 , 17 ] ,
258+ ) ;
291259}
292260
293261criterion_group ! {
294262 name = kshuffle_verify;
295263 config = Criterion :: default ( ) ;
296264 targets =
297- kshuffle_verify_8,
298- kshuffle_verify_16,
299- kshuffle_verify_32,
300- kshuffle_verify_64,
301- kshuffle_verify_17,
265+ bench_kshuffle_verify,
302266}
303267
304268criterion_main ! ( kshuffle_prove, kshuffle_verify) ;
0 commit comments