ouroboros-consensus:protocol
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Consensus.Protocol.Praos2

Description

Praos with the Leios overlay.

Synopsis

Documentation

data family LeiosOnly proto a ∷ Type → Type Source #

a for the protocols without Leios, and b for the ones with it.

One such family per extension, which is what keeps every type that mentions one indexed by proto alone. Its two intended uses:

  • VoidUnlessLeios proto () gates a constructor, since the protocols without Leios cannot build it.
  • WhenLeios proto a gates a field, which those protocols have but cannot put anything in.

Instances

Instances details
TypeSwitch (LeiosOnly (Praos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

TypeSwitch (LeiosOnly (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

TypeSwitch (LeiosOnly (TPraos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

() ~ a ⇒ Applicative (LeiosOnly (Praos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Methods

pure ∷ a0 → LeiosOnly (Praos c) a a0 #

(<*>) ∷ LeiosOnly (Praos c) a (a0 → b) → LeiosOnly (Praos c) a a0 → LeiosOnly (Praos c) a b #

liftA2 ∷ (a0 → b → c0) → LeiosOnly (Praos c) a a0 → LeiosOnly (Praos c) a b → LeiosOnly (Praos c) a c0 #

(*>) ∷ LeiosOnly (Praos c) a a0 → LeiosOnly (Praos c) a b → LeiosOnly (Praos c) a b #

(<*) ∷ LeiosOnly (Praos c) a a0 → LeiosOnly (Praos c) a b → LeiosOnly (Praos c) a a0 #

Applicative (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

pure ∷ a0 → LeiosOnly (Praos2 c) a a0 #

(<*>) ∷ LeiosOnly (Praos2 c) a (a0 → b) → LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b #

liftA2 ∷ (a0 → b → c0) → LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a c0 #

(*>) ∷ LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a b #

(<*) ∷ LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a a0 #

() ~ a ⇒ Applicative (LeiosOnly (TPraos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Methods

pure ∷ a0 → LeiosOnly (TPraos c) a a0 #

(<*>) ∷ LeiosOnly (TPraos c) a (a0 → b) → LeiosOnly (TPraos c) a a0 → LeiosOnly (TPraos c) a b #

liftA2 ∷ (a0 → b → c0) → LeiosOnly (TPraos c) a a0 → LeiosOnly (TPraos c) a b → LeiosOnly (TPraos c) a c0 #

(*>) ∷ LeiosOnly (TPraos c) a a0 → LeiosOnly (TPraos c) a b → LeiosOnly (TPraos c) a b #

(<*) ∷ LeiosOnly (TPraos c) a a0 → LeiosOnly (TPraos c) a b → LeiosOnly (TPraos c) a a0 #

Functor (LeiosOnly (Praos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Methods

fmap ∷ (a0 → b) → LeiosOnly (Praos c) a a0 → LeiosOnly (Praos c) a b #

(<$) ∷ a0 → LeiosOnly (Praos c) a b → LeiosOnly (Praos c) a a0 #

Functor (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

fmap ∷ (a0 → b) → LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b #

(<$) ∷ a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a a0 #

Functor (LeiosOnly (TPraos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Methods

fmap ∷ (a0 → b) → LeiosOnly (TPraos c) a a0 → LeiosOnly (TPraos c) a b #

(<$) ∷ a0 → LeiosOnly (TPraos c) a b → LeiosOnly (TPraos c) a a0 #

Foldable (LeiosOnly (Praos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Methods

fold ∷ Monoid m ⇒ LeiosOnly (Praos c) a m → m #

foldMap ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (Praos c) a a0 → m #

foldMap' ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (Praos c) a a0 → m #

foldr ∷ (a0 → b → b) → b → LeiosOnly (Praos c) a a0 → b #

foldr' ∷ (a0 → b → b) → b → LeiosOnly (Praos c) a a0 → b #

foldl ∷ (b → a0 → b) → b → LeiosOnly (Praos c) a a0 → b #

foldl' ∷ (b → a0 → b) → b → LeiosOnly (Praos c) a a0 → b #

foldr1 ∷ (a0 → a0 → a0) → LeiosOnly (Praos c) a a0 → a0 #

foldl1 ∷ (a0 → a0 → a0) → LeiosOnly (Praos c) a a0 → a0 #

toList ∷ LeiosOnly (Praos c) a a0 → [a0] #

null ∷ LeiosOnly (Praos c) a a0 → Bool #

length ∷ LeiosOnly (Praos c) a a0 → Int #

elem ∷ Eq a0 ⇒ a0 → LeiosOnly (Praos c) a a0 → Bool #

maximum ∷ Ord a0 ⇒ LeiosOnly (Praos c) a a0 → a0 #

minimum ∷ Ord a0 ⇒ LeiosOnly (Praos c) a a0 → a0 #

sum ∷ Num a0 ⇒ LeiosOnly (Praos c) a a0 → a0 #

product ∷ Num a0 ⇒ LeiosOnly (Praos c) a a0 → a0 #

Foldable (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

fold ∷ Monoid m ⇒ LeiosOnly (Praos2 c) a m → m #

foldMap ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (Praos2 c) a a0 → m #

foldMap' ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (Praos2 c) a a0 → m #

foldr ∷ (a0 → b → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldr' ∷ (a0 → b → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldl ∷ (b → a0 → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldl' ∷ (b → a0 → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldr1 ∷ (a0 → a0 → a0) → LeiosOnly (Praos2 c) a a0 → a0 #

foldl1 ∷ (a0 → a0 → a0) → LeiosOnly (Praos2 c) a a0 → a0 #

toList ∷ LeiosOnly (Praos2 c) a a0 → [a0] #

null ∷ LeiosOnly (Praos2 c) a a0 → Bool #

length ∷ LeiosOnly (Praos2 c) a a0 → Int #

elem ∷ Eq a0 ⇒ a0 → LeiosOnly (Praos2 c) a a0 → Bool #

maximum ∷ Ord a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

minimum ∷ Ord a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

sum ∷ Num a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

product ∷ Num a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

Foldable (LeiosOnly (TPraos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Methods

fold ∷ Monoid m ⇒ LeiosOnly (TPraos c) a m → m #

foldMap ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (TPraos c) a a0 → m #

foldMap' ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (TPraos c) a a0 → m #

foldr ∷ (a0 → b → b) → b → LeiosOnly (TPraos c) a a0 → b #

foldr' ∷ (a0 → b → b) → b → LeiosOnly (TPraos c) a a0 → b #

foldl ∷ (b → a0 → b) → b → LeiosOnly (TPraos c) a a0 → b #

foldl' ∷ (b → a0 → b) → b → LeiosOnly (TPraos c) a a0 → b #

foldr1 ∷ (a0 → a0 → a0) → LeiosOnly (TPraos c) a a0 → a0 #

foldl1 ∷ (a0 → a0 → a0) → LeiosOnly (TPraos c) a a0 → a0 #

toList ∷ LeiosOnly (TPraos c) a a0 → [a0] #

null ∷ LeiosOnly (TPraos c) a a0 → Bool #

length ∷ LeiosOnly (TPraos c) a a0 → Int #

elem ∷ Eq a0 ⇒ a0 → LeiosOnly (TPraos c) a a0 → Bool #

maximum ∷ Ord a0 ⇒ LeiosOnly (TPraos c) a a0 → a0 #

minimum ∷ Ord a0 ⇒ LeiosOnly (TPraos c) a a0 → a0 #

sum ∷ Num a0 ⇒ LeiosOnly (TPraos c) a a0 → a0 #

product ∷ Num a0 ⇒ LeiosOnly (TPraos c) a a0 → a0 #

Traversable (LeiosOnly (Praos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Methods

traverse ∷ Applicative f ⇒ (a0 → f b) → LeiosOnly (Praos c) a a0 → f (LeiosOnly (Praos c) a b) #

sequenceA ∷ Applicative f ⇒ LeiosOnly (Praos c) a (f a0) → f (LeiosOnly (Praos c) a a0) #

mapM ∷ Monad m ⇒ (a0 → m b) → LeiosOnly (Praos c) a a0 → m (LeiosOnly (Praos c) a b) #

sequence ∷ Monad m ⇒ LeiosOnly (Praos c) a (m a0) → m (LeiosOnly (Praos c) a a0) #

Traversable (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

traverse ∷ Applicative f ⇒ (a0 → f b) → LeiosOnly (Praos2 c) a a0 → f (LeiosOnly (Praos2 c) a b) #

sequenceA ∷ Applicative f ⇒ LeiosOnly (Praos2 c) a (f a0) → f (LeiosOnly (Praos2 c) a a0) #

mapM ∷ Monad m ⇒ (a0 → m b) → LeiosOnly (Praos2 c) a a0 → m (LeiosOnly (Praos2 c) a b) #

sequence ∷ Monad m ⇒ LeiosOnly (Praos2 c) a (m a0) → m (LeiosOnly (Praos2 c) a a0) #

Traversable (LeiosOnly (TPraos c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Methods

traverse ∷ Applicative f ⇒ (a0 → f b) → LeiosOnly (TPraos c) a a0 → f (LeiosOnly (TPraos c) a b) #

sequenceA ∷ Applicative f ⇒ LeiosOnly (TPraos c) a (f a0) → f (LeiosOnly (TPraos c) a a0) #

mapM ∷ Monad m ⇒ (a0 → m b) → LeiosOnly (TPraos c) a a0 → m (LeiosOnly (TPraos c) a b) #

sequence ∷ Monad m ⇒ LeiosOnly (TPraos c) a (m a0) → m (LeiosOnly (TPraos c) a a0) #

Eq a ⇒ Eq (LeiosOnly (Praos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Methods

(==) ∷ LeiosOnly (Praos c) a b → LeiosOnly (Praos c) a b → Bool #

(/=) ∷ LeiosOnly (Praos c) a b → LeiosOnly (Praos c) a b → Bool #

Eq b ⇒ Eq (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

(==) ∷ LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a b → Bool #

(/=) ∷ LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a b → Bool #

Eq a ⇒ Eq (LeiosOnly (TPraos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Methods

(==) ∷ LeiosOnly (TPraos c) a b → LeiosOnly (TPraos c) a b → Bool #

(/=) ∷ LeiosOnly (TPraos c) a b → LeiosOnly (TPraos c) a b → Bool #

Generic (LeiosOnly (Praos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Associated Types

type Rep (LeiosOnly (Praos c) a b) 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

type Rep (LeiosOnly (Praos c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.Praos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "PraosLacksLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from ∷ LeiosOnly (Praos c) a b → Rep (LeiosOnly (Praos c) a b) x #

to ∷ Rep (LeiosOnly (Praos c) a b) x → LeiosOnly (Praos c) a b #

Generic (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Associated Types

type Rep (LeiosOnly (Praos2 c) a b) 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (LeiosOnly (Praos2 c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "Praos2HasLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)))

Methods

from ∷ LeiosOnly (Praos2 c) a b → Rep (LeiosOnly (Praos2 c) a b) x #

to ∷ Rep (LeiosOnly (Praos2 c) a b) x → LeiosOnly (Praos2 c) a b #

Generic (LeiosOnly (TPraos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Associated Types

type Rep (LeiosOnly (TPraos c) a b) 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

type Rep (LeiosOnly (TPraos c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.TPraos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "TPraosLacksLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from ∷ LeiosOnly (TPraos c) a b → Rep (LeiosOnly (TPraos c) a b) x #

to ∷ Rep (LeiosOnly (TPraos c) a b) x → LeiosOnly (TPraos c) a b #

Show a ⇒ Show (LeiosOnly (Praos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Methods

showsPrec ∷ Int → LeiosOnly (Praos c) a b → ShowS #

show ∷ LeiosOnly (Praos c) a b → String #

showList ∷ [LeiosOnly (Praos c) a b] → ShowS #

Show b ⇒ Show (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

showsPrec ∷ Int → LeiosOnly (Praos2 c) a b → ShowS #

show ∷ LeiosOnly (Praos2 c) a b → String #

showList ∷ [LeiosOnly (Praos2 c) a b] → ShowS #

Show a ⇒ Show (LeiosOnly (TPraos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Methods

showsPrec ∷ Int → LeiosOnly (TPraos c) a b → ShowS #

show ∷ LeiosOnly (TPraos c) a b → String #

showList ∷ [LeiosOnly (TPraos c) a b] → ShowS #

NoThunks a ⇒ NoThunks (LeiosOnly (Praos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

NoThunks b ⇒ NoThunks (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

NoThunks a ⇒ NoThunks (LeiosOnly (TPraos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

newtype LeiosOnly (Praos c) a b Source #

Praos is not Leios, so it holds the left alternative.

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

newtype LeiosOnly (Praos c) a b = PraosLacksLeios a
newtype LeiosOnly (Praos2 c) a b Source #

This protocol is Leios, so it holds the right alternative.

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

newtype LeiosOnly (Praos2 c) a b = Praos2HasLeios b
newtype LeiosOnly (TPraos c) a b Source #

TPraos has no Leios fields.

Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

newtype LeiosOnly (TPraos c) a b = TPraosLacksLeios a
type Rep (LeiosOnly (Praos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

type Rep (LeiosOnly (Praos c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.Praos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "PraosLacksLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
type Rep (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (LeiosOnly (Praos2 c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "Praos2HasLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)))
type Rep (LeiosOnly (TPraos c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

type Rep (LeiosOnly (TPraos c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.TPraos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "TPraosLacksLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

class (Crypto c, PolyPraosCrypto (Praos2 c) c) ⇒ LeiosCrypto c Source #

Instances

Instances details
LeiosCrypto StandardCrypto Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

data Praos2 c Source #

Instances

Instances details
Generic (ConsensusConfig (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Associated Types

type Rep (ConsensusConfig (Praos2 c)) 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (ConsensusConfig (Praos2 c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "LeiosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "leiosPraosConfig") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConsensusConfig (Praos c)))))
Crypto c ⇒ NoThunks (ConsensusConfig (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

LeiosCrypto c ⇒ LeiosProtocol (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

LeiosCrypto c ⇒ ConsensusProtocol (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

HasMaxMajorProtVer (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

LeiosCrypto c ⇒ PraosProtocolSupportsNode (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

TypeSwitch (LeiosOnly (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

PolyPraosCrypto (Praos2 StandardCrypto) StandardCrypto Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

DijkstraEraForecast era ⇒ ForecastToPolyPraosLedgerView (Praos2 c) era Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

TranslationContext era ~ DijkstraGenesis ⇒ TranslateProto (Praos c) (Praos2 c) era Source #

Crossing from Praos into Praos with Leios.

Everything carries over unchanged; the Leios fields merely have to be introduced. Nothing has been announced, since no header of the protocol being left could have carried an announcement. The Leios parameters come from the Dijkstra genesis. The committee is empty: none is seated until a stake snapshot rotation within the new era, beyond any forecast from the old one.

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

TranslateProto (Praos2 c) (Praos2 c) era Source #

Crossing from one era with Leios into another.

Everything carries over unchanged except the announcement: it was made in the era being left, so it is no longer certifiable, since an endorser block may not be certified across an era boundary (to keep the design simpler).

Nothing uses this yet: it's dead code until two adjacent eras use Praos2. Even so, it's important to implement it _now_, because it would be easy to forget, and doing so could introduce blindspots in the rest of the Leios rules.

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

TranslationContext era ~ DijkstraGenesis ⇒ TranslateProto (TPraos c) (Praos2 c) era Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Applicative (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

pure ∷ a0 → LeiosOnly (Praos2 c) a a0 #

(<*>) ∷ LeiosOnly (Praos2 c) a (a0 → b) → LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b #

liftA2 ∷ (a0 → b → c0) → LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a c0 #

(*>) ∷ LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a b #

(<*) ∷ LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a a0 #

Functor (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

fmap ∷ (a0 → b) → LeiosOnly (Praos2 c) a a0 → LeiosOnly (Praos2 c) a b #

(<$) ∷ a0 → LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a a0 #

Foldable (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

fold ∷ Monoid m ⇒ LeiosOnly (Praos2 c) a m → m #

foldMap ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (Praos2 c) a a0 → m #

foldMap' ∷ Monoid m ⇒ (a0 → m) → LeiosOnly (Praos2 c) a a0 → m #

foldr ∷ (a0 → b → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldr' ∷ (a0 → b → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldl ∷ (b → a0 → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldl' ∷ (b → a0 → b) → b → LeiosOnly (Praos2 c) a a0 → b #

foldr1 ∷ (a0 → a0 → a0) → LeiosOnly (Praos2 c) a a0 → a0 #

foldl1 ∷ (a0 → a0 → a0) → LeiosOnly (Praos2 c) a a0 → a0 #

toList ∷ LeiosOnly (Praos2 c) a a0 → [a0] #

null ∷ LeiosOnly (Praos2 c) a a0 → Bool #

length ∷ LeiosOnly (Praos2 c) a a0 → Int #

elem ∷ Eq a0 ⇒ a0 → LeiosOnly (Praos2 c) a a0 → Bool #

maximum ∷ Ord a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

minimum ∷ Ord a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

sum ∷ Num a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

product ∷ Num a0 ⇒ LeiosOnly (Praos2 c) a a0 → a0 #

Traversable (LeiosOnly (Praos2 c) a) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

traverse ∷ Applicative f ⇒ (a0 → f b) → LeiosOnly (Praos2 c) a a0 → f (LeiosOnly (Praos2 c) a b) #

sequenceA ∷ Applicative f ⇒ LeiosOnly (Praos2 c) a (f a0) → f (LeiosOnly (Praos2 c) a a0) #

mapM ∷ Monad m ⇒ (a0 → m b) → LeiosOnly (Praos2 c) a a0 → m (LeiosOnly (Praos2 c) a b) #

sequence ∷ Monad m ⇒ LeiosOnly (Praos2 c) a (m a0) → m (LeiosOnly (Praos2 c) a a0) #

Eq b ⇒ Eq (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

(==) ∷ LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a b → Bool #

(/=) ∷ LeiosOnly (Praos2 c) a b → LeiosOnly (Praos2 c) a b → Bool #

Generic (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Associated Types

type Rep (LeiosOnly (Praos2 c) a b) 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (LeiosOnly (Praos2 c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "Praos2HasLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)))

Methods

from ∷ LeiosOnly (Praos2 c) a b → Rep (LeiosOnly (Praos2 c) a b) x #

to ∷ Rep (LeiosOnly (Praos2 c) a b) x → LeiosOnly (Praos2 c) a b #

Show b ⇒ Show (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Methods

showsPrec ∷ Int → LeiosOnly (Praos2 c) a b → ShowS #

show ∷ LeiosOnly (Praos2 c) a b → String #

showList ∷ [LeiosOnly (Praos2 c) a b] → ShowS #

NoThunks b ⇒ NoThunks (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (ConsensusConfig (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (ConsensusConfig (Praos2 c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "LeiosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "leiosPraosConfig") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConsensusConfig (Praos c)))))
type CanBeLeader (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type ChainDepState (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

newtype ConsensusConfig (Praos2 c) Source #

Praos's configuration, wrapped only because ConsensusConfig is a data family.

Leios adds nothing to it: the periods, the committee, the quorum and the size bounds all reach the protocol through the ledger view instead.

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type IsLeader (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type LedgerView (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type TiebreakerView (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type ValidateView (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type ValidationErr (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

newtype LeiosOnly (Praos2 c) a b Source #

This protocol is Leios, so it holds the right alternative.

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

newtype LeiosOnly (Praos2 c) a b = Praos2HasLeios b
type PraosProtocolSupportsNodeCrypto (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type ShelleyProtocolHeader (Praos2 c) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (LeiosOnly (Praos2 c) a b) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (LeiosOnly (Praos2 c) a b) = D1 ('MetaData "LeiosOnly" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "Praos2HasLeios" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)))

data family ConsensusConfig p Source #

Static configuration required to run the consensus protocol

Every method in the ConsensusProtocol class takes the consensus configuration as a parameter, so having this as a data family rather than a type family resolves most ambiguity.

Defined out of the class so that protocols can define this type without having to define the entire protocol at the same time (or indeed in the same module).

TODO See the TODO about this misnomer at topLevelConfigProtocol.

Instances

Instances details
Generic (ConsensusConfig (HardForkProtocol xs)) Source # 
Instance details

Defined in Ouroboros.Consensus.HardFork.Combinator.Basics

Associated Types

type Rep (ConsensusConfig (HardForkProtocol xs)) 
Instance details

Defined in Ouroboros.Consensus.HardFork.Combinator.Basics

type Rep (ConsensusConfig (HardForkProtocol xs)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.HardFork.Combinator.Basics" "ouroboros-consensus-5.0.0.0-inplace" 'False) (C1 ('MetaCons "HardForkConsensusConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "hardForkConsensusConfigK") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SecurityParam) :*: (S1 ('MetaSel ('Just "hardForkConsensusConfigShape") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Shape xs)) :*: S1 ('MetaSel ('Just "hardForkConsensusConfigPerEra") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (PerEraConsensusConfig xs)))))
Generic (ConsensusConfig (Bft c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.BFT

Associated Types

type Rep (ConsensusConfig (Bft c)) 
Instance details

Defined in Ouroboros.Consensus.Protocol.BFT

type Rep (ConsensusConfig (Bft c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.BFT" "ouroboros-consensus-5.0.0.0-inplace" 'False) (C1 ('MetaCons "BftConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "bftParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BftParams) :*: (S1 ('MetaSel ('Just "bftSignKey") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (SignKeyDSIGN (BftDSIGN c))) :*: S1 ('MetaSel ('Just "bftVerKeys") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map NodeId (VerKeyDSIGN (BftDSIGN c)))))))

Methods

from ∷ ConsensusConfig (Bft c) → Rep (ConsensusConfig (Bft c)) x #

to ∷ Rep (ConsensusConfig (Bft c)) x → ConsensusConfig (Bft c) #

Generic (ConsensusConfig (ModChainSel p t)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.ModChainSel

Associated Types

type Rep (ConsensusConfig (ModChainSel p t)) 
Instance details

Defined in Ouroboros.Consensus.Protocol.ModChainSel

type Rep (ConsensusConfig (ModChainSel p t)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.ModChainSel" "ouroboros-consensus-5.0.0.0-inplace" 'True) (C1 ('MetaCons "McsConsensusConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "mcsConfigP") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConsensusConfig p))))
Generic (ConsensusConfig (PBft c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.PBFT

Associated Types

type Rep (ConsensusConfig (PBft c)) 
Instance details

Defined in Ouroboros.Consensus.Protocol.PBFT

type Rep (ConsensusConfig (PBft c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.PBFT" "ouroboros-consensus-5.0.0.0-inplace" 'True) (C1 ('MetaCons "PBftConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "pbftParams") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PBftParams)))
Generic (ConsensusConfig (Praos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Associated Types

type Rep (ConsensusConfig (Praos c)) 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

type Rep (ConsensusConfig (Praos c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.Praos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'False) (C1 ('MetaCons "PraosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "praosParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PraosParams) :*: S1 ('MetaSel ('Just "praosEpochInfo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (EpochInfo (Except PastHorizonException)))))
Generic (ConsensusConfig (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

Associated Types

type Rep (ConsensusConfig (Praos2 c)) 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (ConsensusConfig (Praos2 c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "LeiosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "leiosPraosConfig") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConsensusConfig (Praos c)))))
Generic (ConsensusConfig (TPraos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

Associated Types

type Rep (ConsensusConfig (TPraos c)) 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

type Rep (ConsensusConfig (TPraos c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.TPraos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'False) (C1 ('MetaCons "TPraosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "tpraosParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TPraosParams) :*: S1 ('MetaSel ('Just "tpraosEpochInfo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (EpochInfo (Except PastHorizonException)))))
CanHardFork xs ⇒ NoThunks (ConsensusConfig (HardForkProtocol xs)) Source # 
Instance details

Defined in Ouroboros.Consensus.HardFork.Combinator.Basics

BftCrypto c ⇒ NoThunks (ConsensusConfig (Bft c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.BFT

ConsensusProtocol p ⇒ NoThunks (ConsensusConfig (ModChainSel p t)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.ModChainSel

NoThunks (ConsensusConfig (PBft c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.PBFT

Crypto c ⇒ NoThunks (ConsensusConfig (Praos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

Crypto c ⇒ NoThunks (ConsensusConfig (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

PraosCrypto c ⇒ NoThunks (ConsensusConfig (TPraos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

type Rep (ConsensusConfig (HardForkProtocol xs)) Source # 
Instance details

Defined in Ouroboros.Consensus.HardFork.Combinator.Basics

type Rep (ConsensusConfig (HardForkProtocol xs)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.HardFork.Combinator.Basics" "ouroboros-consensus-5.0.0.0-inplace" 'False) (C1 ('MetaCons "HardForkConsensusConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "hardForkConsensusConfigK") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SecurityParam) :*: (S1 ('MetaSel ('Just "hardForkConsensusConfigShape") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Shape xs)) :*: S1 ('MetaSel ('Just "hardForkConsensusConfigPerEra") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (PerEraConsensusConfig xs)))))
type Rep (ConsensusConfig (Bft c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.BFT

type Rep (ConsensusConfig (Bft c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.BFT" "ouroboros-consensus-5.0.0.0-inplace" 'False) (C1 ('MetaCons "BftConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "bftParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BftParams) :*: (S1 ('MetaSel ('Just "bftSignKey") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (SignKeyDSIGN (BftDSIGN c))) :*: S1 ('MetaSel ('Just "bftVerKeys") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map NodeId (VerKeyDSIGN (BftDSIGN c)))))))
type Rep (ConsensusConfig (ModChainSel p t)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.ModChainSel

type Rep (ConsensusConfig (ModChainSel p t)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.ModChainSel" "ouroboros-consensus-5.0.0.0-inplace" 'True) (C1 ('MetaCons "McsConsensusConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "mcsConfigP") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConsensusConfig p))))
type Rep (ConsensusConfig (PBft c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.PBFT

type Rep (ConsensusConfig (PBft c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.PBFT" "ouroboros-consensus-5.0.0.0-inplace" 'True) (C1 ('MetaCons "PBftConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "pbftParams") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PBftParams)))
type Rep (ConsensusConfig (Praos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

type Rep (ConsensusConfig (Praos c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.Praos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'False) (C1 ('MetaCons "PraosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "praosParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PraosParams) :*: S1 ('MetaSel ('Just "praosEpochInfo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (EpochInfo (Except PastHorizonException)))))
type Rep (ConsensusConfig (Praos2 c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

type Rep (ConsensusConfig (Praos2 c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.Praos2" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'True) (C1 ('MetaCons "LeiosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "leiosPraosConfig") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConsensusConfig (Praos c)))))
type Rep (ConsensusConfig (TPraos c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

type Rep (ConsensusConfig (TPraos c)) = D1 ('MetaData "ConsensusConfig" "Ouroboros.Consensus.Protocol.TPraos" "ouroboros-consensus-5.0.0.0-inplace-protocol" 'False) (C1 ('MetaCons "TPraosConfig" 'PrefixI 'True) (S1 ('MetaSel ('Just "tpraosParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TPraosParams) :*: S1 ('MetaSel ('Just "tpraosEpochInfo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (EpochInfo (Except PastHorizonException)))))
data ConsensusConfig (HardForkProtocol xs) Source # 
Instance details

Defined in Ouroboros.Consensus.HardFork.Combinator.Basics

data ConsensusConfig (Bft c) Source #

(Static) node configuration

Instance details

Defined in Ouroboros.Consensus.Protocol.BFT

newtype ConsensusConfig (PBft c) Source #

(Static) node configuration

Instance details

Defined in Ouroboros.Consensus.Protocol.PBFT

data ConsensusConfig (Praos c) Source #

Static configuration

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos

newtype ConsensusConfig (Praos2 c) Source #

Praos's configuration, wrapped only because ConsensusConfig is a data family.

Leios adds nothing to it: the periods, the committee, the quorum and the size bounds all reach the protocol through the ledger view instead.

Instance details

Defined in Ouroboros.Consensus.Protocol.Praos2

data ConsensusConfig (TPraos c) Source #

Static configuration

Instance details

Defined in Ouroboros.Consensus.Protocol.TPraos

newtype ConsensusConfig (ModChainSel p t) Source # 
Instance details

Defined in Ouroboros.Consensus.Protocol.ModChainSel