Skip to content

Commit 18ce23d

Browse files
committed
adapt common, demo and stm benches
1 parent 1895e80 commit 18ce23d

File tree

7 files changed

+47
-53
lines changed

7 files changed

+47
-53
lines changed

demo/protocol-demo/src/types.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
use mithril_stm::{
2-
AggregateSignature, Clerk, Initializer, KeyRegistration, Parameters, Signer, SingleSignature,
3-
Stake, VerificationKeyProofOfPossession,
2+
AggregateSignature, Clerk, CustomMembershipDigest, Initializer, KeyRegistration, Parameters,
3+
Signer, SingleSignature, Stake, VerificationKeyProofOfPossession,
44
};
55

6-
use blake2::{Blake2b, digest::consts::U32};
7-
86
// Protocol types alias
9-
type D = Blake2b<U32>;
7+
type D = CustomMembershipDigest;
108

119
/// The id of a mithril party.
1210
pub type ProtocolPartyId = String;

mithril-common/src/crypto_helper/cardano/key_certification.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,14 @@
66
use std::{collections::HashMap, sync::Arc};
77

88
use anyhow::anyhow;
9-
use blake2::{
10-
Blake2b, Digest,
11-
digest::{FixedOutput, consts::U32},
12-
};
139
use kes_summed_ed25519::kes::Sum6KesSig;
1410
use rand_core::{CryptoRng, RngCore};
1511
use serde::{Deserialize, Serialize};
1612
use thiserror::Error;
1713

1814
use mithril_stm::{
19-
ClosedKeyRegistration, Initializer, KeyRegistration, Parameters, RegisterError, Signer, Stake,
20-
VerificationKeyProofOfPossession,
15+
ClosedKeyRegistration, CustomMembershipDigest, Initializer, KeyRegistration, MembershipDigest,
16+
Parameters, RegisterError, Signer, Stake, VerificationKeyProofOfPossession,
2117
};
2218

