ouroboros-consensus
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Consensus.Storage.PerasVoteDB.API

Synopsis

Documentation

data PerasVoteDB (m ∷ Type → Type) blk Source #

Constructors

PerasVoteDB 

Fields

Instances

Instances details
NoThunks (PerasVoteDB m blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

data AddPerasVoteResult blk Source #

Instances

Instances details
Eq (PerasCert blk) ⇒ Eq (AddPerasVoteResult blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

Ord (PerasCert blk) ⇒ Ord (AddPerasVoteResult blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

Generic (AddPerasVoteResult blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

Associated Types

type Rep (AddPerasVoteResult blk) 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

type Rep (AddPerasVoteResult blk) = D1 ('MetaData "AddPerasVoteResult" "Ouroboros.Consensus.Storage.PerasVoteDB.API" "ouroboros-consensus-4.0.0.0-inplace" 'False) (C1 ('MetaCons "PerasVoteAlreadyInDB" 'PrefixI 'False) (U1 ∷ Type → Type) :+: (C1 ('MetaCons "AddedPerasVoteButDidntGenerateNewCert" 'PrefixI 'False) (U1 ∷ Type → Type) :+: C1 ('MetaCons "AddedPerasVoteAndGeneratedNewCert" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValidatedPerasCert blk)))))
Show (PerasCert blk) ⇒ Show (AddPerasVoteResult blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

NoThunks (PerasCert blk) ⇒ NoThunks (AddPerasVoteResult blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

type Rep (AddPerasVoteResult blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

type Rep (AddPerasVoteResult blk) = D1 ('MetaData "AddPerasVoteResult" "Ouroboros.Consensus.Storage.PerasVoteDB.API" "ouroboros-consensus-4.0.0.0-inplace" 'False) (C1 ('MetaCons "PerasVoteAlreadyInDB" 'PrefixI 'False) (U1 ∷ Type → Type) :+: (C1 ('MetaCons "AddedPerasVoteButDidntGenerateNewCert" 'PrefixI 'False) (U1 ∷ Type → Type) :+: C1 ('MetaCons "AddedPerasVoteAndGeneratedNewCert" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValidatedPerasCert blk)))))

data PerasVoteTicketNo Source #

A sequence number, incremented every time we receive a new vote.

Instances

Instances details
Eq PerasVoteTicketNo Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

Ord PerasVoteTicketNo Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

Enum PerasVoteTicketNo Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

Generic PerasVoteTicketNo Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

Associated Types

type Rep PerasVoteTicketNo 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

type Rep PerasVoteTicketNo = D1 ('MetaData "PerasVoteTicketNo" "Ouroboros.Consensus.Storage.PerasVoteDB.API" "ouroboros-consensus-4.0.0.0-inplace" 'True) (C1 ('MetaCons "PerasVoteTicketNo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))
Show PerasVoteTicketNo Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

NoThunks PerasVoteTicketNo Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

type Rep PerasVoteTicketNo Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API

type Rep PerasVoteTicketNo = D1 ('MetaData "PerasVoteTicketNo" "Ouroboros.Consensus.Storage.PerasVoteDB.API" "ouroboros-consensus-4.0.0.0-inplace" 'True) (C1 ('MetaCons "PerasVoteTicketNo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))

Exceptions

data PerasVoteDbError blk where Source #

Constructors

MultipleWinnersInRound ∷ ∀ blk. PerasRoundNo → ExistingPerasRoundWinner blk → BlockedPerasRoundWinner blk → PerasVoteDbError blk

Attempted to add a vote that would lead to multiple winners for the same round

ForgingCertError ∷ ∀ blk. PerasError blk → PerasVoteDbError blk

An error occurred while forging a certificate

EpochContextNotFoundForRound ∷ ∀ blk. PerasEpochContextNotFoundForRound → PerasVoteDbError blk

The epoch context for the round of the vote could not be found

Invariants

prop_addVoteThenGetVoteIds ∷ (MonadSTM m, IsPerasVote (PerasVote blk) blk) ⇒ PerasVoteDB m blk → WithArrivalTime (ValidatedPerasVote blk) → m Bool Source #

After adding a vote, its ID should be present in getVoteIds.

prop_getVotesAfterZero ∷ (MonadSTM m, IsPerasVote (PerasVote blk) blk) ⇒ PerasVoteDB m blk → m Bool Source #

getVotesAfter with ticket 0 should return all votes in the database.

prop_getVotesAfterMonotonic ∷ MonadSTM m ⇒ PerasVoteDB m blk → PerasVoteTicketNo → m Bool Source #

getVotesAfter returns strictly increasing ticket numbers.

prop_garbageCollectRemovesOldVotes ∷ (MonadSTM m, IsPerasVote (PerasVote blk) blk) ⇒ PerasVoteDB m blk → SlotNo → m Bool Source #

After garbage collection for slot S, no votes with target slot < S should remain.

prop_addVoteThenGetForgedCertForRound ∷ (MonadSTM m, Eq (PerasCert blk), IsPerasVote (PerasVote blk) blk) ⇒ PerasVoteDB m blk → WithArrivalTime (ValidatedPerasVote blk) → m Bool Source #

When adding a vote results in a certificate just being forged for a round, this certificate should also be retrievable via getForgedCertForRound.