| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Consensus.Storage.PerasCertDB.API
Contents
Synopsis
- data PerasCertDB (m ∷ Type → Type) blk = PerasCertDB {
- addCert ∷ WithArrivalTime (ValidatedPerasCert blk) → STM m (m AddPerasCertResult)
- getCertIds ∷ STM m (Set PerasRoundNo)
- getCertsAfter ∷ PerasCertTicketNo → STM m (Map PerasCertTicketNo (m (WithArrivalTime (ValidatedPerasCert blk))))
- getWeightSnapshot ∷ STM m (WithFingerprint (PerasWeightSnapshot blk))
- getLatestCertSeen ∷ STM m (Maybe (WithArrivalTime (ValidatedPerasCert blk)))
- garbageCollect ∷ SlotNo → STM m (m ())
- data AddPerasCertResult
- data PerasCertTicketNo
- zeroPerasCertTicketNo ∷ PerasCertTicketNo
- prop_addCertThenGetCertIds ∷ MonadSTM m ⇒ PerasCertDB m blk → WithArrivalTime (ValidatedPerasCert blk) → m Bool
- prop_getCertsAfterZero ∷ MonadSTM m ⇒ PerasCertDB m blk → m Bool
- prop_getCertsAfterMonotonic ∷ MonadSTM m ⇒ PerasCertDB m blk → PerasCertTicketNo → m Bool
- prop_garbageCollectRemovesOldCerts ∷ MonadSTM m ⇒ PerasCertDB m blk → SlotNo → m Bool
- prop_addCertLatestCertSeenMonotonic ∷ MonadSTM m ⇒ PerasCertDB m blk → WithArrivalTime (ValidatedPerasCert blk) → m Bool
- prop_garbageCollectPreservesLatestCertSeen ∷ (MonadSTM m, StandardHash blk) ⇒ PerasCertDB m blk → SlotNo → m Bool
Documentation
data PerasCertDB (m ∷ Type → Type) blk Source #
Constructors
| PerasCertDB | |
Fields
| |
Instances
| NoThunks (PerasCertDB m blk) Source # | |
Defined in Ouroboros.Consensus.Storage.PerasCertDB.API | |
data AddPerasCertResult Source #
Constructors
| AddedPerasCertToDB | |
| PerasCertAlreadyInDB |
Instances
data PerasCertTicketNo Source #
A sequence number, incremented every time we receive a new certificate.
Note that we will usually receive certificates monotonically by round number, so round numbers could almost fulfill the role of ticket numbers. However, in certain edge cases (while catching up, or during cooldowns), this might not be true, such as during syncing or during cooldown periods. Therefore, for robustness, we choose to maintain dedicated ticket numbers separately.
Instances
| Enum PerasCertTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasCertDB.API Methods succ ∷ PerasCertTicketNo → PerasCertTicketNo # pred ∷ PerasCertTicketNo → PerasCertTicketNo # toEnum ∷ Int → PerasCertTicketNo # fromEnum ∷ PerasCertTicketNo → Int # enumFrom ∷ PerasCertTicketNo → [PerasCertTicketNo] # enumFromThen ∷ PerasCertTicketNo → PerasCertTicketNo → [PerasCertTicketNo] # enumFromTo ∷ PerasCertTicketNo → PerasCertTicketNo → [PerasCertTicketNo] # enumFromThenTo ∷ PerasCertTicketNo → PerasCertTicketNo → PerasCertTicketNo → [PerasCertTicketNo] # | |
| Show PerasCertTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasCertDB.API Methods showsPrec ∷ Int → PerasCertTicketNo → ShowS # show ∷ PerasCertTicketNo → String # showList ∷ [PerasCertTicketNo] → ShowS # | |
| Eq PerasCertTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasCertDB.API Methods | |
| Ord PerasCertTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasCertDB.API Methods compare ∷ PerasCertTicketNo → PerasCertTicketNo → Ordering # (<) ∷ PerasCertTicketNo → PerasCertTicketNo → Bool # (<=) ∷ PerasCertTicketNo → PerasCertTicketNo → Bool # (>) ∷ PerasCertTicketNo → PerasCertTicketNo → Bool # (>=) ∷ PerasCertTicketNo → PerasCertTicketNo → Bool # max ∷ PerasCertTicketNo → PerasCertTicketNo → PerasCertTicketNo # min ∷ PerasCertTicketNo → PerasCertTicketNo → PerasCertTicketNo # | |
| NoThunks PerasCertTicketNo Source # | |
Defined in Ouroboros.Consensus.Storage.PerasCertDB.API | |
Invariants
prop_addCertThenGetCertIds ∷ MonadSTM m ⇒ PerasCertDB m blk → WithArrivalTime (ValidatedPerasCert blk) → m Bool Source #
After adding a cert, its round number should be present in getCertIds.
prop_getCertsAfterZero ∷ MonadSTM m ⇒ PerasCertDB m blk → m Bool Source #
getCertsAfter with ticket 0 should return all certs in the database.
NOTE: this property is not purely STM.
prop_getCertsAfterMonotonic ∷ MonadSTM m ⇒ PerasCertDB m blk → PerasCertTicketNo → m Bool Source #
getCertsAfter returns strictly increasing ticket numbers.
prop_garbageCollectRemovesOldCerts ∷ MonadSTM m ⇒ PerasCertDB m blk → SlotNo → m Bool Source #
After garbage collection for slot S, no certs with target slot < S should remain. NOTE: this property is not purely STM.
prop_addCertLatestCertSeenMonotonic ∷ MonadSTM m ⇒ PerasCertDB m blk → WithArrivalTime (ValidatedPerasCert blk) → m Bool Source #
After adding a cert, the round number reported by getLatestCertSeen
should be greater than or equal to its previous value.
prop_garbageCollectPreservesLatestCertSeen ∷ (MonadSTM m, StandardHash blk) ⇒ PerasCertDB m blk → SlotNo → m Bool Source #
getLatestCertSeen is not affected by garbage collection.