| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Consensus.Storage.PerasVoteDB.API
Contents
Synopsis
- data PerasVoteDB (m ∷ Type → Type) blk = PerasVoteDB {
- addVote ∷ WithArrivalTime (ValidatedPerasVote blk) → STM m (m (AddPerasVoteResult blk))
- getVoteIds ∷ STM m (Set (PerasVoteId blk))
- getVotesAfter ∷ PerasVoteTicketNo → STM m (Map PerasVoteTicketNo (WithArrivalTime (ValidatedPerasVote blk)))
- getForgedCertForRound ∷ PerasRoundNo → STM m (Maybe (ValidatedPerasCert blk))
- garbageCollect ∷ PerasRoundNo → STM m (m ())
- data AddPerasVoteResult blk
- data PerasVoteTicketNo
- zeroPerasVoteTicketNo ∷ PerasVoteTicketNo
- prop_addVoteThenGetVoteIds ∷ MonadSTM m ⇒ PerasVoteDB m blk → WithArrivalTime (ValidatedPerasVote blk) → m Bool
- prop_getVotesAfterZero ∷ MonadSTM m ⇒ PerasVoteDB m blk → m Bool
- prop_getVotesAfterMonotonic ∷ MonadSTM m ⇒ PerasVoteDB m blk → PerasVoteTicketNo → m Bool
- prop_garbageCollectRemovesOldVotes ∷ MonadSTM m ⇒ PerasVoteDB m blk → PerasRoundNo → m Bool
- prop_addVoteThenGetForgedCertForRound ∷ (MonadSTM m, StandardHash blk) ⇒ PerasVoteDB m blk → WithArrivalTime (ValidatedPerasVote blk) → m Bool
Documentation
data PerasVoteDB (m ∷ Type → Type) blk Source #
Constructors
| PerasVoteDB | |
Fields
| |
Instances
| NoThunks (PerasVoteDB m blk) Source # | |
Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API | |
data AddPerasVoteResult blk Source #
Constructors
| PerasVoteAlreadyInDB | |
| AddedPerasVoteButDidntGenerateNewCert | |
| AddedPerasVoteAndGeneratedNewCert (ValidatedPerasCert blk) |
Instances
data PerasVoteTicketNo Source #
A sequence number, incremented every time we receive a new vote.
Instances
| Enum PerasVoteTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API Methods succ ∷ PerasVoteTicketNo → PerasVoteTicketNo # pred ∷ PerasVoteTicketNo → PerasVoteTicketNo # toEnum ∷ Int → PerasVoteTicketNo # fromEnum ∷ PerasVoteTicketNo → Int # enumFrom ∷ PerasVoteTicketNo → [PerasVoteTicketNo] # enumFromThen ∷ PerasVoteTicketNo → PerasVoteTicketNo → [PerasVoteTicketNo] # enumFromTo ∷ PerasVoteTicketNo → PerasVoteTicketNo → [PerasVoteTicketNo] # enumFromThenTo ∷ PerasVoteTicketNo → PerasVoteTicketNo → PerasVoteTicketNo → [PerasVoteTicketNo] # | |
| Show PerasVoteTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API Methods showsPrec ∷ Int → PerasVoteTicketNo → ShowS # show ∷ PerasVoteTicketNo → String # showList ∷ [PerasVoteTicketNo] → ShowS # | |
| Eq PerasVoteTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API Methods | |
| Ord PerasVoteTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API Methods compare ∷ PerasVoteTicketNo → PerasVoteTicketNo → Ordering # (<) ∷ PerasVoteTicketNo → PerasVoteTicketNo → Bool # (<=) ∷ PerasVoteTicketNo → PerasVoteTicketNo → Bool # (>) ∷ PerasVoteTicketNo → PerasVoteTicketNo → Bool # (>=) ∷ PerasVoteTicketNo → PerasVoteTicketNo → Bool # max ∷ PerasVoteTicketNo → PerasVoteTicketNo → PerasVoteTicketNo # min ∷ PerasVoteTicketNo → PerasVoteTicketNo → PerasVoteTicketNo # | |
| NoThunks PerasVoteTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasVoteDB.API | |
Invariants
prop_addVoteThenGetVoteIds ∷ MonadSTM m ⇒ PerasVoteDB m blk → WithArrivalTime (ValidatedPerasVote blk) → m Bool Source #
After adding a vote, its ID should be present in getVoteIds.
prop_getVotesAfterZero ∷ MonadSTM m ⇒ 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 ⇒ PerasVoteDB m blk → PerasRoundNo → m Bool Source #
After garbage collection for round N, no votes for rounds <N should remain.
prop_addVoteThenGetForgedCertForRound ∷ (MonadSTM m, StandardHash 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.