{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Babbage.Rules.Ledgers (LEDGERS) where
import qualified Cardano.Ledger.Allegra.Rules as Allegra
import qualified Cardano.Ledger.Alonzo.Rules as Alonzo
import Cardano.Ledger.Babbage.Era (BabbageEra, LEDGER, LEDGERS)
import Cardano.Ledger.Babbage.Rules.Ledger ()
import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUtxoPredFailure)
import Cardano.Ledger.Babbage.Rules.Utxow (BabbageUtxowPredFailure)
import Cardano.Ledger.BaseTypes (ShelleyBase, epochInfo, systemStart)
import Cardano.Ledger.Core
import Cardano.Ledger.Shelley.API.Mempool (ApplyTx (..))
import Cardano.Ledger.Shelley.LedgerState (LedgerState (..))
import qualified Cardano.Ledger.Shelley.Rules as Shelley
import Cardano.Ledger.State
import Control.Monad (foldM)
import Control.Monad.Trans.Reader (asks)
import Control.State.Transition (
Embed (..),
STS (..),
TRC (..),
TransitionRule,
judgmentContext,
liftSTS,
trans,
)
import Data.Default (Default)
import Data.Foldable (toList)
import Data.Sequence (Seq)
import Lens.Micro ((^.))
type instance EraRuleFailure "LEDGERS" BabbageEra = Shelley.ShelleyLedgersPredFailure BabbageEra
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyLedgersPredFailure BabbageEra
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyLedgerPredFailure BabbageEra where
injectFailure :: ShelleyLedgerPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure
instance InjectRuleFailure "LEDGERS" BabbageUtxowPredFailure BabbageEra where
injectFailure :: BabbageUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Alonzo.AlonzoUtxowPredFailure BabbageEra where
injectFailure :: AlonzoUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (AlonzoUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> AlonzoUtxowPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
AlonzoUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyUtxowPredFailure BabbageEra where
injectFailure :: ShelleyUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (ShelleyUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> ShelleyUtxowPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
ShelleyUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" BabbageUtxoPredFailure BabbageEra where
injectFailure :: BabbageUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (BabbageUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> BabbageUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
BabbageUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Alonzo.AlonzoUtxoPredFailure BabbageEra where
injectFailure :: AlonzoUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (AlonzoUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> AlonzoUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
AlonzoUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Alonzo.AlonzoUtxosPredFailure BabbageEra where
injectFailure :: AlonzoUtxosPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (AlonzoUtxosPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> AlonzoUtxosPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxosPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
AlonzoUtxosPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyPpupPredFailure BabbageEra where
injectFailure :: ShelleyPpupPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (ShelleyPpupPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> ShelleyPpupPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPpupPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
ShelleyPpupPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyUtxoPredFailure BabbageEra where
injectFailure :: ShelleyUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (ShelleyUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> ShelleyUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
ShelleyUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Allegra.AllegraUtxoPredFailure BabbageEra where
injectFailure :: AllegraUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (AllegraUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> AllegraUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllegraUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
AllegraUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyDelegsPredFailure BabbageEra where
injectFailure :: ShelleyDelegsPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (ShelleyDelegsPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> ShelleyDelegsPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelegsPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
ShelleyDelegsPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyDelplPredFailure BabbageEra where
injectFailure :: ShelleyDelplPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (ShelleyDelplPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> ShelleyDelplPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelplPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
ShelleyDelplPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyPoolPredFailure BabbageEra where
injectFailure :: ShelleyPoolPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (ShelleyPoolPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> ShelleyPoolPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPoolPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
ShelleyPoolPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance InjectRuleFailure "LEDGERS" Shelley.ShelleyDelegPredFailure BabbageEra where
injectFailure :: ShelleyDelegPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure (ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra)
-> (ShelleyDelegPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra)
-> ShelleyDelegPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelegPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
ShelleyDelegPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
instance
( ApplyTx era
, EraGov era
, EraStake era
, Default (CertState era)
, Embed (EraRule "LEDGER" era) (LEDGERS era)
, Environment (EraRule "LEDGER" era) ~ Shelley.LedgerEnv era
, State (EraRule "LEDGER" era) ~ LedgerState era
, Signal (EraRule "LEDGER" era) ~ StAnnTx TopTx era
, Default (LedgerState era)
) =>
STS (LEDGERS era)
where
type State (LEDGERS era) = LedgerState era
type Signal (LEDGERS era) = Seq (Tx TopTx era)
type Environment (LEDGERS era) = Shelley.ShelleyLedgersEnv era
type BaseM (LEDGERS era) = ShelleyBase
type PredicateFailure (LEDGERS era) = Shelley.ShelleyLedgersPredFailure era
type Event (LEDGERS era) = Shelley.ShelleyLedgersEvent era
transitionRules :: [TransitionRule (LEDGERS era)]
transitionRules = [TransitionRule (LEDGERS era)
forall era.
(ApplyTx era, EraGov era, EraStake era, Default (CertState era),
Embed (EraRule "LEDGER" era) (LEDGERS era),
Environment (EraRule "LEDGER" era) ~ LedgerEnv era,
State (EraRule "LEDGER" era) ~ LedgerState era,
Signal (EraRule "LEDGER" era) ~ StAnnTx TopTx era) =>
TransitionRule (LEDGERS era)
ledgersTransition]
ledgersTransition ::
forall era.
( ApplyTx era
, EraGov era
, EraStake era
, Default (CertState era)
, Embed (EraRule "LEDGER" era) (LEDGERS era)
, Environment (EraRule "LEDGER" era) ~ Shelley.LedgerEnv era
, State (EraRule "LEDGER" era) ~ LedgerState era
, Signal (EraRule "LEDGER" era) ~ StAnnTx TopTx era
) =>
TransitionRule (LEDGERS era)
ledgersTransition :: forall era.
(ApplyTx era, EraGov era, EraStake era, Default (CertState era),
Embed (EraRule "LEDGER" era) (LEDGERS era),
Environment (EraRule "LEDGER" era) ~ LedgerEnv era,
State (EraRule "LEDGER" era) ~ LedgerState era,
Signal (EraRule "LEDGER" era) ~ StAnnTx TopTx era) =>
TransitionRule (LEDGERS era)
ledgersTransition = do
TRC (Shelley.LedgersEnv slot epochNo pp account, initLedgerState, txs) <- Rule
(LEDGERS era) 'Transition (RuleContext 'Transition (LEDGERS era))
F (Clause (LEDGERS era) 'Transition) (TRC (LEDGERS era))
forall sts (rtype :: RuleType).
Rule sts rtype (RuleContext rtype sts)
judgmentContext
ei <- liftSTS $ asks epochInfo
sysStart <- liftSTS $ asks systemStart
(finalLedgerState, _) <-
foldM
( \(!LedgerState era
curLedgerState, StAnnTxCache era
stAnnTxCache) (TxIx
ix, Tx TopTx era
tx) -> do
let
utxo :: UTxO era
utxo = LedgerState era
curLedgerState LedgerState era
-> Getting (UTxO era) (LedgerState era) (UTxO era) -> UTxO era
forall s a. s -> Getting a s a -> a
^. Getting (UTxO era) (LedgerState era) (UTxO era)
forall era. Lens' (LedgerState era) (UTxO era)
forall (t :: * -> *) era. CanSetUTxO t => Lens' (t era) (UTxO era)
utxoL
stAnnTx :: StAnnTx TopTx era
stAnnTx = EpochInfo (Either Text)
-> SystemStart
-> PParams era
-> UTxO era
-> StAnnTxCache era
-> Tx TopTx era
-> StAnnTx TopTx era
forall era.
ApplyTx era =>
EpochInfo (Either Text)
-> SystemStart
-> PParams era
-> UTxO era
-> StAnnTxCache era
-> Tx TopTx era
-> StAnnTx TopTx era
mkStAnnTx EpochInfo (Either Text)
ei SystemStart
sysStart PParams era
pp UTxO era
utxo StAnnTxCache era
stAnnTxCache Tx TopTx era
tx
newLedgerState <-
forall sub super (rtype :: RuleType).
Embed sub super =>
RuleContext rtype sub -> Rule super rtype (State sub)
trans @(EraRule "LEDGER" era) (RuleContext 'Transition (EraRule "LEDGER" era)
-> Rule (LEDGERS era) 'Transition (State (EraRule "LEDGER" era)))
-> RuleContext 'Transition (EraRule "LEDGER" era)
-> Rule (LEDGERS era) 'Transition (State (EraRule "LEDGER" era))
forall a b. (a -> b) -> a -> b
$
(Environment (EraRule "LEDGER" era), State (EraRule "LEDGER" era),
Signal (EraRule "LEDGER" era))
-> TRC (EraRule "LEDGER" era)
forall sts. (Environment sts, State sts, Signal sts) -> TRC sts
TRC (SlotNo
-> Maybe EpochNo
-> TxIx
-> PParams era
-> ChainAccountState
-> LedgerEnv era
forall era.
SlotNo
-> Maybe EpochNo
-> TxIx
-> PParams era
-> ChainAccountState
-> LedgerEnv era
Shelley.LedgerEnv SlotNo
slot (EpochNo -> Maybe EpochNo
forall a. a -> Maybe a
Just EpochNo
epochNo) TxIx
ix PParams era
pp ChainAccountState
account, State (EraRule "LEDGER" era)
LedgerState era
curLedgerState, StAnnTx TopTx era
Signal (EraRule "LEDGER" era)
stAnnTx)
pure (newLedgerState, stAnnTx ^. cacheStAnnTxG)
)
(initLedgerState, mempty)
$ zip [minBound ..]
$ toList txs
pure finalLedgerState
instance
( Era era
, STS (LEDGER era)
, PredicateFailure (EraRule "LEDGER" era) ~ Shelley.ShelleyLedgerPredFailure era
, Event (EraRule "LEDGER" era) ~ Shelley.ShelleyLedgerEvent era
) =>
Embed (LEDGER era) (LEDGERS era)
where
wrapFailed :: PredicateFailure (LEDGER era) -> PredicateFailure (LEDGERS era)
wrapFailed = PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
PredicateFailure (LEDGER era) -> PredicateFailure (LEDGERS era)
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure
wrapEvent :: Event (LEDGER era) -> Event (LEDGERS era)
wrapEvent = Event (EraRule "LEDGER" era) -> ShelleyLedgersEvent era
Event (LEDGER era) -> Event (LEDGERS era)
forall era. Event (EraRule "LEDGER" era) -> ShelleyLedgersEvent era
Shelley.LedgerEvent