ouroboros-consensus
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Consensus.Committee.WFALS

Description

Weighted Fait-Accompli with Local Sortition (wFA^LS) committee selection.

This module implements a generic committee selection scheme based the on Weighted Fait-Accompli with Local Sortition (wFA^LS) algorithm from the paper:

Peter Gaži, Aggelos Kiayias, and Alexander Russell. 2023. Fait Accompli Committee Selection: Improving the Size-Security Tradeoff of Stake-Based Committees. In Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security (CCS '23). Association for Computing Machinery, New York, NY, USA, 845–858. https://doi.org/10.1145/3576915.3623194

PDF: https://eprint.iacr.org/2023/1273.pdf

For this, we combine the deterministic portion of the weighted Fait-Accompli scheme (defined in Ouroboros.Consensus.Committee.WFA) with local sortition (defined in Ouroboros.Consensus.Committee.LS) as a fallback scheme.

Synopsis

Voting committee interface

data WFALS Source #

Tag for weighted Fait-Accompli with Local Sortition (wFA^LS)

Instances

Instances details
(CryptoSupportsAggregateVoteSigning crypto, CryptoSupportsBatchVRFVerification crypto) ⇒ CryptoSupportsVotingCommittee crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

Associated Types

data VotingCommittee crypto WFALS 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data VotingCommitteeInput crypto WFALS 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data VotingCommitteeError crypto WFALS 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data EligibilityWitness crypto WFALS 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data Vote crypto WFALS 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data Cert crypto WFALS 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data Cert crypto WFALS = WFALSCert !(ElectionId crypto) !(VoteCandidate crypto) !(NE (Map SeatIndex (Maybe (VRFOutput crypto)))) !(AggregateVoteSignature crypto)
Show (VotingCommitteeError crypto WFALS) Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

Eq (VotingCommitteeError crypto WFALS) Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data Cert crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data Cert crypto WFALS = WFALSCert !(ElectionId crypto) !(VoteCandidate crypto) !(NE (Map SeatIndex (Maybe (VRFOutput crypto)))) !(AggregateVoteSignature crypto)
data EligibilityWitness crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data Vote crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data VotingCommittee crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data VotingCommitteeError crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data VotingCommitteeInput crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data family VotingCommitteeInput crypto committee Source #

Input information needed to construct a voting committee

data family VotingCommitteeError crypto committee Source #

Errors that can occur when operating on a voting committee

Instances

Instances details
Show (VotingCommitteeError crypto EveryoneVotes) Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.EveryoneVotes

Show (VotingCommitteeError crypto WFALS) Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

Eq (VotingCommitteeError crypto EveryoneVotes) Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.EveryoneVotes

Eq (VotingCommitteeError crypto WFALS) Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data VotingCommitteeError crypto EveryoneVotes Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.EveryoneVotes

data VotingCommitteeError crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data family EligibilityWitness crypto committee Source #

Witness attesting that a party is eligible to vote in a given election

NOTE: this is not necessarily the same as the cryptographic proof of eligibility used in concrete votes and certificates sent over the wire.

data family Vote crypto committee Source #

Abstract vote cast by a committee member in a given election

Instances

Instances details
data Vote crypto EveryoneVotes Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.EveryoneVotes

data Vote crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data family Cert crypto committee Source #

Abstract certificate attesting the winner of a given election

Instances

Instances details
data Cert crypto EveryoneVotes Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.EveryoneVotes

data Cert crypto WFALS Source # 
Instance details

Defined in Ouroboros.Consensus.Committee.WFALS

data Cert crypto WFALS = WFALSCert !(ElectionId crypto) !(VoteCandidate crypto) !(NE (Map SeatIndex (Maybe (VRFOutput crypto)))) !(AggregateVoteSignature crypto)

Metrics about the voting committee composition