Skip to content

Commit 04eee1d

Browse files
committed
update
1 parent 608266e commit 04eee1d

1 file changed

Lines changed: 46 additions & 34 deletions

File tree

fastcrypto-tbls/benches/batch_avss_avid.rs

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)