Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
The stake distribution, aggregated by stake pool (as opposed to stake credential), plays a primary role in Cardano's proof of stake network. Together with the VRF checks, the stake distribution determines leader election. The leader election is the precisely the part of the ledger that is determined by Ouroboros (Praos and Genesis), our consensus mechanism. See Section 16, "Leader Value Calculation", of the formal specification.
Synopsis
- data IndividualPoolStake c = IndividualPoolStake {}
- data PoolDistr c = PoolDistr {
- unPoolDistr ∷ !(Map (KeyHash 'StakePool c) (IndividualPoolStake c))
- pdTotalActiveStake ∷ !(CompactForm Coin)
- poolDistrDistrL ∷ Lens' (PoolDistr c) (Map (KeyHash 'StakePool c) (IndividualPoolStake c))
- poolDistrTotalL ∷ Lens' (PoolDistr c) (CompactForm Coin)
- individualTotalPoolStakeL ∷ Lens' (IndividualPoolStake c) (CompactForm Coin)
Documentation
data IndividualPoolStake c Source #
The IndividualPoolStake
contains all the stake controlled
by a single stake pool (the combination of owners and delegates)
for a given epoch, and also the hash of the stake pool's
registered VRF key.
When a stake pool produces a block, the header contains the
full VRF verification key and VRF value for leader election.
We check the VRF key against the value in IndividualPoolStake
and we check the VRF value using the epoch nonce and
the relative stake of the pool as given in IndividualPoolStake
.
The stake is relative to the total amount of active stake
in the network. Stake is active if it is both registered and
delegated to a registered stake pool.
IndividualPoolStake | |
|
Instances
A map of stake pool IDs (the hash of the stake pool operator's
verification key) to IndividualPoolStake
. Also holds absolute values
necessary for the calculations in the computeDRepDistr
.
PoolDistr | |
|
Instances
Crypto c ⇒ ToJSON (PoolDistr c) Source # | |
Generic (PoolDistr c) Source # | |
Show (PoolDistr c) Source # | |
Crypto c ⇒ DecCBOR (PoolDistr c) Source # | |
Crypto c ⇒ EncCBOR (PoolDistr c) Source # | |
NFData (PoolDistr c) Source # | |
Defined in Cardano.Ledger.PoolDistr | |
Eq (PoolDistr c) Source # | |
NoThunks (PoolDistr c) Source # | |
type Rep (PoolDistr c) Source # | |
Defined in Cardano.Ledger.PoolDistr type Rep (PoolDistr c) = D1 ('MetaData "PoolDistr" "Cardano.Ledger.PoolDistr" "cardano-ledger-core-1.16.0.0-inplace" 'False) (C1 ('MetaCons "PoolDistr" 'PrefixI 'True) (S1 ('MetaSel ('Just "unPoolDistr") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (KeyHash 'StakePool c) (IndividualPoolStake c))) :*: S1 ('MetaSel ('Just "pdTotalActiveStake") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (CompactForm Coin)))) |
poolDistrDistrL ∷ Lens' (PoolDistr c) (Map (KeyHash 'StakePool c) (IndividualPoolStake c)) Source #
poolDistrTotalL ∷ Lens' (PoolDistr c) (CompactForm Coin) Source #