Safe Haskell | None |
---|---|
Language | Haskell98 |
Shelley.Spec.Ledger.LedgerState
Description
This module implements the operation rules for treating UTxO transactions (Tx
)
as state transformations on a ledger state (LedgerState
),
as specified in A Simplified Formal Specification of a UTxO Ledger.
Synopsis
- data AccountState = AccountState {}
- data DPState crypto = DPState {}
- data DState crypto = DState {
- _rewards :: !(RewardAccounts crypto)
- _delegations :: !(Map (Credential 'Staking crypto) (KeyHash 'StakePool crypto))
- _ptrs :: !(Bimap Ptr (Credential 'Staking crypto))
- _fGenDelegs :: !(Map (FutureGenDeleg crypto) (GenDelegPair crypto))
- _genDelegs :: !(GenDelegs crypto)
- _irwd :: !(InstantaneousRewards crypto)
- data EpochState era = EpochState {
- esAccountState :: !AccountState
- esSnapshots :: !(SnapShots (Crypto era))
- esLState :: !(LedgerState era)
- esPrevPp :: !(PParams era)
- esPp :: !(PParams era)
- esNonMyopic :: !(NonMyopic (Crypto era))
- data FutureGenDeleg crypto = FutureGenDeleg {
- fGenDelegSlot :: !SlotNo
- fGenDelegGenKeyHash :: !(KeyHash 'Genesis crypto)
- data InstantaneousRewards crypto = InstantaneousRewards {
- iRReserves :: !(Map (Credential 'Staking crypto) Coin)
- iRTreasury :: !(Map (Credential 'Staking crypto) Coin)
- type Ix = Natural
- type KeyPairs crypto = [(KeyPair 'Payment crypto, KeyPair 'Staking crypto)]
- data LedgerState era = LedgerState {
- _utxoState :: !(UTxOState era)
- _delegationState :: !(DPState (Crypto era))
- data PPUPState era = PPUPState {
- proposals :: !(ProposedPPUpdates era)
- futureProposals :: !(ProposedPPUpdates era)
- data PState crypto = PState {}
- type RewardAccounts crypto = Map (Credential 'Staking crypto) Coin
- data RewardUpdate crypto = RewardUpdate {}
- data UTxOState era = UTxOState {}
- depositPoolChange :: HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))) => LedgerState era -> PParams era -> TxBody era -> Coin
- emptyAccount :: AccountState
- emptyDPState :: DPState crypto
- emptyDState :: DState crypto
- emptyEpochState :: EpochState era
- emptyInstantaneousRewards :: InstantaneousRewards crypto
- emptyLedgerState :: LedgerState era
- emptyPPUPState :: PPUPState era
- emptyPState :: PState crypto
- emptyRewardUpdate :: RewardUpdate crypto
- emptyUTxOState :: UTxOState era
- pvCanFollow :: ProtVer -> StrictMaybe ProtVer -> Bool
- reapRewards :: RewardAccounts crypto -> RewardAccounts crypto -> RewardAccounts crypto
- totalInstantaneousReservesRewards :: InstantaneousRewards crypto -> Coin
- updatePpup :: UTxOState era -> PParams era -> UTxOState era
- emptyDelegation :: DPState crypto
- genesisState :: Map (KeyHash 'Genesis (Crypto era)) (GenDelegPair (Crypto era)) -> UTxO era -> LedgerState era
- newtype WitHashes crypto = WitHashes {
- unWitHashes :: Set (KeyHash 'Witness crypto)
- nullWitHashes :: WitHashes crypto -> Bool
- diffWitHashes :: WitHashes crypto -> WitHashes crypto -> WitHashes crypto
- minfee :: PParams era -> Tx era -> Coin
- minfeeBound :: forall era. (ShelleyBased era, HasField "outputs" (TxBody era) (StrictSeq (TxOut era)), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era)))) => PParams era -> Tx era -> Coin
- txsize :: Tx era -> Integer
- txsizeBound :: forall era. (ShelleyBased era, HasField "outputs" (TxBody era) (StrictSeq (TxOut era)), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era)))) => Tx era -> Integer
- produced :: (ShelleyBased era, HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))), HasField "outputs" (TxBody era) (StrictSeq (TxOut era)), HasField "txfee" (TxBody era) Coin) => PParams era -> Map (KeyHash 'StakePool (Crypto era)) (PoolParams (Crypto era)) -> TxBody era -> Value era
- consumed :: forall era. (ShelleyBased era, HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era))), HasField "wdrls" (TxBody era) (Wdrl (Crypto era))) => PParams era -> UTxO era -> TxBody era -> Value era
- verifiedWits :: (TxBodyConstraints era, AnnotatedData (Script era), ToCBOR (AuxiliaryData era), DSignable (Crypto era) (Hash (Crypto era) EraIndependentTxBody)) => Tx era -> Either [VKey 'Witness (Crypto era)] ()
- witsVKeyNeeded :: forall era. (ShelleyBased era, HasField "wdrls" (TxBody era) (Wdrl (Crypto era)), HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era))), HasField "update" (TxBody era) (StrictMaybe (Update era))) => UTxO era -> Tx era -> GenDelegs (Crypto era) -> WitHashes (Crypto era)
- witsFromWitnessSet :: (Era era, AnnotatedData (Script era)) => WitnessSet era -> WitHashes (Crypto era)
- keyRefunds :: HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))) => PParams era -> TxBody era -> Coin
- stakeDistr :: forall era. ShelleyBased era => UTxO era -> DState (Crypto era) -> PState (Crypto era) -> SnapShot (Crypto era)
- applyRUpd :: RewardUpdate (Crypto era) -> EpochState era -> EpochState era
- createRUpd :: EpochSize -> BlocksMade (Crypto era) -> EpochState era -> Coin -> ShelleyBase (RewardUpdate (Crypto era))
- data NewEpochState era = NewEpochState {
- nesEL :: !EpochNo
- nesBprev :: !(BlocksMade (Crypto era))
- nesBcur :: !(BlocksMade (Crypto era))
- nesEs :: !(EpochState era)
- nesRu :: !(StrictMaybe (RewardUpdate (Crypto era)))
- nesPd :: !(PoolDistr (Crypto era))
- getGKeys :: NewEpochState era -> Set (KeyHash 'Genesis (Crypto era))
- updateNES :: NewEpochState era -> BlocksMade (Crypto era) -> LedgerState era -> NewEpochState era
- circulation :: EpochState era -> Coin -> Coin
- decayFactor :: Float
- returnRedeemAddrsToReserves :: ShelleyBased era => EpochState era -> EpochState era
Documentation
data AccountState Source #
Constructors
AccountState | |
Instances
The state associated with the current stake delegation.
Instances
Eq (DPState crypto) Source # | |
Show (DPState crypto) Source # | |
Generic (DPState crypto) Source # | |
NFData (DPState crypto) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState | |
Crypto crypto => ToCBOR (DPState crypto) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState | |
Crypto crypto => FromCBOR (DPState crypto) Source # | |
NoThunks (DPState crypto) Source # | |
type Rep (DPState crypto) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState type Rep (DPState crypto) = D1 ('MetaData "DPState" "Shelley.Spec.Ledger.LedgerState" "shelley-spec-ledger-0.1.0.0-Is3EknyvW92LxCl96jGQVW" 'False) (C1 ('MetaCons "DPState" 'PrefixI 'True) (S1 ('MetaSel ('Just "_dstate") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (DState crypto)) :*: S1 ('MetaSel ('Just "_pstate") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (PState crypto)))) |
State of staking pool delegations and rewards
Constructors
DState | |
Fields
|
Instances
data EpochState era Source #
Constructors
EpochState | |
Fields
|
Instances
data FutureGenDeleg crypto Source #
Constructors
FutureGenDeleg | |
Fields
|
Instances
data InstantaneousRewards crypto Source #
Constructors
InstantaneousRewards | |
Fields
|
Instances
type KeyPairs crypto = [(KeyPair 'Payment crypto, KeyPair 'Staking crypto)] Source #
Representation of a list of pairs of key pairs, e.g., pay and stake keys
data LedgerState era Source #
The state associated with a Ledger
.
Constructors
LedgerState | |
Fields
|
Instances
Constructors
PPUPState | |
Fields
|
Instances
Eq (PPUPState era) Source # | |
Show (PPUPState era) Source # | |
Generic (PPUPState era) Source # | |
NFData (PPUPState era) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState | |
Era era => ToCBOR (PPUPState era) Source # | |
Era era => FromCBOR (PPUPState era) Source # | |
NoThunks (PPUPState era) Source # | |
type Rep (PPUPState era) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState type Rep (PPUPState era) = D1 ('MetaData "PPUPState" "Shelley.Spec.Ledger.LedgerState" "shelley-spec-ledger-0.1.0.0-Is3EknyvW92LxCl96jGQVW" 'False) (C1 ('MetaCons "PPUPState" 'PrefixI 'True) (S1 ('MetaSel ('Just "proposals") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ProposedPPUpdates era)) :*: S1 ('MetaSel ('Just "futureProposals") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ProposedPPUpdates era)))) |
Current state of staking pools and their certificate counters.
Constructors
PState | |
Fields |
Instances
Eq (PState crypto) Source # | |
Show (PState crypto) Source # | |
Generic (PState crypto) Source # | |
NFData (PState crypto) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState | |
Crypto crypto => ToCBOR (PState crypto) Source # | |
Crypto crypto => FromCBOR (PState crypto) Source # | |
NoThunks (PState crypto) Source # | |
type Rep (PState crypto) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState type Rep (PState crypto) = D1 ('MetaData "PState" "Shelley.Spec.Ledger.LedgerState" "shelley-spec-ledger-0.1.0.0-Is3EknyvW92LxCl96jGQVW" 'False) (C1 ('MetaCons "PState" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (KeyHash 'StakePool crypto) (PoolParams crypto))) :*: (S1 ('MetaSel ('Just "_fPParams") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (KeyHash 'StakePool crypto) (PoolParams crypto))) :*: S1 ('MetaSel ('Just "_retiring") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (KeyHash 'StakePool crypto) EpochNo))))) |
type RewardAccounts crypto = Map (Credential 'Staking crypto) Coin Source #
data RewardUpdate crypto Source #
Constructors
RewardUpdate | |
Instances
Constructors
UTxOState | |
Instances
depositPoolChange :: HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))) => LedgerState era -> PParams era -> TxBody era -> Coin Source #
Calculate the change to the deposit pool for a given transaction.
emptyDPState :: DPState crypto Source #
emptyDState :: DState crypto Source #
emptyEpochState :: EpochState era Source #
emptyInstantaneousRewards :: InstantaneousRewards crypto Source #
emptyLedgerState :: LedgerState era Source #
emptyPPUPState :: PPUPState era Source #
emptyPState :: PState crypto Source #
emptyRewardUpdate :: RewardUpdate crypto Source #
emptyUTxOState :: UTxOState era Source #
pvCanFollow :: ProtVer -> StrictMaybe ProtVer -> Bool Source #
reapRewards :: RewardAccounts crypto -> RewardAccounts crypto -> RewardAccounts crypto Source #
totalInstantaneousReservesRewards :: InstantaneousRewards crypto -> Coin Source #
updatePpup :: UTxOState era -> PParams era -> UTxOState era Source #
Update the protocol parameter updates by clearing out the proposals and making the future proposals become the new proposals, provided the new proposals can follow (otherwise reset them).
state transitions
emptyDelegation :: DPState crypto Source #
Genesis State
genesisState :: Map (KeyHash 'Genesis (Crypto era)) (GenDelegPair (Crypto era)) -> UTxO era -> LedgerState era Source #
Creates the ledger state for an empty ledger which contains the specified transaction outputs.
Validation
newtype WitHashes crypto Source #
Constructors
WitHashes | |
Fields
|
Instances
Eq (WitHashes crypto) Source # | |
Show (WitHashes crypto) Source # | |
Generic (WitHashes crypto) Source # | |
NoThunks (WitHashes crypto) Source # | |
type Rep (WitHashes crypto) Source # | |
Defined in Shelley.Spec.Ledger.LedgerState type Rep (WitHashes crypto) = D1 ('MetaData "WitHashes" "Shelley.Spec.Ledger.LedgerState" "shelley-spec-ledger-0.1.0.0-Is3EknyvW92LxCl96jGQVW" 'True) (C1 ('MetaCons "WitHashes" 'PrefixI 'True) (S1 ('MetaSel ('Just "unWitHashes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set (KeyHash 'Witness crypto))))) |
nullWitHashes :: WitHashes crypto -> Bool Source #
Check if a set of witness hashes is empty.
diffWitHashes :: WitHashes crypto -> WitHashes crypto -> WitHashes crypto Source #
Extract the difference between two sets of witness hashes.
minfeeBound :: forall era. (ShelleyBased era, HasField "outputs" (TxBody era) (StrictSeq (TxOut era)), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era)))) => PParams era -> Tx era -> Coin Source #
Minimum fee bound using txsizeBound
txsizeBound :: forall era. (ShelleyBased era, HasField "outputs" (TxBody era) (StrictSeq (TxOut era)), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era)))) => Tx era -> Integer Source #
Convenience Function to bound the txsize function. | It can be helpful for coin selection.
produced :: (ShelleyBased era, HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))), HasField "outputs" (TxBody era) (StrictSeq (TxOut era)), HasField "txfee" (TxBody era) Coin) => PParams era -> Map (KeyHash 'StakePool (Crypto era)) (PoolParams (Crypto era)) -> TxBody era -> Value era Source #
Compute the lovelace which are created by the transaction
consumed :: forall era. (ShelleyBased era, HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era))), HasField "wdrls" (TxBody era) (Wdrl (Crypto era))) => PParams era -> UTxO era -> TxBody era -> Value era Source #
Compute the lovelace which are destroyed by the transaction
verifiedWits :: (TxBodyConstraints era, AnnotatedData (Script era), ToCBOR (AuxiliaryData era), DSignable (Crypto era) (Hash (Crypto era) EraIndependentTxBody)) => Tx era -> Either [VKey 'Witness (Crypto era)] () Source #
Given a ledger state, determine if the UTxO witnesses in a given transaction are correct.
witsVKeyNeeded :: forall era. (ShelleyBased era, HasField "wdrls" (TxBody era) (Wdrl (Crypto era)), HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))), HasField "inputs" (TxBody era) (Set (TxIn (Crypto era))), HasField "update" (TxBody era) (StrictMaybe (Update era))) => UTxO era -> Tx era -> GenDelegs (Crypto era) -> WitHashes (Crypto era) Source #
Collect the set of hashes of keys that needs to sign a given transaction. This set consists of the txin owners, certificate authors, and withdrawal reward accounts.
witsFromWitnessSet :: (Era era, AnnotatedData (Script era)) => WitnessSet era -> WitHashes (Crypto era) Source #
Extract the witness hashes from the Witness set.
DelegationState
keyRefunds :: HasField "certs" (TxBody era) (StrictSeq (DCert (Crypto era))) => PParams era -> TxBody era -> Coin Source #
Compute the key deregistration refunds in a transaction
Epoch boundary
stakeDistr :: forall era. ShelleyBased era => UTxO era -> DState (Crypto era) -> PState (Crypto era) -> SnapShot (Crypto era) Source #
applyRUpd :: RewardUpdate (Crypto era) -> EpochState era -> EpochState era Source #
Apply a reward update
createRUpd :: EpochSize -> BlocksMade (Crypto era) -> EpochState era -> Coin -> ShelleyBase (RewardUpdate (Crypto era)) Source #
Create a reward update
data NewEpochState era Source #
New Epoch state and environment
Constructors
NewEpochState | |
Fields
|
Instances
updateNES :: NewEpochState era -> BlocksMade (Crypto era) -> LedgerState era -> NewEpochState era Source #
Update new epoch state
circulation :: EpochState era -> Coin -> Coin Source #
Calculate the current circulation
This is used in the rewards calculation, and for API endpoints for pool ranking.
Decay
decayFactor :: Float Source #
Remove Bootstrap Redeem Addresses
returnRedeemAddrsToReserves :: ShelleyBased era => EpochState era -> EpochState era Source #