Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data OVERLAY c
- type family PredicateFailure a
- data OverlayEnv = OverlayEnv UnitInterval PoolDistr GenDelegs Nonce
- data OverlayPredicateFailure c
- = VRFKeyUnknown (KeyHash 'StakePool)
- | VRFKeyWrongVRFKey (KeyHash 'StakePool) (VRFVerKeyHash 'StakePoolVRF) (VRFVerKeyHash 'BlockIssuerVRF)
- | VRFKeyBadNonce Nonce SlotNo Nonce (CertifiedVRF (VRF c) Nonce)
- | VRFKeyBadLeaderValue Nonce SlotNo Nonce (CertifiedVRF (VRF c) Nonce)
- | VRFLeaderValueTooBig (OutputVRF (VRF c)) Rational ActiveSlotCoeff
- | NotActiveSlotOVERLAY SlotNo
- | WrongGenesisColdKeyOVERLAY (KeyHash 'BlockIssuer) (KeyHash 'GenesisDelegate)
- | WrongGenesisVRFKeyOVERLAY (KeyHash 'BlockIssuer) (VRFVerKeyHash 'GenDelegVRF) (VRFVerKeyHash 'BlockIssuerVRF)
- | UnknownGenesisKeyOVERLAY (KeyHash 'Genesis)
- | OcertFailure (PredicateFailure (OCERT c))
- data OBftSlot
- = NonActiveSlot
- | ActiveSlot !(KeyHash 'Genesis)
- classifyOverlaySlot ∷ SlotNo → Set (KeyHash 'Genesis) → UnitInterval → ActiveSlotCoeff → SlotNo → OBftSlot
- lookupInOverlaySchedule ∷ SlotNo → Set (KeyHash 'Genesis) → UnitInterval → ActiveSlotCoeff → SlotNo → Maybe OBftSlot
- overlaySlots ∷ SlotNo → UnitInterval → EpochSize → [SlotNo]
Documentation
Instances
type family PredicateFailure a Source #
Descriptive type for the possible failures which might cause a transition to fail.
As a convention, PredicateFailure
s which are "structural" (meaning that
they are not "throwable" in practice, and are used to pass control from
one transition rule to another) are prefixed with S_
.
Structural PredicateFailure
s represent conditions between rules where
the disjunction of all rules' preconditions is equal to True
. That is,
either one rule will throw a structural PredicateFailure
and the other
will succeed, or vice-versa.
Instances
data OverlayEnv Source #
Instances
Generic OverlayEnv Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay type Rep OverlayEnv ∷ Type → Type # from ∷ OverlayEnv → Rep OverlayEnv x # to ∷ Rep OverlayEnv x → OverlayEnv # | |
NoThunks OverlayEnv Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay | |
type Rep OverlayEnv Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay type Rep OverlayEnv = D1 ('MetaData "OverlayEnv" "Cardano.Protocol.TPraos.Rules.Overlay" "cardano-protocol-tpraos-1.4.0.0-inplace" 'False) (C1 ('MetaCons "OverlayEnv" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitInterval) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PoolDistr)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GenDelegs) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Nonce)))) |
data OverlayPredicateFailure c Source #
Instances
Generic (OverlayPredicateFailure c) Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay type Rep (OverlayPredicateFailure c) ∷ Type → Type # from ∷ OverlayPredicateFailure c → Rep (OverlayPredicateFailure c) x # to ∷ Rep (OverlayPredicateFailure c) x → OverlayPredicateFailure c # | |
VRFAlgorithm (VRF c) ⇒ Show (OverlayPredicateFailure c) Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay showsPrec ∷ Int → OverlayPredicateFailure c → ShowS # show ∷ OverlayPredicateFailure c → String # showList ∷ [OverlayPredicateFailure c] → ShowS # | |
VRFAlgorithm (VRF c) ⇒ Eq (OverlayPredicateFailure c) Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay (==) ∷ OverlayPredicateFailure c → OverlayPredicateFailure c → Bool # (/=) ∷ OverlayPredicateFailure c → OverlayPredicateFailure c → Bool # | |
VRFAlgorithm (VRF c) ⇒ NoThunks (OverlayPredicateFailure c) Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay | |
type Rep (OverlayPredicateFailure c) Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay type Rep (OverlayPredicateFailure c) = D1 ('MetaData "OverlayPredicateFailure" "Cardano.Protocol.TPraos.Rules.Overlay" "cardano-protocol-tpraos-1.4.0.0-inplace" 'False) (((C1 ('MetaCons "VRFKeyUnknown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeyHash 'StakePool))) :+: C1 ('MetaCons "VRFKeyWrongVRFKey" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeyHash 'StakePool)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (VRFVerKeyHash 'StakePoolVRF)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (VRFVerKeyHash 'BlockIssuerVRF))))) :+: (C1 ('MetaCons "VRFKeyBadNonce" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Nonce) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SlotNo)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Nonce) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CertifiedVRF (VRF c) Nonce)))) :+: (C1 ('MetaCons "VRFKeyBadLeaderValue" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Nonce) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SlotNo)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Nonce) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CertifiedVRF (VRF c) Nonce)))) :+: C1 ('MetaCons "VRFLeaderValueTooBig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OutputVRF (VRF c))) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ActiveSlotCoeff)))))) :+: ((C1 ('MetaCons "NotActiveSlotOVERLAY" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SlotNo)) :+: C1 ('MetaCons "WrongGenesisColdKeyOVERLAY" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeyHash 'BlockIssuer)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeyHash 'GenesisDelegate)))) :+: (C1 ('MetaCons "WrongGenesisVRFKeyOVERLAY" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeyHash 'BlockIssuer)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (VRFVerKeyHash 'GenDelegVRF)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (VRFVerKeyHash 'BlockIssuerVRF)))) :+: (C1 ('MetaCons "UnknownGenesisKeyOVERLAY" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeyHash 'Genesis))) :+: C1 ('MetaCons "OcertFailure" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PredicateFailure (OCERT c)))))))) |
Instances
Generic OBftSlot Source # | |
Show OBftSlot Source # | |
DecCBOR OBftSlot Source # | |
EncCBOR OBftSlot Source # | |
NFData OBftSlot Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay | |
Eq OBftSlot Source # | |
Ord OBftSlot Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay | |
NoThunks OBftSlot Source # | |
type Rep OBftSlot Source # | |
Defined in Cardano.Protocol.TPraos.Rules.Overlay type Rep OBftSlot = D1 ('MetaData "OBftSlot" "Cardano.Protocol.TPraos.Rules.Overlay" "cardano-protocol-tpraos-1.4.0.0-inplace" 'False) (C1 ('MetaCons "NonActiveSlot" 'PrefixI 'False) (U1 ∷ Type → Type) :+: C1 ('MetaCons "ActiveSlot" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (KeyHash 'Genesis)))) |
classifyOverlaySlot ∷ SlotNo → Set (KeyHash 'Genesis) → UnitInterval → ActiveSlotCoeff → SlotNo → OBftSlot Source #
lookupInOverlaySchedule ∷ SlotNo → Set (KeyHash 'Genesis) → UnitInterval → ActiveSlotCoeff → SlotNo → Maybe OBftSlot Source #
overlaySlots ∷ SlotNo → UnitInterval → EpochSize → [SlotNo] Source #
Return the list of overlaySlots for a given epoch. Note that this linear in the size of the epoch, and should probably only be used for testing. If something more performant is needed, we could probably use [start + floor(xd) | x <- [0 .. (spe -1)], floor(xd) < spe] but we would need to make sure that this is equivalent.