{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE EmptyDataDeriving #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Dijkstra.Rules.Mempool (
DijkstraMEMPOOL,
DijkstraMempoolPredFailure (..),
DijkstraMempoolEvent (..),
) where
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext)
import Cardano.Ledger.BaseTypes (ShelleyBase)
import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..))
import Cardano.Ledger.Binary.Coders (
Decode (..),
Encode (..),
decode,
encode,
(!>),
(<!),
)
import Cardano.Ledger.Conway.Governance (
ConwayEraGov,
ConwayGovState,
Proposals,
)
import Cardano.Ledger.Conway.Rules (
CertsEnv,
ConwayDelegPredFailure,
ConwayGovCertPredFailure,
ConwayGovEvent,
ConwayGovPredFailure,
ConwayLedgerPredFailure (ConwayMempoolFailure),
GovEnv,
GovSignal,
)
import Cardano.Ledger.Dijkstra.Core
import Cardano.Ledger.Dijkstra.Era (
DijkstraEra,
DijkstraLEDGER,
DijkstraMEMPOOL,
DijkstraSUBCERT,
DijkstraSUBCERTS,
DijkstraSUBDELEG,
DijkstraSUBGOV,
DijkstraSUBGOVCERT,
DijkstraSUBLEDGER,
DijkstraSUBLEDGERS,
DijkstraSUBPOOL,
DijkstraSUBUTXO,
DijkstraSUBUTXOS,
DijkstraSUBUTXOW,
)
import Cardano.Ledger.Dijkstra.Rules.Ledger (
DijkstraLedgerPredFailure (..),
conwayToDijkstraLedgerPredFailure,
)
import Cardano.Ledger.Dijkstra.Rules.SubDeleg (DijkstraSubDelegPredFailure)
import Cardano.Ledger.Dijkstra.Rules.SubGov (DijkstraSubGovEvent, DijkstraSubGovPredFailure)
import Cardano.Ledger.Dijkstra.Rules.SubGovCert (DijkstraSubGovCertPredFailure)
import Cardano.Ledger.Dijkstra.Rules.SubLedgers (DijkstraSubLedgersPredFailure (..))
import Cardano.Ledger.Dijkstra.Rules.SubPool (DijkstraSubPoolEvent, DijkstraSubPoolPredFailure)
import Cardano.Ledger.Dijkstra.Rules.Utxo (DijkstraUtxoPredFailure)
import Cardano.Ledger.Dijkstra.State
import Cardano.Ledger.Dijkstra.TxBody (DijkstraEraTxBody)
import Cardano.Ledger.Dijkstra.TxCert
import Cardano.Ledger.Shelley.LedgerState
import Cardano.Ledger.Shelley.Rules (
LedgerEnv (..),
PoolEvent,
ShelleyLedgerPredFailure,
ShelleyPoolPredFailure,
UtxoEnv,
)
import Control.DeepSeq (NFData)
import Control.State.Transition (
BaseM,
Environment,
Event,
PredicateFailure,
STS (..),
Signal,
State,
TRC (TRC),
TransitionRule,
judgmentContext,
transitionRules,
whenFailureFreeDefault,
(?!),
)
import Control.State.Transition.Extended (Embed (..), trans)
import qualified Data.Map.Strict as Map
import Data.Sequence (Seq)
import Data.Text (Text)
import GHC.Generics (Generic (..))
import Lens.Micro ((^.))
data DijkstraMempoolPredFailure era
= LedgerFailure (PredicateFailure (EraRule "LEDGER" era))
| MempoolFailure Text
| AllInputsAreSpent
deriving ((forall x.
DijkstraMempoolPredFailure era
-> Rep (DijkstraMempoolPredFailure era) x)
-> (forall x.
Rep (DijkstraMempoolPredFailure era) x
-> DijkstraMempoolPredFailure era)
-> Generic (DijkstraMempoolPredFailure era)
forall x.
Rep (DijkstraMempoolPredFailure era) x
-> DijkstraMempoolPredFailure era
forall x.
DijkstraMempoolPredFailure era
-> Rep (DijkstraMempoolPredFailure era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraMempoolPredFailure era) x
-> DijkstraMempoolPredFailure era
forall era x.
DijkstraMempoolPredFailure era
-> Rep (DijkstraMempoolPredFailure era) x
$cfrom :: forall era x.
DijkstraMempoolPredFailure era
-> Rep (DijkstraMempoolPredFailure era) x
from :: forall x.
DijkstraMempoolPredFailure era
-> Rep (DijkstraMempoolPredFailure era) x
$cto :: forall era x.
Rep (DijkstraMempoolPredFailure era) x
-> DijkstraMempoolPredFailure era
to :: forall x.
Rep (DijkstraMempoolPredFailure era) x
-> DijkstraMempoolPredFailure era
Generic)
type instance EraRuleFailure "MEMPOOL" DijkstraEra = DijkstraMempoolPredFailure DijkstraEra
type instance EraRuleEvent "MEMPOOL" DijkstraEra = DijkstraMempoolEvent DijkstraEra
instance InjectRuleFailure "MEMPOOL" DijkstraMempoolPredFailure DijkstraEra
instance InjectRuleFailure "MEMPOOL" ConwayLedgerPredFailure DijkstraEra where
injectFailure :: ConwayLedgerPredFailure DijkstraEra
-> EraRuleFailure "MEMPOOL" DijkstraEra
injectFailure = \case
ConwayMempoolFailure Text
"All inputs are spent. Transaction has probably already been included" -> EraRuleFailure "MEMPOOL" DijkstraEra
DijkstraMempoolPredFailure DijkstraEra
forall era. DijkstraMempoolPredFailure era
AllInputsAreSpent
ConwayMempoolFailure Text
predFailureMessage -> Text -> DijkstraMempoolPredFailure DijkstraEra
forall era. Text -> DijkstraMempoolPredFailure era
MempoolFailure Text
predFailureMessage
ConwayLedgerPredFailure DijkstraEra
otherLedgerFailure -> PredicateFailure (EraRule "LEDGER" DijkstraEra)
-> DijkstraMempoolPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era
LedgerFailure (PredicateFailure (EraRule "LEDGER" DijkstraEra)
-> DijkstraMempoolPredFailure DijkstraEra)
-> PredicateFailure (EraRule "LEDGER" DijkstraEra)
-> DijkstraMempoolPredFailure DijkstraEra
forall a b. (a -> b) -> a -> b
$ ConwayLedgerPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
ConwayLedgerPredFailure era -> DijkstraLedgerPredFailure era
conwayToDijkstraLedgerPredFailure ConwayLedgerPredFailure DijkstraEra
otherLedgerFailure
instance InjectRuleFailure "MEMPOOL" DijkstraUtxoPredFailure DijkstraEra where
injectFailure :: DijkstraUtxoPredFailure DijkstraEra
-> EraRuleFailure "MEMPOOL" DijkstraEra
injectFailure = PredicateFailure (EraRule "LEDGER" DijkstraEra)
-> DijkstraMempoolPredFailure DijkstraEra
DijkstraLedgerPredFailure DijkstraEra
-> DijkstraMempoolPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era
LedgerFailure (DijkstraLedgerPredFailure DijkstraEra
-> DijkstraMempoolPredFailure DijkstraEra)
-> (DijkstraUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra)
-> DijkstraUtxoPredFailure DijkstraEra
-> DijkstraMempoolPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
DijkstraUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure
deriving instance
Eq (PredicateFailure (EraRule "LEDGER" era)) =>
Eq (DijkstraMempoolPredFailure era)
deriving instance
Show (PredicateFailure (EraRule "LEDGER" era)) =>
Show (DijkstraMempoolPredFailure era)
instance
( Era era
, EncCBOR (PredicateFailure (EraRule "LEDGER" era))
) =>
EncCBOR (DijkstraMempoolPredFailure era)
where
encCBOR :: DijkstraMempoolPredFailure era -> Encoding
encCBOR =
Encode Open (DijkstraMempoolPredFailure era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode Open (DijkstraMempoolPredFailure era) -> Encoding)
-> (DijkstraMempoolPredFailure era
-> Encode Open (DijkstraMempoolPredFailure era))
-> DijkstraMempoolPredFailure era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
LedgerFailure PredicateFailure (EraRule "LEDGER" era)
x -> (PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era)
-> Word
-> Encode
Open
(PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era
LedgerFailure @era) Word
1 Encode
Open
(PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "LEDGER" era))
-> Encode Open (DijkstraMempoolPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "LEDGER" era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "LEDGER" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "LEDGER" era)
x
MempoolFailure Text
t -> (Text -> DijkstraMempoolPredFailure era)
-> Word -> Encode Open (Text -> DijkstraMempoolPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Text -> DijkstraMempoolPredFailure era
forall era. Text -> DijkstraMempoolPredFailure era
MempoolFailure Word
2 Encode Open (Text -> DijkstraMempoolPredFailure era)
-> Encode (Closed Dense) Text
-> Encode Open (DijkstraMempoolPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Text -> Encode (Closed Dense) Text
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Text
t
DijkstraMempoolPredFailure era
AllInputsAreSpent -> DijkstraMempoolPredFailure era
-> Word -> Encode Open (DijkstraMempoolPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DijkstraMempoolPredFailure era
forall era. DijkstraMempoolPredFailure era
AllInputsAreSpent Word
3
instance
( Era era
, DecCBOR (PredicateFailure (EraRule "LEDGER" era))
) =>
DecCBOR (DijkstraMempoolPredFailure era)
where
decCBOR :: forall s. Decoder s (DijkstraMempoolPredFailure era)
decCBOR = Decode (Closed Dense) (DijkstraMempoolPredFailure era)
-> Decoder s (DijkstraMempoolPredFailure era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraMempoolPredFailure era)
-> Decoder s (DijkstraMempoolPredFailure era))
-> ((Word -> Decode Open (DijkstraMempoolPredFailure era))
-> Decode (Closed Dense) (DijkstraMempoolPredFailure era))
-> (Word -> Decode Open (DijkstraMempoolPredFailure era))
-> Decoder s (DijkstraMempoolPredFailure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> (Word -> Decode Open (DijkstraMempoolPredFailure era))
-> Decode (Closed Dense) (DijkstraMempoolPredFailure era)
forall t.
Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t
Summands Text
"DijkstraMempoolPredFailure" ((Word -> Decode Open (DijkstraMempoolPredFailure era))
-> Decoder s (DijkstraMempoolPredFailure era))
-> (Word -> Decode Open (DijkstraMempoolPredFailure era))
-> Decoder s (DijkstraMempoolPredFailure era)
forall a b. (a -> b) -> a -> b
$ \case
Word
1 -> (PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era)
-> Decode
Open
(PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era)
forall t. t -> Decode Open t
SumD (forall era.
PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era
LedgerFailure @era) Decode
Open
(PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era)
-> Decode
(Closed (ZonkAny 0)) (PredicateFailure (EraRule "LEDGER" era))
-> Decode Open (DijkstraMempoolPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
(Closed (ZonkAny 0)) (PredicateFailure (EraRule "LEDGER" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
2 -> (Text -> DijkstraMempoolPredFailure era)
-> Decode Open (Text -> DijkstraMempoolPredFailure era)
forall t. t -> Decode Open t
SumD Text -> DijkstraMempoolPredFailure era
forall era. Text -> DijkstraMempoolPredFailure era
MempoolFailure Decode Open (Text -> DijkstraMempoolPredFailure era)
-> Decode (Closed (ZonkAny 1)) Text
-> Decode Open (DijkstraMempoolPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 1)) Text
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
3 -> DijkstraMempoolPredFailure era
-> Decode Open (DijkstraMempoolPredFailure era)
forall t. t -> Decode Open t
SumD DijkstraMempoolPredFailure era
forall era. DijkstraMempoolPredFailure era
AllInputsAreSpent
Word
n -> Word -> Decode Open (DijkstraMempoolPredFailure era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n
newtype DijkstraMempoolEvent era
= LedgerEvent (Event (EraRule "LEDGER" era))
deriving ((forall x.
DijkstraMempoolEvent era -> Rep (DijkstraMempoolEvent era) x)
-> (forall x.
Rep (DijkstraMempoolEvent era) x -> DijkstraMempoolEvent era)
-> Generic (DijkstraMempoolEvent era)
forall x.
Rep (DijkstraMempoolEvent era) x -> DijkstraMempoolEvent era
forall x.
DijkstraMempoolEvent era -> Rep (DijkstraMempoolEvent era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraMempoolEvent era) x -> DijkstraMempoolEvent era
forall era x.
DijkstraMempoolEvent era -> Rep (DijkstraMempoolEvent era) x
$cfrom :: forall era x.
DijkstraMempoolEvent era -> Rep (DijkstraMempoolEvent era) x
from :: forall x.
DijkstraMempoolEvent era -> Rep (DijkstraMempoolEvent era) x
$cto :: forall era x.
Rep (DijkstraMempoolEvent era) x -> DijkstraMempoolEvent era
to :: forall x.
Rep (DijkstraMempoolEvent era) x -> DijkstraMempoolEvent era
Generic)
deriving instance
Eq (Event (EraRule "LEDGER" era)) =>
Eq (DijkstraMempoolEvent era)
instance
NFData (Event (EraRule "LEDGER" era)) =>
NFData (DijkstraMempoolEvent era)
instance
( EraTx era
, ConwayEraTxBody era
, ConwayEraGov era
, ConwayEraCertState era
, EraStake era
, EraCertState era
, Embed (EraRule "LEDGER" era) (DijkstraMEMPOOL era)
, State (EraRule "LEDGER" era) ~ LedgerState era
, Eq (PredicateFailure (EraRule "CERTS" era))
, Eq (PredicateFailure (EraRule "GOV" era))
, Eq (PredicateFailure (EraRule "UTXOW" era))
, Eq (PredicateFailure (EraRule "SUBLEDGERS" era))
, Show (PredicateFailure (EraRule "CERTS" era))
, Show (PredicateFailure (EraRule "GOV" era))
, Show (PredicateFailure (EraRule "UTXOW" era))
, Show (PredicateFailure (EraRule "SUBLEDGERS" era))
, Environment (EraRule "LEDGER" era) ~ LedgerEnv era
, Tx TopTx era ~ Signal (EraRule "LEDGER" era)
, EraRuleFailure "SUBLEDGERS" era ~ DijkstraSubLedgersPredFailure era
) =>
STS (DijkstraMEMPOOL era)
where
type State (DijkstraMEMPOOL era) = LedgerState era
type Signal (DijkstraMEMPOOL era) = Tx TopTx era
type Environment (DijkstraMEMPOOL era) = LedgerEnv era
type BaseM (DijkstraMEMPOOL era) = ShelleyBase
type PredicateFailure (DijkstraMEMPOOL era) = DijkstraMempoolPredFailure era
type Event (DijkstraMEMPOOL era) = DijkstraMempoolEvent era
transitionRules :: [TransitionRule (DijkstraMEMPOOL era)]
transitionRules = [forall era.
(EraTx era, Embed (EraRule "LEDGER" era) (DijkstraMEMPOOL era),
State (EraRule "LEDGER" era) ~ LedgerState era,
Environment (EraRule "LEDGER" era) ~ LedgerEnv era,
Tx TopTx era ~ Signal (EraRule "LEDGER" era)) =>
TransitionRule (DijkstraMEMPOOL era)
mempoolTransition @era]
mempoolTransition ::
forall era.
( EraTx era
, Embed (EraRule "LEDGER" era) (DijkstraMEMPOOL era)
, State (EraRule "LEDGER" era) ~ LedgerState era
, Environment (EraRule "LEDGER" era) ~ LedgerEnv era
, Tx TopTx era ~ Signal (EraRule "LEDGER" era)
) =>
TransitionRule (DijkstraMEMPOOL era)
mempoolTransition :: forall era.
(EraTx era, Embed (EraRule "LEDGER" era) (DijkstraMEMPOOL era),
State (EraRule "LEDGER" era) ~ LedgerState era,
Environment (EraRule "LEDGER" era) ~ LedgerEnv era,
Tx TopTx era ~ Signal (EraRule "LEDGER" era)) =>
TransitionRule (DijkstraMEMPOOL era)
mempoolTransition = do
TRC trc@(_ledgerEnv, ledgerState, tx) <-
Rule
(DijkstraMEMPOOL era)
'Transition
(RuleContext 'Transition (DijkstraMEMPOOL era))
F (Clause (DijkstraMEMPOOL era) 'Transition)
(TRC (DijkstraMEMPOOL era))
forall sts (rtype :: RuleType).
Rule sts rtype (RuleContext rtype sts)
judgmentContext
let
inputs = Tx TopTx era
Signal (DijkstraMEMPOOL era)
tx Tx TopTx era
-> Getting (Set TxIn) (Tx TopTx era) (Set TxIn) -> Set TxIn
forall s a. s -> Getting a s a -> a
^. (TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era))
-> Tx TopTx era -> Const (Set TxIn) (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era))
-> Tx TopTx era -> Const (Set TxIn) (Tx TopTx era))
-> ((Set TxIn -> Const (Set TxIn) (Set TxIn))
-> TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era))
-> Getting (Set TxIn) (Tx TopTx era) (Set TxIn)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> Const (Set TxIn) (Set TxIn))
-> TxBody TopTx era -> Const (Set TxIn) (TxBody TopTx era)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l era) (Set TxIn)
inputsTxBodyL
UTxO utxo = ledgerState ^. utxoG
notAllSpent = (TxIn -> Bool) -> Set TxIn -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (TxIn -> Map TxIn (TxOut era) -> Bool
forall k a. Ord k => k -> Map k a -> Bool
`Map.member` Map TxIn (TxOut era)
utxo) Set TxIn
inputs
notAllSpent
?! AllInputsAreSpent
whenFailureFreeDefault ledgerState $ do
trans @(EraRule "LEDGER" era) $ TRC trc
instance
( AlonzoEraTx era
, ConwayEraCertState era
, DijkstraEraTxBody era
, ConwayEraGov era
, EraPlutusContext era
, GovState era ~ ConwayGovState era
, Embed (EraRule "CERTS" era) (DijkstraLEDGER era)
, Embed (EraRule "GOV" era) (DijkstraLEDGER era)
, Embed (EraRule "UTXOW" era) (DijkstraLEDGER era)
, Environment (EraRule "CERTS" era) ~ CertsEnv era
, Environment (EraRule "GOV" era) ~ GovEnv era
, Environment (EraRule "UTXOW" era) ~ UtxoEnv era
, State (EraRule "CERTS" era) ~ CertState era
, State (EraRule "GOV" era) ~ Proposals era
, State (EraRule "UTXOW" era) ~ UTxOState era
, Signal (EraRule "CERTS" era) ~ Seq (TxCert era)
, Signal (EraRule "GOV" era) ~ GovSignal era
, Signal (EraRule "UTXOW" era) ~ Tx TopTx era
, EraRule "LEDGER" era ~ DijkstraLEDGER era
, EraRule "SUBLEDGERS" era ~ DijkstraSUBLEDGERS era
, EraRule "SUBLEDGER" era ~ DijkstraSUBLEDGER era
, EraRule "SUBGOV" era ~ DijkstraSUBGOV era
, EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era
, EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era
, EraRule "SUBUTXOW" era ~ DijkstraSUBUTXOW era
, EraRule "SUBCERTS" era ~ DijkstraSUBCERTS era
, EraRule "SUBCERT" era ~ DijkstraSUBCERT era
, EraRule "SUBDELEG" era ~ DijkstraSUBDELEG era
, EraRule "SUBPOOL" era ~ DijkstraSUBPOOL era
, EraRule "SUBGOVCERT" era ~ DijkstraSUBGOVCERT era
, InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure era
, InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era
, InjectRuleFailure "LEDGER" DijkstraLedgerPredFailure era
, InjectRuleEvent "SUBPOOL" DijkstraSubPoolEvent era
, InjectRuleEvent "SUBPOOL" PoolEvent era
, InjectRuleFailure "SUBPOOL" DijkstraSubPoolPredFailure era
, InjectRuleFailure "SUBPOOL" ShelleyPoolPredFailure era
, InjectRuleFailure "SUBGOVCERT" DijkstraSubGovCertPredFailure era
, InjectRuleFailure "SUBGOVCERT" ConwayGovCertPredFailure era
, InjectRuleFailure "DELEG" ConwayDelegPredFailure era
, InjectRuleFailure "SUBDELEG" ConwayDelegPredFailure era
, InjectRuleFailure "SUBDELEG" DijkstraSubDelegPredFailure era
, InjectRuleEvent "SUBGOV" DijkstraSubGovEvent era
, InjectRuleEvent "SUBGOV" ConwayGovEvent era
, InjectRuleFailure "SUBGOV" DijkstraSubGovPredFailure era
, InjectRuleFailure "SUBGOV" ConwayGovPredFailure era
, TxCert era ~ DijkstraTxCert era
) =>
Embed (DijkstraLEDGER era) (DijkstraMEMPOOL era)
where
wrapFailed :: PredicateFailure (DijkstraLEDGER era)
-> PredicateFailure (DijkstraMEMPOOL era)
wrapFailed = PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era
PredicateFailure (DijkstraLEDGER era)
-> PredicateFailure (DijkstraMEMPOOL era)
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> DijkstraMempoolPredFailure era
LedgerFailure
wrapEvent :: Event (DijkstraLEDGER era) -> Event (DijkstraMEMPOOL era)
wrapEvent = Event (EraRule "LEDGER" era) -> DijkstraMempoolEvent era
Event (DijkstraLEDGER era) -> Event (DijkstraMEMPOOL era)
forall era.
Event (EraRule "LEDGER" era) -> DijkstraMempoolEvent era
LedgerEvent