2319
use crate::{
@@ -33,7 +29,7 @@ use crate::{
3329
};
3430

3531
// Protocol types alias
36-
type D = Blake2b<U32>;
32+
type D = CustomMembershipDigest;
3733

3834
/// The KES period that is used to check if the KES keys is expired
3935
pub type KesPeriod = u32;
@@ -285,7 +281,7 @@ impl KeyRegWrapper {
285281

286282
/// Finalize the key registration.
287283
/// This function disables `ClosedKeyRegistration::register`, consumes the instance of `self`, and returns a `ClosedKeyRegistration`.
288-
pub fn close<D: Digest + FixedOutput>(self) -> ClosedKeyRegistration<D> {
284+
pub fn close<D: MembershipDigest>(self) -> ClosedKeyRegistration<D> {
289285
self.stm_key_reg.close()
290286
}
291287
}

mithril-common/src/crypto_helper/codec/binary.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,15 @@ pub trait TryFromBytes: Sized {
3030

3131
mod binary_mithril_stm {
3232
use anyhow::anyhow;
33-
use blake2::Blake2b;
34-
35-
use digest::consts::U32;
3633
use mithril_stm::{
37-
AggregateSignature, AggregateVerificationKey, Initializer, Parameters, SingleSignature,
38-
SingleSignatureWithRegisteredParty, VerificationKey, VerificationKeyProofOfPossession,
34+
AggregateSignature, AggregateVerificationKey, CustomMembershipDigest, Initializer,
35+
Parameters, SingleSignature, SingleSignatureWithRegisteredParty, VerificationKey,
36+
VerificationKeyProofOfPossession,
3937
};
4038

4139
use super::*;
4240

43-
type D = Blake2b<U32>;
41+
type D = CustomMembershipDigest;
4442

4543
impl TryToBytes for Parameters {
4644
fn to_bytes_vec(&self) -> StdResult<Vec<u8>> {

mithril-common/src/crypto_helper/types/alias.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,15 @@ use crate::crypto_helper::cardano::{
44
};
55

66
use mithril_stm::{
7-
AggregationError, Clerk, ClosedKeyRegistration, Index, Parameters, Signer, Stake,
7+
AggregationError, Clerk, ClosedKeyRegistration, CustomMembershipDigest, Index, Parameters,
8+
Signer, Stake,
89
};
910

10-
use blake2::{Blake2b, digest::consts::U32};
11-
1211
/// A protocol version
1312
pub type ProtocolVersion<'a> = &'a str;
1413

1514
// Protocol types alias
16-
pub(crate) type D = Blake2b<U32>;
15+
pub(crate) type D = CustomMembershipDigest;
1716

1817
/// The id of a mithril party.
1918
pub type ProtocolPartyId = String;

mithril-stm/benches/size_benches.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1-
use blake2::digest::FixedOutput;
2-
use blake2::{
3-
Blake2b, Digest,
4-
digest::consts::{U32, U64},
5-
};
1+
use blake2::{Blake2b, digest::consts::U64};
62
use rand_chacha::ChaCha20Rng;
73
use rand_core::{RngCore, SeedableRng};
84
use rayon::iter::ParallelIterator;
95
use rayon::prelude::{IntoParallelIterator, IntoParallelRefIterator};
106

117
use mithril_stm::{
12-
AggregateSignatureType, Clerk, Initializer, KeyRegistration, Parameters, Signer,
13-
SingleSignature,
8+
AggregateSignatureType, Clerk, CustomMembershipDigest, Initializer, KeyRegistration,
9+
MembershipDigest, Parameters, Signer, SingleSignature,
1410
};
1511

1612
fn size<H>(k: u64, m: u64, nparties: usize, hash_name: &str)
1713
where
18-
H: Digest + Clone + Sync + Send + Default + FixedOutput,
14+
H: MembershipDigest + Clone,
1915
{
2016
println!("+-------------------+");
2117
println!("| Hash: {hash_name} |");
@@ -65,6 +61,15 @@ where
6561
aggr.to_bytes().len(),
6662
);
6763
}
64+
/// Only for size benches
65+
#[derive(Clone, Debug, Default)]
66+
pub struct MembershipDigestU64 {}
67+
68+
impl MembershipDigest for MembershipDigestU64 {
69+
type ConcatenationHash = Blake2b<U64>;
70+
#[cfg(feature = "future_snark")]
71+
type SnarkHash = Blake2b<U64>;
72+
}
6873

6974
fn main() {
7075
println!("+-------------------+");
@@ -75,8 +80,8 @@ fn main() {
7580

7681
let params: [(u64, u64, usize); 2] = [(445, 2728, 3000), (554, 3597, 3000)];
7782
for (k, m, nparties) in params {
78-
size::<Blake2b<U64>>(k, m, nparties, "Blake2b 512");
79-
size::<Blake2b<U32>>(k, m, nparties, "Blake2b 256");
83+
size::<MembershipDigestU64>(k, m, nparties, "Blake2b 512");
84+
size::<CustomMembershipDigest>(k, m, nparties, "Blake2b 256");
8085
}
8186
println!("+-------------------------+");
8287
}

mithril-stm/benches/stm.rs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
use std::fmt::Debug;
2-
3-
use blake2::digest::{Digest, FixedOutput};
4-
use blake2::{Blake2b, digest::consts::U32};
51
use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
62
use rand_chacha::ChaCha20Rng;
73
use rand_core::{RngCore, SeedableRng};
84
use rayon::prelude::*;
95

106
use mithril_stm::{
11-
AggregateSignature, AggregateSignatureType, Clerk, Initializer, KeyRegistration, Parameters,
12-
Signer,
7+
AggregateSignature, AggregateSignatureType, Clerk, CustomMembershipDigest, Initializer,
8+
KeyRegistration, MembershipDigest, Parameters, Signer,
139
};
1410

1511
/// This benchmark framework is not ideal. We really have to think what is the best mechanism for
1612
/// benchmarking these signatures, over which parameters, how many times to run them, etc:
1713
/// * Registration depends on the number of parties (should be constant, as it is a lookup table)
1814
/// * Signing depends on the parameter `m`, as it defines the number of lotteries a user can play
1915
/// * Aggregation depends on `k`.
20-
fn stm_benches<H>(c: &mut Criterion, nr_parties: usize, params: Parameters, hashing_alg: &str)
21-
where
22-
H: Clone + Debug + Digest + Send + Sync + FixedOutput + Default,
23-
{
16+
fn stm_benches<H: MembershipDigest + Clone>(
17+
c: &mut Criterion,
18+
nr_parties: usize,
19+
params: Parameters,
20+
hashing_alg: &str,
21+
) {
2422
let mut group = c.benchmark_group(format!("STM/{hashing_alg}"));
2523
let mut rng = ChaCha20Rng::from_seed([0u8; 32]);
2624
let mut msg = [0u8; 16];
@@ -55,10 +53,10 @@ where
5553

5654
let closed_reg = key_reg.close();
5755

58-
let signers = initializers
56+
let signers: Vec<Signer<H>> = initializers
5957
.into_par_iter()
6058
.map(|p| p.create_signer(closed_reg.clone()).unwrap())
61-
.collect::<Vec<Signer<H>>>();
59+
.collect();
6260

6361
group.bench_function(BenchmarkId::new("Play all lotteries", &param_string), |b| {
6462
b.iter(|| {
@@ -83,7 +81,7 @@ fn batch_benches<H>(
8381
params: Parameters,
8482
hashing_alg: &str,
8583
) where
86-
H: Clone + Debug + Digest + FixedOutput + Send + Sync,
84+
H: MembershipDigest + Clone,
8785
{
8886
let mut group = c.benchmark_group(format!("STM/{hashing_alg}"));
8987
let mut rng = ChaCha20Rng::from_seed([0u8; 32]);
@@ -156,7 +154,7 @@ fn batch_benches<H>(
156154
}
157155

158156
fn batch_stm_benches_blake_300(c: &mut Criterion) {
159-
batch_benches::<Blake2b<U32>>(
157+
batch_benches::<CustomMembershipDigest>(
160158
c,
161159
&[1, 10, 20, 100],
162160
300,
@@ -170,7 +168,7 @@ fn batch_stm_benches_blake_300(c: &mut Criterion) {
170168
}
171169

172170
fn stm_benches_blake_300(c: &mut Criterion) {
173-
stm_benches::<Blake2b<U32>>(
171+
stm_benches::<CustomMembershipDigest>(
174172
c,
175173
300,
176174
Parameters {
@@ -183,7 +181,7 @@ fn stm_benches_blake_300(c: &mut Criterion) {
183181
}
184182

185183
fn batch_stm_benches_blake_2000(c: &mut Criterion) {
186-
batch_benches::<Blake2b<U32>>(
184+
batch_benches::<CustomMembershipDigest>(
187185
c,
188186
&[1, 10, 20, 100],
189187
2000,
@@ -197,7 +195,7 @@ fn batch_stm_benches_blake_2000(c: &mut Criterion) {
197195
}
198196

199197
fn stm_benches_blake_2000(c: &mut Criterion) {
200-
stm_benches::<Blake2b<U32>>(
198+
stm_benches::<CustomMembershipDigest>(
201199
c,
202200
2000,
203201
Parameters {

mithril-stm/src/membership_commitment/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ use blake2::{Blake2b, digest::consts::U32};
66
use digest::{Digest, FixedOutput};
77
use std::fmt::Debug;
88

9-
pub trait MembershipDigest: Send + Sync {
10-
type ConcatenationHash: Digest + FixedOutput + Clone + Debug;
9+
pub trait MembershipDigest {
10+
type ConcatenationHash: Digest + FixedOutput + Clone + Debug + Send + Sync;
1111
#[cfg(feature = "future_snark")]
1212
type SnarkHash: Digest + FixedOutput + Clone;
1313
}
1414

1515
/// Only for tests
16-
#[derive(Clone, Debug)]
16+
#[derive(Clone, Debug, Default)]
1717
pub struct CustomMembershipDigest {}
1818

1919
impl MembershipDigest for CustomMembershipDigest {

0 commit comments

Comments
 (0)