@@ -86,7 +86,8 @@ mod batch_avss_benches {
8686 use fastcrypto:: error:: FastCryptoResult ;
8787 use fastcrypto:: traits:: AllowedRng ;
8888 use fastcrypto_tbls:: threshold_schnorr:: batch_avss_avid:: {
89- self as batch_avss, AvidMessageBuilder , AvidVote , AvssCommonMessage , AvssVote , Dealer ,
89+ self as batch_avss, AvidMessageBuilder , AvidVote , AvssCommonMessage , AvssMessageBuilder ,
90+ AvssVote , Dealer ,
9091 } ;
9192 use fastcrypto_tbls:: threshold_schnorr:: presigning:: Presignatures ;
9293 use fastcrypto_tbls:: threshold_schnorr:: Certificate ;
@@ -144,7 +145,12 @@ mod batch_avss_benches {
144145 dealer : & Dealer ,
145146 n : u16 ,
146147 rng : & mut impl AllowedRng ,
147- ) -> ( AvssCommonMessage , AvidMessageBuilder < AvssCert > , AvssCert ) {
148+ ) -> (
149+ AvssMessageBuilder ,
150+ AvssCommonMessage ,
151+ AvidMessageBuilder < AvssCert > ,
152+ AvssCert ,
153+ ) {
148154 let state = dealer. create_avss_messages ( rng) . unwrap ( ) ;
149155 let common = state. common . clone ( ) ;
150156 let cert = AvssCert {
@@ -154,7 +160,18 @@ mod batch_avss_benches {
154160 } ,
155161 } ;
156162 let messages = dealer. create_avid_messages ( & state, cert. clone ( ) ) . unwrap ( ) ;
157- ( common, messages, cert)
163+ ( state, common, messages, cert)
164+ }
165+
166+ /// A voter's verified common message, obtained by processing its own [AvssMessage].
167+ fn verified_common_of (
168+ receiver : & batch_avss:: Receiver ,
169+ state : & AvssMessageBuilder ,
170+ ) -> batch_avss:: VerifiedAvssCommonMessage {
171+ let ( _, _, vcm) = receiver
172+ . process_avss_message ( & state. message_for ( receiver. id ) . unwrap ( ) )
173+ . unwrap ( ) ;
174+ vcm
158175 }
159176
160177 fn all_batch_avss ( c : & mut Criterion ) {
@@ -186,8 +203,8 @@ mod batch_avss_benches {
186203 }
187204
188205 {
189- let mut verify_common : BenchmarkGroup < _ > = c. benchmark_group ( format ! (
190- "BATCH_AVSS (batch_size_per_weight = {batch_size_per_weight}) verify_common_message "
206+ let mut process_avss : BenchmarkGroup < _ > = c. benchmark_group ( format ! (
207+ "BATCH_AVSS (batch_size_per_weight = {batch_size_per_weight}) process_avss_message "
191208 ) ) ;
192209 for ( n, total_w) in iproduct ! ( SIZES . iter( ) , TOTAL_WEIGHTS . iter( ) ) {
193210 let w = total_w / n;
@@ -196,11 +213,12 @@ mod batch_avss_benches {
196213 let f = t. saturating_sub ( 1 ) ;
197214 let keys = generate_ecies_keys ( * n) ;
198215 let d0 = setup_dealer ( 0 , f, t, w, & keys, batch_size_per_weight) ;
199- let r1 = setup_receiver ( 1 , 0 , f, t, w, & keys, batch_size_per_weight) ;
200- let ( common, _, _) = pessimistic_with_one_straggler ( & d0, * n, & mut thread_rng ( ) ) ;
201- verify_common. bench_function (
216+ let r0 = setup_receiver ( 0 , 0 , f, t, w, & keys, batch_size_per_weight) ;
217+ let ( state, _, _, _) = pessimistic_with_one_straggler ( & d0, * n, & mut thread_rng ( ) ) ;
218+ let message = state. message_for ( 0 ) . unwrap ( ) ;
219+ process_avss. bench_function (
202220 format ! ( "n={}, total_weight={}, t={}, w={}" , n, total_w, t, w) . as_str ( ) ,
203- |b| b. iter ( || r1 . verify_common_message ( common . clone ( ) ) . unwrap ( ) ) ,
221+ |b| b. iter ( || r0 . process_avss_message ( & message ) . unwrap ( ) ) ,
204222 ) ;
205223 }
206224 }
@@ -217,10 +235,10 @@ mod batch_avss_benches {
217235 let keys = generate_ecies_keys ( * n) ;
218236 let d0 = setup_dealer ( 0 , f, t, w, & keys, batch_size_per_weight) ;
219237 let r1 = setup_receiver ( 1 , 0 , f, t, w, & keys, batch_size_per_weight) ;
220- let ( common , messages, _cert) =
238+ let ( state , _common , messages, _cert) =
221239 pessimistic_with_one_straggler ( & d0, * n, & mut thread_rng ( ) ) ;
222240 let message = messages. message_for ( 1 ) . unwrap ( ) ;
223- let vcm = r1 . verify_common_message ( common ) . unwrap ( ) ;
241+ let vcm = verified_common_of ( & r1 , & state ) ;
224242 echo. bench_function (
225243 format ! ( "n={}, total_weight={}, t={}, w={}" , n, total_w, t, w) . as_str ( ) ,
226244 |b| b. iter ( || r1. process_avid_message ( & vcm, message. clone ( ) ) . unwrap ( ) ) ,
@@ -241,10 +259,10 @@ mod batch_avss_benches {
241259 let d0 = setup_dealer ( 0 , f, t, w, & keys, batch_size_per_weight) ;
242260 let r0 = setup_receiver ( 0 , 0 , f, t, w, & keys, batch_size_per_weight) ;
243261 let r1 = setup_receiver ( 1 , 0 , f, t, w, & keys, batch_size_per_weight) ;
244- let ( common , messages, _cert) =
262+ let ( state , _common , messages, _cert) =
245263 pessimistic_with_one_straggler ( & d0, * n, & mut thread_rng ( ) ) ;
246- let vcm0 = r0 . verify_common_message ( common . clone ( ) ) . unwrap ( ) ;
247- let vcm1 = r1 . verify_common_message ( common ) . unwrap ( ) ;
264+ let vcm0 = verified_common_of ( & r0 , & state ) ;
265+ let vcm1 = verified_common_of ( & r1 , & state ) ;
248266 let ( builder0, _) = r0
249267 . process_avid_message ( & vcm0, messages. message_for ( 0 ) . unwrap ( ) )
250268 . unwrap ( ) ;
@@ -284,13 +302,13 @@ mod batch_avss_benches {
284302 let receivers: Vec < batch_avss:: Receiver > = ( 0 ..* n)
285303 . map ( |id| setup_receiver ( id, 0 , f, t, w, & keys, batch_size_per_weight) )
286304 . collect ( ) ;
287- let ( common, messages, _cert) =
305+ let ( state , common, messages, _cert) =
288306 pessimistic_with_one_straggler ( & d0, * n, & mut thread_rng ( ) ) ;
289307 let mut avid_cert = None ;
290308 let echoes: Vec < BTreeMap < PartyId , batch_avss:: Echo > > = receivers
291309 . iter ( )
292310 . map ( |r| {
293- let vcm = r . verify_common_message ( common . clone ( ) ) . unwrap ( ) ;
311+ let vcm = verified_common_of ( r , & state ) ;
294312 let ( builder, vote) = r
295313 . process_avid_message ( & vcm, messages. message_for ( r. id ) . unwrap ( ) )
296314 . unwrap ( ) ;
@@ -312,7 +330,9 @@ mod batch_avss_benches {
312330 } )
313331 . collect ( ) ;
314332 let avid_cert = avid_cert. unwrap ( ) ;
315- let vcm1 = receivers[ 1 ] . verify_common_message ( common) . unwrap ( ) ;
333+ let vcm1 = receivers[ 1 ]
334+ . verify_common_message ( & avid_cert, common)
335+ . unwrap ( ) ;
316336 let echoes_for_party_1: Vec < batch_avss:: VerifiedEcho > = echoes
317337 . iter ( )
318338 . enumerate ( )
@@ -332,13 +352,8 @@ mod batch_avss_benches {
332352 format ! ( "n={}, total_weight={}, t={}, w={}" , n, total_w, t, w) . as_str ( ) ,
333353 |b| {
334354 b. iter ( || {
335- r1. decode_and_decrypt (
336- & echoes_for_party_1,
337- & vcm1,
338- & avid_cert,
339- & mut thread_rng ( ) ,
340- )
341- . unwrap ( )
355+ r1. decode_and_decrypt ( & echoes_for_party_1, & vcm1, & mut thread_rng ( ) )
356+ . unwrap ( )
342357 } )
343358 } ,
344359 ) ;
@@ -363,7 +378,7 @@ mod batch_avss_benches {
363378 . iter ( )
364379 . enumerate ( )
365380 . map ( |( dealer_id, d) | {
366- let ( common, messages, _cert) =
381+ let ( state , common, messages, _cert) =
367382 pessimistic_with_one_straggler ( d, * n, & mut thread_rng ( ) ) ;
368383 let receivers: Vec < batch_avss:: Receiver > = ( 0 ..* n)
369384 . map ( |id| {
@@ -382,7 +397,7 @@ mod batch_avss_benches {
382397 let echoes: Vec < BTreeMap < PartyId , batch_avss:: Echo > > = receivers
383398 . iter ( )
384399 . map ( |r| {
385- let vcm = r . verify_common_message ( common . clone ( ) ) . unwrap ( ) ;
400+ let vcm = verified_common_of ( r , & state ) ;
386401 let ( builder, vote) = r
387402 . process_avid_message ( & vcm, messages. message_for ( r. id ) . unwrap ( ) )
388403 . unwrap ( ) ;
@@ -404,7 +419,9 @@ mod batch_avss_benches {
404419 } )
405420 . collect ( ) ;
406421 let avid_cert = avid_cert. unwrap ( ) ;
407- let vcm1 = receivers[ 1 ] . verify_common_message ( common) . unwrap ( ) ;
422+ let vcm1 = receivers[ 1 ]
423+ . verify_common_message ( & avid_cert, common)
424+ . unwrap ( ) ;
408425 let echoes_for_party_1: Vec < batch_avss:: VerifiedEcho > = echoes
409426 . iter ( )
410427 . enumerate ( )
@@ -419,15 +436,10 @@ mod batch_avss_benches {
419436 } )
420437 . collect ( ) ;
421438 let output = match receivers[ 1 ]
422- . decode_and_decrypt (
423- & echoes_for_party_1,
424- & vcm1,
425- & avid_cert,
426- & mut thread_rng ( ) ,
427- )
439+ . decode_and_decrypt ( & echoes_for_party_1, & vcm1, & mut thread_rng ( ) )
428440 . unwrap ( )
429441 {
430- batch_avss:: DecodeAndDecryptOutcome :: Valid ( _ , output) => output,
442+ batch_avss:: DecodeAndDecryptOutcome :: Valid ( output) => output,
431443 _ => panic ! ( "expected Valid outcome" ) ,
432444 } ;
433445 // presigning consumes the legacy `batch_avss` output types; convert here
0 commit comments