alto_types/
consensus.rs

1use commonware_consensus::threshold_simplex::types::{
2    Activity as CActivity, Finalization as CFinalization, Notarization as CNotarization,
3    Seed as CSeed,
4};
5use commonware_cryptography::{
6    bls12381::primitives::variant::{MinSig, Variant},
7    sha256::Digest,
8};
9use commonware_utils::modulo;
10
11pub type Seed = CSeed<MinSig>;
12pub type Notarization = CNotarization<MinSig, Digest>;
13pub type Finalization = CFinalization<MinSig, Digest>;
14pub type Activity = CActivity<MinSig, Digest>;
15
16pub type Identity = <MinSig as Variant>::Public;
17pub type Evaluation = Identity;
18pub type Signature = <MinSig as Variant>::Signature;
19
20/// The leader for a given seed is determined by the modulo of the seed with the number of participants.
21pub fn leader_index(seed: &[u8], participants: usize) -> usize {
22    modulo(seed, participants as u64) as usize
23}