{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Allegra (
AllegraEra,
Tx (..),
ApplyTxError (..),
) where
import Cardano.Ledger.Allegra.BlockBody ()
import Cardano.Ledger.Allegra.Era (AllegraEra)
import Cardano.Ledger.Allegra.PParams ()
import Cardano.Ledger.Allegra.Rules ()
import Cardano.Ledger.Allegra.Scripts ()
import Cardano.Ledger.Allegra.State ()
import Cardano.Ledger.Allegra.Transition ()
import Cardano.Ledger.Allegra.Translation ()
import Cardano.Ledger.Allegra.Tx (Tx (..))
import Cardano.Ledger.Allegra.UTxO ()
import Cardano.Ledger.Binary (DecCBOR, EncCBOR)
import Cardano.Ledger.Shelley.API
import Cardano.Ledger.Shelley.Rules (ShelleyLedgerPredFailure)
import Data.Bifunctor (Bifunctor (first))
import Data.List.NonEmpty (NonEmpty)
instance ApplyTx AllegraEra where
newtype ApplyTxError AllegraEra = AllegraApplyTxError (NonEmpty (ShelleyLedgerPredFailure AllegraEra))
deriving (ApplyTxError AllegraEra -> ApplyTxError AllegraEra -> Bool
(ApplyTxError AllegraEra -> ApplyTxError AllegraEra -> Bool)
-> (ApplyTxError AllegraEra -> ApplyTxError AllegraEra -> Bool)
-> Eq (ApplyTxError AllegraEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ApplyTxError AllegraEra -> ApplyTxError AllegraEra -> Bool
== :: ApplyTxError AllegraEra -> ApplyTxError AllegraEra -> Bool
$c/= :: ApplyTxError AllegraEra -> ApplyTxError AllegraEra -> Bool
/= :: ApplyTxError AllegraEra -> ApplyTxError AllegraEra -> Bool
Eq, Int -> ApplyTxError AllegraEra -> ShowS
[ApplyTxError AllegraEra] -> ShowS
ApplyTxError AllegraEra -> String
(Int -> ApplyTxError AllegraEra -> ShowS)
-> (ApplyTxError AllegraEra -> String)
-> ([ApplyTxError AllegraEra] -> ShowS)
-> Show (ApplyTxError AllegraEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ApplyTxError AllegraEra -> ShowS
showsPrec :: Int -> ApplyTxError AllegraEra -> ShowS
$cshow :: ApplyTxError AllegraEra -> String
show :: ApplyTxError AllegraEra -> String
$cshowList :: [ApplyTxError AllegraEra] -> ShowS
showList :: [ApplyTxError AllegraEra] -> ShowS
Show)
deriving newtype (ApplyTxError AllegraEra -> Encoding
(ApplyTxError AllegraEra -> Encoding)
-> EncCBOR (ApplyTxError AllegraEra)
forall a. (a -> Encoding) -> EncCBOR a
$cencCBOR :: ApplyTxError AllegraEra -> Encoding
encCBOR :: ApplyTxError AllegraEra -> Encoding
EncCBOR, Typeable (ApplyTxError AllegraEra)
Typeable (ApplyTxError AllegraEra) =>
(forall s. Decoder s (ApplyTxError AllegraEra))
-> (forall s. Proxy (ApplyTxError AllegraEra) -> Decoder s ())
-> (Proxy (ApplyTxError AllegraEra) -> Text)
-> DecCBOR (ApplyTxError AllegraEra)
Proxy (ApplyTxError AllegraEra) -> Text
forall s. Decoder s (ApplyTxError AllegraEra)
forall a.
Typeable a =>
(forall s. Decoder s a)
-> (forall s. Proxy a -> Decoder s ())
-> (Proxy a -> Text)
-> DecCBOR a
forall s. Proxy (ApplyTxError AllegraEra) -> Decoder s ()
$cdecCBOR :: forall s. Decoder s (ApplyTxError AllegraEra)
decCBOR :: forall s. Decoder s (ApplyTxError AllegraEra)
$cdropCBOR :: forall s. Proxy (ApplyTxError AllegraEra) -> Decoder s ()
dropCBOR :: forall s. Proxy (ApplyTxError AllegraEra) -> Decoder s ()
$clabel :: Proxy (ApplyTxError AllegraEra) -> Text
label :: Proxy (ApplyTxError AllegraEra) -> Text
DecCBOR, NonEmpty (ApplyTxError AllegraEra) -> ApplyTxError AllegraEra
ApplyTxError AllegraEra
-> ApplyTxError AllegraEra -> ApplyTxError AllegraEra
(ApplyTxError AllegraEra
-> ApplyTxError AllegraEra -> ApplyTxError AllegraEra)
-> (NonEmpty (ApplyTxError AllegraEra) -> ApplyTxError AllegraEra)
-> (forall b.
Integral b =>
b -> ApplyTxError AllegraEra -> ApplyTxError AllegraEra)
-> Semigroup (ApplyTxError AllegraEra)
forall b.
Integral b =>
b -> ApplyTxError AllegraEra -> ApplyTxError AllegraEra
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
$c<> :: ApplyTxError AllegraEra
-> ApplyTxError AllegraEra -> ApplyTxError AllegraEra
<> :: ApplyTxError AllegraEra
-> ApplyTxError AllegraEra -> ApplyTxError AllegraEra
$csconcat :: NonEmpty (ApplyTxError AllegraEra) -> ApplyTxError AllegraEra
sconcat :: NonEmpty (ApplyTxError AllegraEra) -> ApplyTxError AllegraEra
$cstimes :: forall b.
Integral b =>
b -> ApplyTxError AllegraEra -> ApplyTxError AllegraEra
stimes :: forall b.
Integral b =>
b -> ApplyTxError AllegraEra -> ApplyTxError AllegraEra
Semigroup)
applyTxValidation :: ValidationPolicy
-> Globals
-> MempoolEnv AllegraEra
-> MempoolState AllegraEra
-> Tx TopTx AllegraEra
-> Either
(ApplyTxError AllegraEra)
(MempoolState AllegraEra, Validated (Tx TopTx AllegraEra))
applyTxValidation ValidationPolicy
validationPolicy Globals
globals MempoolEnv AllegraEra
env MempoolState AllegraEra
state Tx TopTx AllegraEra
tx =
(NonEmpty (ShelleyLedgerPredFailure AllegraEra)
-> ApplyTxError AllegraEra)
-> Either
(NonEmpty (ShelleyLedgerPredFailure AllegraEra))
(MempoolState AllegraEra, Validated (Tx TopTx AllegraEra))
-> Either
(ApplyTxError AllegraEra)
(MempoolState AllegraEra, Validated (Tx TopTx AllegraEra))
forall a b c. (a -> b) -> Either a c -> Either b c
forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first NonEmpty (ShelleyLedgerPredFailure AllegraEra)
-> ApplyTxError AllegraEra
AllegraApplyTxError (Either
(NonEmpty (ShelleyLedgerPredFailure AllegraEra))
(MempoolState AllegraEra, Validated (Tx TopTx AllegraEra))
-> Either
(ApplyTxError AllegraEra)
(MempoolState AllegraEra, Validated (Tx TopTx AllegraEra)))
-> Either
(NonEmpty (ShelleyLedgerPredFailure AllegraEra))
(MempoolState AllegraEra, Validated (Tx TopTx AllegraEra))
-> Either
(ApplyTxError AllegraEra)
(MempoolState AllegraEra, Validated (Tx TopTx AllegraEra))
forall a b. (a -> b) -> a -> b
$
forall (rule :: Symbol) era.
(STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase,
Environment (EraRule rule era) ~ LedgerEnv era,
State (EraRule rule era) ~ MempoolState era,
Signal (EraRule rule era) ~ Tx TopTx era) =>
ValidationPolicy
-> Globals
-> LedgerEnv era
-> MempoolState era
-> Tx TopTx era
-> Either
(NonEmpty (PredicateFailure (EraRule rule era)))
(MempoolState era, Validated (Tx TopTx era))
ruleApplyTxValidation @"LEDGER" ValidationPolicy
validationPolicy Globals
globals MempoolEnv AllegraEra
env MempoolState AllegraEra
state Tx TopTx AllegraEra
tx
instance ApplyBlock AllegraEra