Skip to content

Commit 26d646f

Browse files
authored
Add BLS benchmarks to CI (#187)
* Make imports explicit * Help prints when no subcommand is specified * Added benchmarks to CI * Updated logbook
1 parent 274b35a commit 26d646f

File tree

15 files changed

+99
-27
lines changed

15 files changed

+99
-27
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: "crypto-benchmarks-rs"
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "crypto-benchmarks.rs/**"
7+
push:
8+
branches:
9+
- main
10+
paths:
11+
- "crypto-benchmarks.rs/**"
12+
13+
jobs:
14+
15+
crypto-benchmarks-rs-test:
16+
name: "Test"
17+
runs-on: ubuntu-22.04
18+
steps:
19+
- uses: actions/checkout@v4
20+
- name: Test Rust packages
21+
working-directory: crypto-benchmarks.rs
22+
run: |
23+
cargo test
24+
if [ $? -ne 0 ]; then
25+
echo "Cargo test failed"
26+
exit 1
27+
fi
28+
29+
crypto-benchmarks-rs-benchmark:
30+
name: "Benchmark"
31+
runs-on: ubuntu-22.04
32+
steps:
33+
- uses: actions/checkout@v4
34+
- name: Test Rust packages
35+
working-directory: crypto-benchmarks.rs
36+
run: |
37+
if ! cargo bench -- --noplot --sample-size 20 --quiet
38+
then
39+
echo "Cargo benchmarks failed"
40+
exit 1
41+
fi

Logbook.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Leios logbook
22

3+
## 2025-02-12
4+
5+
### Added BLS crypto to CI
6+
7+
The CI job [crypto-benchmarks-rs](.github/workflows/crypto-benchmarks-rs.yaml) does the following:
8+
9+
- Runs the tests for the BLS reference implementation
10+
- Runs the BLS vote and certificate benchmarks
11+
312
## 2025-02-11
413

514
### Reference implementation and benchmarking BLS certificates

crypto-benchmarks.rs/Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ name = "leios_crypto_benchmarks"
33
version = "0.1.0"
44
edition = "2021"
55

6+
[lib]
7+
bench = false
8+
9+
[[bin]]
10+
name = "leios_crypto_benchmarks"
11+
path = "src/main.rs"
12+
bench = false
13+
614
[dependencies]
715
bitvec = "1.0.1"
816
blst = "0.3.13"

crypto-benchmarks.rs/benches/serialization_bench.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
use criterion::{criterion_group, criterion_main, Criterion};
22
use quickcheck::{Arbitrary, Gen};
33

4-
use leios_crypto_benchmarks::cert::*;
4+
use leios_crypto_benchmarks::cert::{gen_cert, Cert};
55
use leios_crypto_benchmarks::key::Reg;
6-
use leios_crypto_benchmarks::primitive::*;
7-
use leios_crypto_benchmarks::realism::*;
8-
use leios_crypto_benchmarks::registry::*;
9-
use leios_crypto_benchmarks::vote::*;
6+
use leios_crypto_benchmarks::primitive::arbitrary_stake_distribution;
7+
use leios_crypto_benchmarks::realism::{
8+
realistic_pool_count, realistic_total_stake, realistic_voters,
9+
};
10+
use leios_crypto_benchmarks::registry::{arbitrary_pools, Registry};
11+
use leios_crypto_benchmarks::vote::{arbitrary_votes, Vote};
1012

1113
fn benchmark_serialize_reg(c: &mut Criterion) {
1214
let g = &mut Gen::new(10);

crypto-benchmarks.rs/benches/sortition_bench.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use num_rational::Ratio;
44
use num_traits::{FromPrimitive, One};
55
use quickcheck::{Arbitrary, Gen};
66

7-
use leios_crypto_benchmarks::sortition::*;
7+
use leios_crypto_benchmarks::sortition::{leader_check, ln_1_minus, voter_check};
88

99
fn arbitrary_f(g: &mut Gen) -> Ratio<BigInt> {
1010
Ratio::new(

crypto-benchmarks.rs/benches/vote_bench.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ use leios_crypto_benchmarks::key::{check_pop, key_gen, SecKey};
77
use leios_crypto_benchmarks::primitive::{
88
arbitrary_poolkeyhash, arbitrary_stake_distribution, EbHash, Eid,
99
};
10-
use leios_crypto_benchmarks::realism::*;
11-
use leios_crypto_benchmarks::vote::*;
10+
use leios_crypto_benchmarks::realism::{
11+
realistic_pool_count, realistic_total_stake, realistic_voters,
12+
};
13+
use leios_crypto_benchmarks::vote::{
14+
arbitrary_votes, gen_vote_nonpersistent, gen_vote_persistent, verify_vote,
15+
};
1216

1317
fn benchmark_check_pop(c: &mut Criterion) {
1418
c.bench_function("key::check_pop", |b| {

crypto-benchmarks.rs/benches/vrf_bench.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use criterion::{criterion_group, criterion_main, Criterion};
22

3-
use leios_crypto_benchmarks::vrf::*;
3+
use leios_crypto_benchmarks::vrf::{sk_random, sk_to_pk_point, vrf_prove, vrf_verify};
44

55
fn benchmark_prove(c: &mut Criterion) {
66
let sk = sk_random();

crypto-benchmarks.rs/src/cert.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ use std::collections::{BTreeMap, HashSet};
66
use crate::bls_vote;
77
use crate::key::Sig;
88
use crate::primitive::{Coin, CoinFraction, EbHash, Eid, PoolKeyhash};
9-
use crate::registry::*;
9+
use crate::registry::{PersistentId, Registry};
1010
use crate::sortition::voter_check;
11-
use crate::vote::*;
11+
use crate::vote::{do_voting, Vote};
1212

1313
#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
1414
pub struct Cert {

crypto-benchmarks.rs/src/key.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::hash::{Hash, Hasher};
99
use crate::bls_util;
1010
use crate::bls_vote;
1111
use crate::primitive::{arbitrary_poolkeyhash, KesSig, PoolKeyhash};
12-
use crate::util::*;
12+
use crate::util::{arbitrary_fixed_bytes, deserialize_fixed_bytes, serialize_fixed_bytes};
1313

1414
#[derive(Clone, Debug)]
1515
pub struct SecKey(pub(crate) SecretKey);

crypto-benchmarks.rs/src/main.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,23 @@ use std::io::{Error, ErrorKind};
99
use std::path::PathBuf;
1010
use std::process;
1111

12-
use leios_crypto_benchmarks::cert::*;
12+
use leios_crypto_benchmarks::cert::{gen_cert, verify_cert, weigh_cert, Cert};
1313
use leios_crypto_benchmarks::fait_accompli::FaSortition;
14-
use leios_crypto_benchmarks::key::*;
15-
use leios_crypto_benchmarks::primitive::*;
16-
use leios_crypto_benchmarks::registry::*;
17-
use leios_crypto_benchmarks::sortition::*;
18-
use leios_crypto_benchmarks::vote::*;
14+
use leios_crypto_benchmarks::key::{
15+
check_pop, key_gen, sign_message, verify_message, PoP, PubKey, Reg, SecKey, Sig,
16+
};
17+
use leios_crypto_benchmarks::primitive::{
18+
arbitrary_poolkeyhash, arbitrary_stake_distribution, Coin, EbHash, Eid, KesSig,
19+
PoolKeyhash,
20+
};
21+
use leios_crypto_benchmarks::registry::{arbitrary_pools, PoolInfo, Registry};
22+
use leios_crypto_benchmarks::sortition::voter_check;
23+
use leios_crypto_benchmarks::vote::{
24+
do_voting, gen_sigma_eid, gen_vote_nonpersistent, verify_vote, Vote,
25+
};
1926

2027
#[derive(Parser)]
21-
#[command(version, about, long_about = None)]
28+
#[command(version, about, long_about = None, arg_required_else_help=true)]
2229
struct Cli {
2330
name: Option<String>,
2431
#[arg(long)]

0 commit comments

Comments
 (0)