{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Alonzo.Tx (
CostModel,
getLanguageView,
Data,
DataHash,
IsValid (..),
hashData,
nonNativeLanguages,
hashScriptIntegrity,
EraIndependentScriptIntegrity,
ScriptIntegrity (ScriptIntegrity),
ScriptIntegrityHash,
AlonzoTx (AlonzoTx, atBody, atWits, atIsValid, atAuxData),
Tx (..),
AlonzoEraTx (..),
mkBasicAlonzoTx,
bodyAlonzoTxL,
witsAlonzoTxL,
auxDataAlonzoTxL,
sizeAlonzoTxF,
isValidAlonzoTxL,
txrdmrs,
TxBody (AlonzoTxBody),
totExUnits,
alonzoMinFeeTx,
Shelley.txouts,
toCBORForSizeComputation,
toCBORForMempoolSubmission,
alonzoTxEqRaw,
mkScriptIntegrity,
) where
import Cardano.Ledger.Allegra.Tx (validateTimelock)
import Cardano.Ledger.Alonzo.Era (AlonzoEra)
import Cardano.Ledger.Alonzo.PParams (
AlonzoEraPParams,
LangDepView (..),
encodeLangViews,
getLanguageView,
ppPricesL,
)
import Cardano.Ledger.Alonzo.Scripts (
AlonzoEraScript (..),
CostModel,
ExUnits (..),
plutusScriptLanguage,
txscriptfee,
)
import Cardano.Ledger.Alonzo.TxBody (
AlonzoEraTxBody (..),
ScriptIntegrityHash,
TxBody (AlonzoTxBody),
)
import Cardano.Ledger.Alonzo.TxWits (
AlonzoEraTxWits (..),
AlonzoTxWits (..),
Redeemers (..),
TxDats (..),
txrdmrs,
unRedeemersL,
unTxDatsL,
)
import Cardano.Ledger.BaseTypes (integralToBounded)
import Cardano.Ledger.Binary (
Annotator,
DecCBOR (..),
EncCBOR (encCBOR),
Encoding,
ToCBOR (..),
decodeNullStrictMaybe,
encodeListLen,
encodeNullStrictMaybe,
serialize,
serialize',
)
import Cardano.Ledger.Binary.Coders
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Ledger.Core
import Cardano.Ledger.Mary (Tx (..))
import Cardano.Ledger.MemoBytes (EqRaw (..))
import Cardano.Ledger.Plutus.Data (Data, hashData)
import Cardano.Ledger.Plutus.Language (nonNativeLanguages)
import Cardano.Ledger.Shelley.Tx (shelleyTxEqRaw)
import Cardano.Ledger.State (EraUTxO, ScriptsProvided (..))
import qualified Cardano.Ledger.State as Shelley
import Cardano.Ledger.Val (Val ((<+>), (<×>)))
import Control.DeepSeq (NFData (..), deepseq)
import Control.Monad.Trans.Fail.String (errorFail)
import Data.Aeson (ToJSON (..))
import qualified Data.ByteString.Lazy as LBS
import Data.Int (Int64)
import qualified Data.Map.Strict as Map
import Data.Maybe (mapMaybe)
import Data.Maybe.Strict (StrictMaybe (..))
import Data.Set (Set)
import qualified Data.Set as Set
import Data.Typeable (Typeable)
import Data.Word (Word32)
import GHC.Generics (Generic)
import GHC.Stack (HasCallStack)
import Lens.Micro hiding (set)
import NoThunks.Class (InspectHeap (..), NoThunks)
newtype IsValid = IsValid Bool
deriving (IsValid -> IsValid -> Bool
(IsValid -> IsValid -> Bool)
-> (IsValid -> IsValid -> Bool) -> Eq IsValid
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IsValid -> IsValid -> Bool
== :: IsValid -> IsValid -> Bool
$c/= :: IsValid -> IsValid -> Bool
/= :: IsValid -> IsValid -> Bool
Eq, Int -> IsValid -> ShowS
[IsValid] -> ShowS
IsValid -> String
(Int -> IsValid -> ShowS)
-> (IsValid -> String) -> ([IsValid] -> ShowS) -> Show IsValid
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IsValid -> ShowS
showsPrec :: Int -> IsValid -> ShowS
$cshow :: IsValid -> String
show :: IsValid -> String
$cshowList :: [IsValid] -> ShowS
showList :: [IsValid] -> ShowS
Show, (forall x. IsValid -> Rep IsValid x)
-> (forall x. Rep IsValid x -> IsValid) -> Generic IsValid
forall x. Rep IsValid x -> IsValid
forall x. IsValid -> Rep IsValid x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. IsValid -> Rep IsValid x
from :: forall x. IsValid -> Rep IsValid x
$cto :: forall x. Rep IsValid x -> IsValid
to :: forall x. Rep IsValid x -> IsValid
Generic)
deriving newtype (Context -> IsValid -> IO (Maybe ThunkInfo)
Proxy IsValid -> String
(Context -> IsValid -> IO (Maybe ThunkInfo))
-> (Context -> IsValid -> IO (Maybe ThunkInfo))
-> (Proxy IsValid -> String)
-> NoThunks IsValid
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
$cnoThunks :: Context -> IsValid -> IO (Maybe ThunkInfo)
noThunks :: Context -> IsValid -> IO (Maybe ThunkInfo)
$cwNoThunks :: Context -> IsValid -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> IsValid -> IO (Maybe ThunkInfo)
$cshowTypeOf :: Proxy IsValid -> String
showTypeOf :: Proxy IsValid -> String
NoThunks, IsValid -> ()
(IsValid -> ()) -> NFData IsValid
forall a. (a -> ()) -> NFData a
$crnf :: IsValid -> ()
rnf :: IsValid -> ()
NFData, Typeable IsValid
Typeable IsValid =>
(IsValid -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy IsValid -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [IsValid] -> Size)
-> ToCBOR IsValid
IsValid -> Encoding
(forall t. ToCBOR t => Proxy t -> Size) -> Proxy [IsValid] -> Size
(forall t. ToCBOR t => Proxy t -> Size) -> Proxy IsValid -> Size
forall a.
Typeable a =>
(a -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy a -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy [a] -> Size)
-> ToCBOR a
$ctoCBOR :: IsValid -> Encoding
toCBOR :: IsValid -> Encoding
$cencodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy IsValid -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy IsValid -> Size
$cencodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [IsValid] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [IsValid] -> Size
ToCBOR, IsValid -> Encoding
(IsValid -> Encoding) -> EncCBOR IsValid
forall a. (a -> Encoding) -> EncCBOR a
$cencCBOR :: IsValid -> Encoding
encCBOR :: IsValid -> Encoding
EncCBOR, Typeable IsValid
Typeable IsValid =>
(forall s. Decoder s IsValid)
-> (forall s. Proxy IsValid -> Decoder s ())
-> (Proxy IsValid -> Text)
-> DecCBOR IsValid
Proxy IsValid -> Text
forall s. Decoder s IsValid
forall a.
Typeable a =>
(forall s. Decoder s a)
-> (forall s. Proxy a -> Decoder s ())
-> (Proxy a -> Text)
-> DecCBOR a
forall s. Proxy IsValid -> Decoder s ()
$cdecCBOR :: forall s. Decoder s IsValid
decCBOR :: forall s. Decoder s IsValid
$cdropCBOR :: forall s. Proxy IsValid -> Decoder s ()
dropCBOR :: forall s. Proxy IsValid -> Decoder s ()
$clabel :: Proxy IsValid -> Text
label :: Proxy IsValid -> Text
DecCBOR, [IsValid] -> Value
[IsValid] -> Encoding
IsValid -> Bool
IsValid -> Value
IsValid -> Encoding
(IsValid -> Value)
-> (IsValid -> Encoding)
-> ([IsValid] -> Value)
-> ([IsValid] -> Encoding)
-> (IsValid -> Bool)
-> ToJSON IsValid
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: IsValid -> Value
toJSON :: IsValid -> Value
$ctoEncoding :: IsValid -> Encoding
toEncoding :: IsValid -> Encoding
$ctoJSONList :: [IsValid] -> Value
toJSONList :: [IsValid] -> Value
$ctoEncodingList :: [IsValid] -> Encoding
toEncodingList :: [IsValid] -> Encoding
$comitField :: IsValid -> Bool
omitField :: IsValid -> Bool
ToJSON)
data AlonzoTx l era where
AlonzoTx ::
{ forall era. AlonzoTx TopTx era -> TxBody TopTx era
atBody :: !(TxBody TopTx era)
, forall era. AlonzoTx TopTx era -> TxWits era
atWits :: !(TxWits era)
, forall era. AlonzoTx TopTx era -> IsValid
atIsValid :: !IsValid
, forall era. AlonzoTx TopTx era -> StrictMaybe (TxAuxData era)
atAuxData :: !(StrictMaybe (TxAuxData era))
} ->
AlonzoTx TopTx era
instance HasEraTxLevel Tx AlonzoEra where
toSTxLevel :: forall (l :: TxLevel). Tx l AlonzoEra -> STxLevel l AlonzoEra
toSTxLevel (MkAlonzoTx AlonzoTx {}) = forall era. STxTopLevel TopTx era
STopTxOnly @AlonzoEra
instance EraTx AlonzoEra where
newtype Tx l AlonzoEra = MkAlonzoTx {forall (l :: TxLevel). Tx l AlonzoEra -> AlonzoTx l AlonzoEra
unAlonzoTx :: AlonzoTx l AlonzoEra}
deriving newtype (Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
(Tx l AlonzoEra -> Tx l AlonzoEra -> Bool)
-> (Tx l AlonzoEra -> Tx l AlonzoEra -> Bool)
-> Eq (Tx l AlonzoEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (l :: TxLevel). Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
$c== :: forall (l :: TxLevel). Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
== :: Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
$c/= :: forall (l :: TxLevel). Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
/= :: Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
Eq, Tx l AlonzoEra -> ()
(Tx l AlonzoEra -> ()) -> NFData (Tx l AlonzoEra)
forall a. (a -> ()) -> NFData a
forall (l :: TxLevel). Tx l AlonzoEra -> ()
$crnf :: forall (l :: TxLevel). Tx l AlonzoEra -> ()
rnf :: Tx l AlonzoEra -> ()
NFData, Tx l AlonzoEra -> Encoding
(Tx l AlonzoEra -> Encoding) -> EncCBOR (Tx l AlonzoEra)
forall a. (a -> Encoding) -> EncCBOR a
forall (l :: TxLevel). Tx l AlonzoEra -> Encoding
$cencCBOR :: forall (l :: TxLevel). Tx l AlonzoEra -> Encoding
encCBOR :: Tx l AlonzoEra -> Encoding
EncCBOR, Typeable (Tx l AlonzoEra)
Typeable (Tx l AlonzoEra) =>
(Tx l AlonzoEra -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l AlonzoEra) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l AlonzoEra] -> Size)
-> ToCBOR (Tx l AlonzoEra)
Tx l AlonzoEra -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l AlonzoEra] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l AlonzoEra) -> Size
forall a.
Typeable a =>
(a -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy a -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy [a] -> Size)
-> ToCBOR a
forall (l :: TxLevel). Typeable l => Typeable (Tx l AlonzoEra)
forall (l :: TxLevel). Typeable l => Tx l AlonzoEra -> Encoding
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l AlonzoEra] -> Size
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l AlonzoEra) -> Size
$ctoCBOR :: forall (l :: TxLevel). Typeable l => Tx l AlonzoEra -> Encoding
toCBOR :: Tx l AlonzoEra -> Encoding
$cencodedSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l AlonzoEra) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l AlonzoEra) -> Size
$cencodedListSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l AlonzoEra] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l AlonzoEra] -> Size
ToCBOR, Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo)
Proxy (Tx l AlonzoEra) -> String
(Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo))
-> (Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo))
-> (Proxy (Tx l AlonzoEra) -> String)
-> NoThunks (Tx l AlonzoEra)
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
forall (l :: TxLevel).
Typeable l =>
Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo)
forall (l :: TxLevel).
Typeable l =>
Proxy (Tx l AlonzoEra) -> String
$cnoThunks :: forall (l :: TxLevel).
Typeable l =>
Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo)
noThunks :: Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo)
$cwNoThunks :: forall (l :: TxLevel).
Typeable l =>
Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> Tx l AlonzoEra -> IO (Maybe ThunkInfo)
$cshowTypeOf :: forall (l :: TxLevel).
Typeable l =>
Proxy (Tx l AlonzoEra) -> String
showTypeOf :: Proxy (Tx l AlonzoEra) -> String
NoThunks, Int -> Tx l AlonzoEra -> ShowS
[Tx l AlonzoEra] -> ShowS
Tx l AlonzoEra -> String
(Int -> Tx l AlonzoEra -> ShowS)
-> (Tx l AlonzoEra -> String)
-> ([Tx l AlonzoEra] -> ShowS)
-> Show (Tx l AlonzoEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (l :: TxLevel). Int -> Tx l AlonzoEra -> ShowS
forall (l :: TxLevel). [Tx l AlonzoEra] -> ShowS
forall (l :: TxLevel). Tx l AlonzoEra -> String
$cshowsPrec :: forall (l :: TxLevel). Int -> Tx l AlonzoEra -> ShowS
showsPrec :: Int -> Tx l AlonzoEra -> ShowS
$cshow :: forall (l :: TxLevel). Tx l AlonzoEra -> String
show :: Tx l AlonzoEra -> String
$cshowList :: forall (l :: TxLevel). [Tx l AlonzoEra] -> ShowS
showList :: [Tx l AlonzoEra] -> ShowS
Show)
deriving ((forall x. Tx l AlonzoEra -> Rep (Tx l AlonzoEra) x)
-> (forall x. Rep (Tx l AlonzoEra) x -> Tx l AlonzoEra)
-> Generic (Tx l AlonzoEra)
forall x. Rep (Tx l AlonzoEra) x -> Tx l AlonzoEra
forall x. Tx l AlonzoEra -> Rep (Tx l AlonzoEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (l :: TxLevel) x. Rep (Tx l AlonzoEra) x -> Tx l AlonzoEra
forall (l :: TxLevel) x. Tx l AlonzoEra -> Rep (Tx l AlonzoEra) x
$cfrom :: forall (l :: TxLevel) x. Tx l AlonzoEra -> Rep (Tx l AlonzoEra) x
from :: forall x. Tx l AlonzoEra -> Rep (Tx l AlonzoEra) x
$cto :: forall (l :: TxLevel) x. Rep (Tx l AlonzoEra) x -> Tx l AlonzoEra
to :: forall x. Rep (Tx l AlonzoEra) x -> Tx l AlonzoEra
Generic)
mkBasicTx :: forall (l :: TxLevel). TxBody l AlonzoEra -> Tx l AlonzoEra
mkBasicTx = AlonzoTx l AlonzoEra -> Tx l AlonzoEra
forall (l :: TxLevel). AlonzoTx l AlonzoEra -> Tx l AlonzoEra
MkAlonzoTx (AlonzoTx l AlonzoEra -> Tx l AlonzoEra)
-> (TxBody l AlonzoEra -> AlonzoTx l AlonzoEra)
-> TxBody l AlonzoEra
-> Tx l AlonzoEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody l AlonzoEra -> AlonzoTx l AlonzoEra
forall era (l :: TxLevel).
(EraTx era, STxLevel l era ~ STxTopLevel l era) =>
TxBody l era -> AlonzoTx l era
mkBasicAlonzoTx
bodyTxL :: forall (l :: TxLevel). Lens' (Tx l AlonzoEra) (TxBody l AlonzoEra)
bodyTxL = (AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
alonzoTxL ((AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra))
-> ((TxBody l AlonzoEra -> f (TxBody l AlonzoEra))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> (TxBody l AlonzoEra -> f (TxBody l AlonzoEra))
-> Tx l AlonzoEra
-> f (Tx l AlonzoEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxBody l AlonzoEra -> f (TxBody l AlonzoEra))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxBody l era -> f (TxBody l era))
-> AlonzoTx l era -> f (AlonzoTx l era)
bodyAlonzoTxL
{-# INLINE bodyTxL #-}
witsTxL :: forall (l :: TxLevel). Lens' (Tx l AlonzoEra) (TxWits AlonzoEra)
witsTxL = (AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
alonzoTxL ((AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra))
-> ((AlonzoTxWits AlonzoEra -> f (AlonzoTxWits AlonzoEra))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> (AlonzoTxWits AlonzoEra -> f (AlonzoTxWits AlonzoEra))
-> Tx l AlonzoEra
-> f (Tx l AlonzoEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxWits AlonzoEra -> f (TxWits AlonzoEra))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra)
(AlonzoTxWits AlonzoEra -> f (AlonzoTxWits AlonzoEra))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> AlonzoTx l era -> f (AlonzoTx l era)
witsAlonzoTxL
{-# INLINE witsTxL #-}
auxDataTxL :: forall (l :: TxLevel).
Lens' (Tx l AlonzoEra) (StrictMaybe (TxAuxData AlonzoEra))
auxDataTxL = (AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
alonzoTxL ((AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra))
-> ((StrictMaybe (AlonzoTxAuxData AlonzoEra)
-> f (StrictMaybe (AlonzoTxAuxData AlonzoEra)))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> (StrictMaybe (AlonzoTxAuxData AlonzoEra)
-> f (StrictMaybe (AlonzoTxAuxData AlonzoEra)))
-> Tx l AlonzoEra
-> f (Tx l AlonzoEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (TxAuxData AlonzoEra)
-> f (StrictMaybe (TxAuxData AlonzoEra)))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra)
(StrictMaybe (AlonzoTxAuxData AlonzoEra)
-> f (StrictMaybe (AlonzoTxAuxData AlonzoEra)))
-> AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> AlonzoTx l era -> f (AlonzoTx l era)
auxDataAlonzoTxL
{-# INLINE auxDataTxL #-}
sizeTxF :: forall (l :: TxLevel).
HasCallStack =>
SimpleGetter (Tx l AlonzoEra) Word32
sizeTxF = (AlonzoTx l AlonzoEra -> Const r (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> Const r (Tx l AlonzoEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
alonzoTxL ((AlonzoTx l AlonzoEra -> Const r (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> Const r (Tx l AlonzoEra))
-> ((Word32 -> Const r Word32)
-> AlonzoTx l AlonzoEra -> Const r (AlonzoTx l AlonzoEra))
-> (Word32 -> Const r Word32)
-> Tx l AlonzoEra
-> Const r (Tx l AlonzoEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Word32 -> Const r Word32)
-> AlonzoTx l AlonzoEra -> Const r (AlonzoTx l AlonzoEra)
SimpleGetter (AlonzoTx l AlonzoEra) Word32
forall era (l :: TxLevel).
(HasCallStack, EraTx era) =>
SimpleGetter (AlonzoTx l era) Word32
sizeAlonzoTxF
{-# INLINE sizeTxF #-}
validateNativeScript :: forall (l :: TxLevel).
Tx l AlonzoEra -> NativeScript AlonzoEra -> Bool
validateNativeScript = Tx l AlonzoEra -> NativeScript AlonzoEra -> Bool
forall era (t :: TxLevel).
(EraTx era, AllegraEraTxBody era, AllegraEraScript era,
NativeScript era ~ Timelock era) =>
Tx t era -> NativeScript era -> Bool
validateTimelock
{-# INLINE validateNativeScript #-}
getMinFeeTx :: forall (l :: TxLevel).
PParams AlonzoEra -> Tx l AlonzoEra -> Int -> Coin
getMinFeeTx PParams AlonzoEra
pp Tx l AlonzoEra
tx Int
_ = PParams AlonzoEra -> Tx l AlonzoEra -> Coin
forall era (l :: TxLevel).
(EraTx era, AlonzoEraTxWits era, AlonzoEraPParams era) =>
PParams era -> Tx l era -> Coin
alonzoMinFeeTx PParams AlonzoEra
pp Tx l AlonzoEra
tx
{-# INLINE getMinFeeTx #-}
alonzoTxEqRaw ::
( AlonzoEraTx era
, STxLevel l era ~ STxTopLevel l era
) =>
Tx l era -> Tx l era -> Bool
alonzoTxEqRaw :: forall era (l :: TxLevel).
(AlonzoEraTx era, STxLevel l era ~ STxTopLevel l era) =>
Tx l era -> Tx l era -> Bool
alonzoTxEqRaw Tx l era
tx1 Tx l era
tx2 =
Tx l era -> (Tx TopTx era -> Bool) -> Bool
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxTopLevel l era) =>
t l era -> (t TopTx era -> a) -> a
withTopTxLevelOnly Tx l era
tx1 ((Tx TopTx era -> Bool) -> Bool) -> (Tx TopTx era -> Bool) -> Bool
forall a b. (a -> b) -> a -> b
$ \Tx TopTx era
tx1' ->
Tx l era -> (Tx TopTx era -> Bool) -> Bool
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxTopLevel l era) =>
t l era -> (t TopTx era -> a) -> a
withTopTxLevelOnly Tx l era
tx2 ((Tx TopTx era -> Bool) -> Bool) -> (Tx TopTx era -> Bool) -> Bool
forall a b. (a -> b) -> a -> b
$ \Tx TopTx era
tx2' ->
Tx l era -> Tx l era -> Bool
forall era (l :: TxLevel).
EraTx era =>
Tx l era -> Tx l era -> Bool
shelleyTxEqRaw Tx l era
tx1 Tx l era
tx2 Bool -> Bool -> Bool
&& (Tx TopTx era
tx1' Tx TopTx era -> Getting IsValid (Tx TopTx era) IsValid -> IsValid
forall s a. s -> Getting a s a -> a
^. Getting IsValid (Tx TopTx era) IsValid
forall era. AlonzoEraTx era => Lens' (Tx TopTx era) IsValid
Lens' (Tx TopTx era) IsValid
isValidTxL IsValid -> IsValid -> Bool
forall a. Eq a => a -> a -> Bool
== Tx TopTx era
tx2' Tx TopTx era -> Getting IsValid (Tx TopTx era) IsValid -> IsValid
forall s a. s -> Getting a s a -> a
^. Getting IsValid (Tx TopTx era) IsValid
forall era. AlonzoEraTx era => Lens' (Tx TopTx era) IsValid
Lens' (Tx TopTx era) IsValid
isValidTxL)
instance EqRaw (Tx l AlonzoEra) where
eqRaw :: Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
eqRaw = Tx l AlonzoEra -> Tx l AlonzoEra -> Bool
forall era (l :: TxLevel).
(AlonzoEraTx era, STxLevel l era ~ STxTopLevel l era) =>
Tx l era -> Tx l era -> Bool
alonzoTxEqRaw
alonzoTxL :: Lens' (Tx l AlonzoEra) (AlonzoTx l AlonzoEra)
alonzoTxL :: forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
alonzoTxL = (Tx l AlonzoEra -> AlonzoTx l AlonzoEra)
-> (Tx l AlonzoEra -> AlonzoTx l AlonzoEra -> Tx l AlonzoEra)
-> Lens
(Tx l AlonzoEra)
(Tx l AlonzoEra)
(AlonzoTx l AlonzoEra)
(AlonzoTx l AlonzoEra)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Tx l AlonzoEra -> AlonzoTx l AlonzoEra
forall (l :: TxLevel). Tx l AlonzoEra -> AlonzoTx l AlonzoEra
unAlonzoTx ((Tx l AlonzoEra -> AlonzoTx l AlonzoEra -> Tx l AlonzoEra)
-> Lens
(Tx l AlonzoEra)
(Tx l AlonzoEra)
(AlonzoTx l AlonzoEra)
(AlonzoTx l AlonzoEra))
-> (Tx l AlonzoEra -> AlonzoTx l AlonzoEra -> Tx l AlonzoEra)
-> Lens
(Tx l AlonzoEra)
(Tx l AlonzoEra)
(AlonzoTx l AlonzoEra)
(AlonzoTx l AlonzoEra)
forall a b. (a -> b) -> a -> b
$ (AlonzoTx l AlonzoEra -> Tx l AlonzoEra)
-> Tx l AlonzoEra -> AlonzoTx l AlonzoEra -> Tx l AlonzoEra
forall a b. a -> b -> a
const AlonzoTx l AlonzoEra -> Tx l AlonzoEra
forall (l :: TxLevel). AlonzoTx l AlonzoEra -> Tx l AlonzoEra
MkAlonzoTx
class
(EraTx era, AlonzoEraTxBody era, AlonzoEraTxWits era, AlonzoEraScript era) =>
AlonzoEraTx era
where
isValidTxL :: Lens' (Tx TopTx era) IsValid
instance Typeable l => DecCBOR (Annotator (Tx l AlonzoEra)) where
decCBOR :: forall s. Decoder s (Annotator (Tx l AlonzoEra))
decCBOR = (AlonzoTx l AlonzoEra -> Tx l AlonzoEra)
-> Annotator (AlonzoTx l AlonzoEra) -> Annotator (Tx l AlonzoEra)
forall a b. (a -> b) -> Annotator a -> Annotator b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap AlonzoTx l AlonzoEra -> Tx l AlonzoEra
forall (l :: TxLevel). AlonzoTx l AlonzoEra -> Tx l AlonzoEra
MkAlonzoTx (Annotator (AlonzoTx l AlonzoEra) -> Annotator (Tx l AlonzoEra))
-> Decoder s (Annotator (AlonzoTx l AlonzoEra))
-> Decoder s (Annotator (Tx l AlonzoEra))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (AlonzoTx l AlonzoEra))
forall s. Decoder s (Annotator (AlonzoTx l AlonzoEra))
forall a s. DecCBOR a => Decoder s a
decCBOR
instance AlonzoEraTx AlonzoEra where
isValidTxL :: Lens' (Tx TopTx AlonzoEra) IsValid
isValidTxL = (AlonzoTx TopTx AlonzoEra -> f (AlonzoTx TopTx AlonzoEra))
-> Tx TopTx AlonzoEra -> f (Tx TopTx AlonzoEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(AlonzoTx l AlonzoEra -> f (AlonzoTx l AlonzoEra))
-> Tx l AlonzoEra -> f (Tx l AlonzoEra)
alonzoTxL ((AlonzoTx TopTx AlonzoEra -> f (AlonzoTx TopTx AlonzoEra))
-> Tx TopTx AlonzoEra -> f (Tx TopTx AlonzoEra))
-> ((IsValid -> f IsValid)
-> AlonzoTx TopTx AlonzoEra -> f (AlonzoTx TopTx AlonzoEra))
-> (IsValid -> f IsValid)
-> Tx TopTx AlonzoEra
-> f (Tx TopTx AlonzoEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (IsValid -> f IsValid)
-> AlonzoTx TopTx AlonzoEra -> f (AlonzoTx TopTx AlonzoEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(IsValid -> f IsValid) -> AlonzoTx l era -> f (AlonzoTx l era)
isValidAlonzoTxL
{-# INLINE isValidTxL #-}
mkBasicAlonzoTx ::
( EraTx era
, STxLevel l era ~ STxTopLevel l era
) =>
TxBody l era -> AlonzoTx l era
mkBasicAlonzoTx :: forall era (l :: TxLevel).
(EraTx era, STxLevel l era ~ STxTopLevel l era) =>
TxBody l era -> AlonzoTx l era
mkBasicAlonzoTx TxBody l era
txBody =
case TxBody l era -> STxLevel l era
forall (l :: TxLevel). TxBody l era -> STxLevel l era
forall (t :: TxLevel -> * -> *) era (l :: TxLevel).
HasEraTxLevel t era =>
t l era -> STxLevel l era
toSTxLevel TxBody l era
txBody of
STxLevel l era
STxTopLevel l era
STopTxOnly ->
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era
forall era.
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era
AlonzoTx TxBody l era
TxBody TopTx era
txBody TxWits era
forall a. Monoid a => a
mempty (Bool -> IsValid
IsValid Bool
True) StrictMaybe (TxAuxData era)
forall a. StrictMaybe a
SNothing
bodyAlonzoTxL :: Lens' (AlonzoTx l era) (TxBody l era)
bodyAlonzoTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxBody l era -> f (TxBody l era))
-> AlonzoTx l era -> f (AlonzoTx l era)
bodyAlonzoTxL =
(AlonzoTx l era -> TxBody l era)
-> (AlonzoTx l era -> TxBody l era -> AlonzoTx l era)
-> Lens
(AlonzoTx l era) (AlonzoTx l era) (TxBody l era) (TxBody l era)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\AlonzoTx {TxBody TopTx era
atBody :: forall era. AlonzoTx TopTx era -> TxBody TopTx era
atBody :: TxBody TopTx era
atBody} -> TxBody l era
TxBody TopTx era
atBody) ((AlonzoTx l era -> TxBody l era -> AlonzoTx l era)
-> Lens
(AlonzoTx l era) (AlonzoTx l era) (TxBody l era) (TxBody l era))
-> (AlonzoTx l era -> TxBody l era -> AlonzoTx l era)
-> Lens
(AlonzoTx l era) (AlonzoTx l era) (TxBody l era) (TxBody l era)
forall a b. (a -> b) -> a -> b
$ \AlonzoTx l era
tx TxBody l era
txBody ->
case AlonzoTx l era
tx of
AlonzoTx {} -> AlonzoTx l era
tx {atBody = txBody}
{-# INLINEABLE bodyAlonzoTxL #-}
witsAlonzoTxL :: Lens' (AlonzoTx l era) (TxWits era)
witsAlonzoTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> AlonzoTx l era -> f (AlonzoTx l era)
witsAlonzoTxL =
(AlonzoTx l era -> TxWits era)
-> (AlonzoTx l era -> TxWits era -> AlonzoTx l era)
-> Lens (AlonzoTx l era) (AlonzoTx l era) (TxWits era) (TxWits era)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\AlonzoTx {TxWits era
atWits :: forall era. AlonzoTx TopTx era -> TxWits era
atWits :: TxWits era
atWits} -> TxWits era
atWits) ((AlonzoTx l era -> TxWits era -> AlonzoTx l era)
-> Lens
(AlonzoTx l era) (AlonzoTx l era) (TxWits era) (TxWits era))
-> (AlonzoTx l era -> TxWits era -> AlonzoTx l era)
-> Lens (AlonzoTx l era) (AlonzoTx l era) (TxWits era) (TxWits era)
forall a b. (a -> b) -> a -> b
$ \AlonzoTx l era
tx TxWits era
txWits ->
case AlonzoTx l era
tx of
AlonzoTx {} -> AlonzoTx l era
tx {atWits = txWits}
{-# INLINEABLE witsAlonzoTxL #-}
auxDataAlonzoTxL :: Lens' (AlonzoTx l era) (StrictMaybe (TxAuxData era))
auxDataAlonzoTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> AlonzoTx l era -> f (AlonzoTx l era)
auxDataAlonzoTxL =
(AlonzoTx l era -> StrictMaybe (TxAuxData era))
-> (AlonzoTx l era
-> StrictMaybe (TxAuxData era) -> AlonzoTx l era)
-> Lens
(AlonzoTx l era)
(AlonzoTx l era)
(StrictMaybe (TxAuxData era))
(StrictMaybe (TxAuxData era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\AlonzoTx {StrictMaybe (TxAuxData era)
atAuxData :: forall era. AlonzoTx TopTx era -> StrictMaybe (TxAuxData era)
atAuxData :: StrictMaybe (TxAuxData era)
atAuxData} -> StrictMaybe (TxAuxData era)
atAuxData) ((AlonzoTx l era -> StrictMaybe (TxAuxData era) -> AlonzoTx l era)
-> Lens
(AlonzoTx l era)
(AlonzoTx l era)
(StrictMaybe (TxAuxData era))
(StrictMaybe (TxAuxData era)))
-> (AlonzoTx l era
-> StrictMaybe (TxAuxData era) -> AlonzoTx l era)
-> Lens
(AlonzoTx l era)
(AlonzoTx l era)
(StrictMaybe (TxAuxData era))
(StrictMaybe (TxAuxData era))
forall a b. (a -> b) -> a -> b
$ \AlonzoTx l era
tx StrictMaybe (TxAuxData era)
txAuxData ->
case AlonzoTx l era
tx of
AlonzoTx {} -> AlonzoTx l era
tx {atAuxData = txAuxData}
{-# INLINEABLE auxDataAlonzoTxL #-}
sizeAlonzoTxF :: forall era l. (HasCallStack, EraTx era) => SimpleGetter (AlonzoTx l era) Word32
sizeAlonzoTxF :: forall era (l :: TxLevel).
(HasCallStack, EraTx era) =>
SimpleGetter (AlonzoTx l era) Word32
sizeAlonzoTxF =
(AlonzoTx l era -> Word32) -> SimpleGetter (AlonzoTx l era) Word32
forall s a. (s -> a) -> SimpleGetter s a
to ((AlonzoTx l era -> Word32)
-> SimpleGetter (AlonzoTx l era) Word32)
-> (AlonzoTx l era -> Word32)
-> SimpleGetter (AlonzoTx l era) Word32
forall a b. (a -> b) -> a -> b
$
Fail Word32 -> Word32
forall a. HasCallStack => Fail a -> a
errorFail
(Fail Word32 -> Word32)
-> (AlonzoTx l era -> Fail Word32) -> AlonzoTx l era -> Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall i b (m :: * -> *).
(Integral i, Integral b, Bounded b, MonadFail m) =>
i -> m b
integralToBounded @Int64 @Word32
(Int64 -> Fail Word32)
-> (AlonzoTx l era -> Int64) -> AlonzoTx l era -> Fail Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int64
LBS.length
(ByteString -> Int64)
-> (AlonzoTx l era -> ByteString) -> AlonzoTx l era -> Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Version -> Encoding -> ByteString
forall a. EncCBOR a => Version -> a -> ByteString
serialize (forall era. Era era => Version
eraProtVerLow @era)
(Encoding -> ByteString)
-> (AlonzoTx l era -> Encoding) -> AlonzoTx l era -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoTx l era -> Encoding
forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
AlonzoTx l era -> Encoding
toCBORForSizeComputation
{-# INLINEABLE sizeAlonzoTxF #-}
isValidAlonzoTxL :: Lens' (AlonzoTx l era) IsValid
isValidAlonzoTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(IsValid -> f IsValid) -> AlonzoTx l era -> f (AlonzoTx l era)
isValidAlonzoTxL =
(AlonzoTx l era -> IsValid)
-> (AlonzoTx l era -> IsValid -> AlonzoTx l era)
-> Lens (AlonzoTx l era) (AlonzoTx l era) IsValid IsValid
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\AlonzoTx {IsValid
atIsValid :: forall era. AlonzoTx TopTx era -> IsValid
atIsValid :: IsValid
atIsValid} -> IsValid
atIsValid) ((AlonzoTx l era -> IsValid -> AlonzoTx l era)
-> Lens (AlonzoTx l era) (AlonzoTx l era) IsValid IsValid)
-> (AlonzoTx l era -> IsValid -> AlonzoTx l era)
-> Lens (AlonzoTx l era) (AlonzoTx l era) IsValid IsValid
forall a b. (a -> b) -> a -> b
$ \AlonzoTx l era
tx IsValid
txIsValid ->
case AlonzoTx l era
tx of
AlonzoTx {} -> AlonzoTx l era
tx {atIsValid = txIsValid}
{-# INLINEABLE isValidAlonzoTxL #-}
deriving instance
(Era era, Eq (TxBody l era), Eq (TxWits era), Eq (TxAuxData era)) => Eq (AlonzoTx l era)
deriving instance
(Era era, Show (TxBody l era), Show (TxAuxData era), Show (Script era), Show (TxWits era)) =>
Show (AlonzoTx l era)
deriving via
InspectHeap (AlonzoTx l era)
instance
(Typeable era, Typeable l) => NoThunks (AlonzoTx l era)
instance
( Era era
, NFData (TxWits era)
, NFData (TxAuxData era)
, NFData (TxBody l era)
) =>
NFData (AlonzoTx l era)
where
rnf :: AlonzoTx l era -> ()
rnf AlonzoTx {StrictMaybe (TxAuxData era)
TxBody TopTx era
TxWits era
IsValid
atBody :: forall era. AlonzoTx TopTx era -> TxBody TopTx era
atWits :: forall era. AlonzoTx TopTx era -> TxWits era
atIsValid :: forall era. AlonzoTx TopTx era -> IsValid
atAuxData :: forall era. AlonzoTx TopTx era -> StrictMaybe (TxAuxData era)
atBody :: TxBody TopTx era
atWits :: TxWits era
atIsValid :: IsValid
atAuxData :: StrictMaybe (TxAuxData era)
..} =
TxBody TopTx era
atBody TxBody TopTx era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
TxWits era
atWits TxWits era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
StrictMaybe (TxAuxData era)
atAuxData StrictMaybe (TxAuxData era) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
IsValid -> ()
forall a. NFData a => a -> ()
rnf IsValid
atIsValid
data ScriptIntegrity era
= ScriptIntegrity
!(Redeemers era)
!(TxDats era)
!(Set LangDepView)
deriving (ScriptIntegrity era -> ScriptIntegrity era -> Bool
(ScriptIntegrity era -> ScriptIntegrity era -> Bool)
-> (ScriptIntegrity era -> ScriptIntegrity era -> Bool)
-> Eq (ScriptIntegrity era)
forall era.
AlonzoEraScript era =>
ScriptIntegrity era -> ScriptIntegrity era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
AlonzoEraScript era =>
ScriptIntegrity era -> ScriptIntegrity era -> Bool
== :: ScriptIntegrity era -> ScriptIntegrity era -> Bool
$c/= :: forall era.
AlonzoEraScript era =>
ScriptIntegrity era -> ScriptIntegrity era -> Bool
/= :: ScriptIntegrity era -> ScriptIntegrity era -> Bool
Eq, (forall x. ScriptIntegrity era -> Rep (ScriptIntegrity era) x)
-> (forall x. Rep (ScriptIntegrity era) x -> ScriptIntegrity era)
-> Generic (ScriptIntegrity era)
forall x. Rep (ScriptIntegrity era) x -> ScriptIntegrity era
forall x. ScriptIntegrity era -> Rep (ScriptIntegrity era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x. Rep (ScriptIntegrity era) x -> ScriptIntegrity era
forall era x. ScriptIntegrity era -> Rep (ScriptIntegrity era) x
$cfrom :: forall era x. ScriptIntegrity era -> Rep (ScriptIntegrity era) x
from :: forall x. ScriptIntegrity era -> Rep (ScriptIntegrity era) x
$cto :: forall era x. Rep (ScriptIntegrity era) x -> ScriptIntegrity era
to :: forall x. Rep (ScriptIntegrity era) x -> ScriptIntegrity era
Generic)
deriving instance AlonzoEraScript era => Show (ScriptIntegrity era)
deriving instance AlonzoEraScript era => NoThunks (ScriptIntegrity era)
instance Era era => SafeToHash (ScriptIntegrity era) where
originalBytes :: ScriptIntegrity era -> ByteString
originalBytes (ScriptIntegrity Redeemers era
m TxDats era
d Set LangDepView
l) =
let dBytes :: ByteString
dBytes = if Map DataHash (Data era) -> Bool
forall a. Map DataHash a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (TxDats era
d TxDats era
-> Getting
(Map DataHash (Data era)) (TxDats era) (Map DataHash (Data era))
-> Map DataHash (Data era)
forall s a. s -> Getting a s a -> a
^. Getting
(Map DataHash (Data era)) (TxDats era) (Map DataHash (Data era))
forall era. Era era => Lens' (TxDats era) (Map DataHash (Data era))
Lens' (TxDats era) (Map DataHash (Data era))
unTxDatsL) then ByteString
forall a. Monoid a => a
mempty else TxDats era -> ByteString
forall t. SafeToHash t => t -> ByteString
originalBytes TxDats era
d
lBytes :: ByteString
lBytes = Version -> Encoding -> ByteString
forall a. EncCBOR a => Version -> a -> ByteString
serialize' (forall era. Era era => Version
eraProtVerLow @era) (Set LangDepView -> Encoding
encodeLangViews Set LangDepView
l)
in Redeemers era -> ByteString
forall t. SafeToHash t => t -> ByteString
originalBytes Redeemers era
m ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
dBytes ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
lBytes
instance
Era era =>
HashAnnotated (ScriptIntegrity era) EraIndependentScriptIntegrity
hashScriptIntegrity :: Era era => ScriptIntegrity era -> ScriptIntegrityHash
hashScriptIntegrity :: forall era.
Era era =>
ScriptIntegrity era -> SafeHash EraIndependentScriptIntegrity
hashScriptIntegrity = ScriptIntegrity era -> SafeHash EraIndependentScriptIntegrity
forall x i. HashAnnotated x i => x -> SafeHash i
hashAnnotated
mkScriptIntegrity ::
( AlonzoEraPParams era
, AlonzoEraTxWits era
, EraUTxO era
) =>
PParams era ->
Tx l era ->
ScriptsProvided era ->
Set ScriptHash ->
StrictMaybe (ScriptIntegrity era)
mkScriptIntegrity :: forall era (l :: TxLevel).
(AlonzoEraPParams era, AlonzoEraTxWits era, EraUTxO era) =>
PParams era
-> Tx l era
-> ScriptsProvided era
-> Set ScriptHash
-> StrictMaybe (ScriptIntegrity era)
mkScriptIntegrity PParams era
pp Tx l era
tx (ScriptsProvided Map ScriptHash (Script era)
scriptsProvided) Set ScriptHash
scriptsNeeded
| Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Bool
forall a. Map (PlutusPurpose AsIx era) a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Redeemers era
txRedeemers Redeemers era
-> Getting
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Redeemers era)
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
forall s a. s -> Getting a s a -> a
^. Getting
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Redeemers era)
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
forall era.
AlonzoEraScript era =>
Lens'
(Redeemers era) (Map (PlutusPurpose AsIx era) (Data era, ExUnits))
Lens'
(Redeemers era) (Map (PlutusPurpose AsIx era) (Data era, ExUnits))
unRedeemersL)
, Set LangDepView -> Bool
forall a. Set a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Set LangDepView
langViews
, Map DataHash (Data era) -> Bool
forall a. Map DataHash a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (TxDats era
txDats TxDats era
-> Getting
(Map DataHash (Data era)) (TxDats era) (Map DataHash (Data era))
-> Map DataHash (Data era)
forall s a. s -> Getting a s a -> a
^. Getting
(Map DataHash (Data era)) (TxDats era) (Map DataHash (Data era))
forall era. Era era => Lens' (TxDats era) (Map DataHash (Data era))
Lens' (TxDats era) (Map DataHash (Data era))
unTxDatsL) =
StrictMaybe (ScriptIntegrity era)
forall a. StrictMaybe a
SNothing
| Bool
otherwise = ScriptIntegrity era -> StrictMaybe (ScriptIntegrity era)
forall a. a -> StrictMaybe a
SJust (ScriptIntegrity era -> StrictMaybe (ScriptIntegrity era))
-> ScriptIntegrity era -> StrictMaybe (ScriptIntegrity era)
forall a b. (a -> b) -> a -> b
$ Redeemers era
-> TxDats era -> Set LangDepView -> ScriptIntegrity era
forall era.
Redeemers era
-> TxDats era -> Set LangDepView -> ScriptIntegrity era
ScriptIntegrity Redeemers era
txRedeemers TxDats era
txDats Set LangDepView
langViews
where
scriptsUsed :: [Script era]
scriptsUsed = Map ScriptHash (Script era) -> [Script era]
forall k a. Map k a -> [a]
Map.elems (Map ScriptHash (Script era) -> [Script era])
-> Map ScriptHash (Script era) -> [Script era]
forall a b. (a -> b) -> a -> b
$ Map ScriptHash (Script era)
-> Set ScriptHash -> Map ScriptHash (Script era)
forall k a. Ord k => Map k a -> Set k -> Map k a
Map.restrictKeys Map ScriptHash (Script era)
scriptsProvided Set ScriptHash
scriptsNeeded
langs :: Set Language
langs = [Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList ([Language] -> Set Language) -> [Language] -> Set Language
forall a b. (a -> b) -> a -> b
$ PlutusScript era -> Language
forall era. AlonzoEraScript era => PlutusScript era -> Language
plutusScriptLanguage (PlutusScript era -> Language) -> [PlutusScript era] -> [Language]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Script era -> Maybe (PlutusScript era))
-> [Script era] -> [PlutusScript era]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe Script era -> Maybe (PlutusScript era)
forall era.
AlonzoEraScript era =>
Script era -> Maybe (PlutusScript era)
toPlutusScript [Script era]
scriptsUsed
langViews :: Set LangDepView
langViews = (Language -> LangDepView) -> Set Language -> Set LangDepView
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (PParams era -> Language -> LangDepView
forall era.
AlonzoEraPParams era =>
PParams era -> Language -> LangDepView
getLanguageView PParams era
pp) Set Language
langs
txWits :: TxWits era
txWits = Tx l era
tx Tx l era
-> Getting (TxWits era) (Tx l era) (TxWits era) -> TxWits era
forall s a. s -> Getting a s a -> a
^. Getting (TxWits era) (Tx l era) (TxWits era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l era) (TxWits era)
witsTxL
txRedeemers :: Redeemers era
txRedeemers = TxWits era
txWits TxWits era
-> Getting (Redeemers era) (TxWits era) (Redeemers era)
-> Redeemers era
forall s a. s -> Getting a s a -> a
^. Getting (Redeemers era) (TxWits era) (Redeemers era)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits era) (Redeemers era)
rdmrsTxWitsL
txDats :: TxDats era
txDats = TxWits era
txWits TxWits era
-> Getting (TxDats era) (TxWits era) (TxDats era) -> TxDats era
forall s a. s -> Getting a s a -> a
^. Getting (TxDats era) (TxWits era) (TxDats era)
forall era. AlonzoEraTxWits era => Lens' (TxWits era) (TxDats era)
Lens' (TxWits era) (TxDats era)
datsTxWitsL
toCBORForSizeComputation ::
( EncCBOR (TxBody l era)
, EncCBOR (TxWits era)
, EncCBOR (TxAuxData era)
) =>
AlonzoTx l era ->
Encoding
toCBORForSizeComputation :: forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
AlonzoTx l era -> Encoding
toCBORForSizeComputation AlonzoTx {TxBody TopTx era
atBody :: forall era. AlonzoTx TopTx era -> TxBody TopTx era
atBody :: TxBody TopTx era
atBody, TxWits era
atWits :: forall era. AlonzoTx TopTx era -> TxWits era
atWits :: TxWits era
atWits, StrictMaybe (TxAuxData era)
atAuxData :: forall era. AlonzoTx TopTx era -> StrictMaybe (TxAuxData era)
atAuxData :: StrictMaybe (TxAuxData era)
atAuxData} =
Word -> Encoding
encodeListLen Word
3
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> TxBody TopTx era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR TxBody TopTx era
atBody
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> TxWits era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR TxWits era
atWits
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> (TxAuxData era -> Encoding)
-> StrictMaybe (TxAuxData era) -> Encoding
forall a. (a -> Encoding) -> StrictMaybe a -> Encoding
encodeNullStrictMaybe TxAuxData era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StrictMaybe (TxAuxData era)
atAuxData
alonzoMinFeeTx ::
( EraTx era
, AlonzoEraTxWits era
, AlonzoEraPParams era
) =>
PParams era ->
Tx l era ->
Coin
alonzoMinFeeTx :: forall era (l :: TxLevel).
(EraTx era, AlonzoEraTxWits era, AlonzoEraPParams era) =>
PParams era -> Tx l era -> Coin
alonzoMinFeeTx PParams era
pp Tx l era
tx =
(Tx l era
tx Tx l era -> Getting Word32 (Tx l era) Word32 -> Word32
forall s a. s -> Getting a s a -> a
^. Getting Word32 (Tx l era) Word32
forall era (l :: TxLevel).
(EraTx era, HasCallStack) =>
SimpleGetter (Tx l era) Word32
SimpleGetter (Tx l era) Word32
forall (l :: TxLevel).
HasCallStack =>
SimpleGetter (Tx l era) Word32
sizeTxF Word32 -> Coin -> Coin
forall i. Integral i => i -> Coin -> Coin
forall t i. (Val t, Integral i) => i -> t -> t
<×> PParams era
pp PParams era -> Getting Coin (PParams era) Coin -> Coin
forall s a. s -> Getting a s a -> a
^. Getting Coin (PParams era) Coin
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinFeeAL)
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<+> (PParams era
pp PParams era -> Getting Coin (PParams era) Coin -> Coin
forall s a. s -> Getting a s a -> a
^. Getting Coin (PParams era) Coin
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinFeeBL)
Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<+> Prices -> ExUnits -> Coin
txscriptfee (PParams era
pp PParams era -> Getting Prices (PParams era) Prices -> Prices
forall s a. s -> Getting a s a -> a
^. Getting Prices (PParams era) Prices
forall era. AlonzoEraPParams era => Lens' (PParams era) Prices
Lens' (PParams era) Prices
ppPricesL) ExUnits
allExunits
where
allExunits :: ExUnits
allExunits = Tx l era -> ExUnits
forall era (l :: TxLevel).
(EraTx era, AlonzoEraTxWits era) =>
Tx l era -> ExUnits
totExUnits Tx l era
tx
totExUnits ::
(EraTx era, AlonzoEraTxWits era) =>
Tx l era ->
ExUnits
totExUnits :: forall era (l :: TxLevel).
(EraTx era, AlonzoEraTxWits era) =>
Tx l era -> ExUnits
totExUnits Tx l era
tx = ((Data era, ExUnits) -> ExUnits)
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> ExUnits
forall m a.
Monoid m =>
(a -> m) -> Map (PlutusPurpose AsIx era) a -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (Data era, ExUnits) -> ExUnits
forall a b. (a, b) -> b
snd (Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> ExUnits)
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> ExUnits
forall a b. (a -> b) -> a -> b
$ Tx l era
tx Tx l era
-> Getting
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Tx l era)
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
forall s a. s -> Getting a s a -> a
^. (TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> Tx l era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Tx l era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l era) (TxWits era)
witsTxL ((TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> Tx l era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Tx l era))
-> ((Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> Getting
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Tx l era)
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits era) (Redeemers era)
rdmrsTxWitsL ((Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era))
-> ((Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era))
-> (Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> TxWits era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (TxWits era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits))
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)))
-> Redeemers era
-> Const
(Map (PlutusPurpose AsIx era) (Data era, ExUnits)) (Redeemers era)
forall era.
AlonzoEraScript era =>
Lens'
(Redeemers era) (Map (PlutusPurpose AsIx era) (Data era, ExUnits))
Lens'
(Redeemers era) (Map (PlutusPurpose AsIx era) (Data era, ExUnits))
unRedeemersL
toCBORForMempoolSubmission ::
( EncCBOR (TxBody l era)
, EncCBOR (TxWits era)
, EncCBOR (TxAuxData era)
) =>
AlonzoTx l era ->
Encoding
toCBORForMempoolSubmission :: forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
AlonzoTx l era -> Encoding
toCBORForMempoolSubmission
AlonzoTx {TxBody TopTx era
atBody :: forall era. AlonzoTx TopTx era -> TxBody TopTx era
atBody :: TxBody TopTx era
atBody, TxWits era
atWits :: forall era. AlonzoTx TopTx era -> TxWits era
atWits :: TxWits era
atWits, StrictMaybe (TxAuxData era)
atAuxData :: forall era. AlonzoTx TopTx era -> StrictMaybe (TxAuxData era)
atAuxData :: StrictMaybe (TxAuxData era)
atAuxData, IsValid
atIsValid :: forall era. AlonzoTx TopTx era -> IsValid
atIsValid :: IsValid
atIsValid} =
Encode (Closed Dense) (AlonzoTx TopTx era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode (Closed Dense) (AlonzoTx TopTx era) -> Encoding)
-> Encode (Closed Dense) (AlonzoTx TopTx era) -> Encoding
forall a b. (a -> b) -> a -> b
$
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era)
-> Encode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era)
forall t. t -> Encode (Closed Dense) t
Rec TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era
forall era.
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era
AlonzoTx
Encode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era)
-> Encode (Closed Dense) (TxBody TopTx era)
-> Encode
(Closed Dense)
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxBody TopTx era -> Encode (Closed Dense) (TxBody TopTx era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxBody TopTx era
atBody
Encode
(Closed Dense)
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx TopTx era)
-> Encode (Closed Dense) (TxWits era)
-> Encode
(Closed Dense)
(IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxWits era -> Encode (Closed Dense) (TxWits era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxWits era
atWits
Encode
(Closed Dense)
(IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx TopTx era)
-> Encode (Closed Dense) IsValid
-> Encode
(Closed Dense) (StrictMaybe (TxAuxData era) -> AlonzoTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> IsValid -> Encode (Closed Dense) IsValid
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To IsValid
atIsValid
Encode
(Closed Dense) (StrictMaybe (TxAuxData era) -> AlonzoTx TopTx era)
-> Encode (Closed Dense) (StrictMaybe (TxAuxData era))
-> Encode (Closed Dense) (AlonzoTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (StrictMaybe (TxAuxData era) -> Encoding)
-> StrictMaybe (TxAuxData era)
-> Encode (Closed Dense) (StrictMaybe (TxAuxData era))
forall t. (t -> Encoding) -> t -> Encode (Closed Dense) t
E ((TxAuxData era -> Encoding)
-> StrictMaybe (TxAuxData era) -> Encoding
forall a. (a -> Encoding) -> StrictMaybe a -> Encoding
encodeNullStrictMaybe TxAuxData era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR) StrictMaybe (TxAuxData era)
atAuxData
instance
( Era era
, EncCBOR (TxBody l era)
, EncCBOR (TxAuxData era)
, EncCBOR (TxWits era)
) =>
EncCBOR (AlonzoTx l era)
where
encCBOR :: AlonzoTx l era -> Encoding
encCBOR = AlonzoTx l era -> Encoding
forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
AlonzoTx l era -> Encoding
toCBORForMempoolSubmission
instance
( Era era
, EncCBOR (TxBody l era)
, EncCBOR (TxAuxData era)
, EncCBOR (TxWits era)
, Typeable l
) =>
ToCBOR (AlonzoTx l era)
where
toCBOR :: AlonzoTx l era -> Encoding
toCBOR = forall era t. (Era era, EncCBOR t) => t -> Encoding
toEraCBOR @era
instance
( Typeable l
, Era era
, Typeable (TxBody l era)
, Typeable (TxWits era)
, Typeable (TxAuxData era)
, DecCBOR (Annotator (TxBody l era))
, DecCBOR (Annotator (TxWits era))
, DecCBOR (Annotator (TxAuxData era))
) =>
DecCBOR (Annotator (AlonzoTx l era))
where
decCBOR :: forall s. Decoder s (Annotator (AlonzoTx l era))
decCBOR =
forall (l :: TxLevel) era a (m :: * -> *).
(Typeable l, Era era, MonadFail m) =>
(STxTopLevel l era -> m a) -> m a
withSTxTopLevelM @l @era ((STxTopLevel l era -> Decoder s (Annotator (AlonzoTx l era)))
-> Decoder s (Annotator (AlonzoTx l era)))
-> (STxTopLevel l era -> Decoder s (Annotator (AlonzoTx l era)))
-> Decoder s (Annotator (AlonzoTx l era))
forall a b. (a -> b) -> a -> b
$ \case
STxTopLevel l era
STopTxOnly ->
Decode (Closed Dense) (Annotator (AlonzoTx l era))
-> Decoder s (Annotator (AlonzoTx l era))
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (Annotator (AlonzoTx l era))
-> Decoder s (Annotator (AlonzoTx l era)))
-> Decode (Closed Dense) (Annotator (AlonzoTx l era))
-> Decoder s (Annotator (AlonzoTx l era))
forall a b. (a -> b) -> a -> b
$
Decode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx l era)
-> Decode
(Closed Dense)
(Annotator
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx l era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx l era)
-> Decode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx l era)
forall t. t -> Decode (Closed Dense) t
RecD TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx l era
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era
forall era.
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx TopTx era
AlonzoTx)
Decode
(Closed Dense)
(Annotator
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx l era))
-> Decode (Closed (ZonkAny 2)) (Annotator (TxBody TopTx era))
-> Decode
(Closed Dense)
(Annotator
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 2)) (Annotator (TxBody TopTx era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx l era))
-> Decode (Closed (ZonkAny 1)) (Annotator (TxWits era))
-> Decode
(Closed Dense)
(Annotator
(IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 1)) (Annotator (TxWits era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator
(IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx l era))
-> Decode (Closed (ZonkAny 0)) (Annotator IsValid)
-> Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> AlonzoTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 0)) IsValid
-> Decode (Closed (ZonkAny 0)) (Annotator IsValid)
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann Decode (Closed (ZonkAny 0)) IsValid
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> AlonzoTx l era))
-> Decode (Closed Dense) (Annotator (StrictMaybe (TxAuxData era)))
-> Decode (Closed Dense) (Annotator (AlonzoTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! (forall s. Decoder s (Annotator (StrictMaybe (TxAuxData era))))
-> Decode (Closed Dense) (Annotator (StrictMaybe (TxAuxData era)))
forall t. (forall s. Decoder s t) -> Decode (Closed Dense) t
D (StrictMaybe (Annotator (TxAuxData era))
-> Annotator (StrictMaybe (TxAuxData era))
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
StrictMaybe (m a) -> m (StrictMaybe a)
sequence (StrictMaybe (Annotator (TxAuxData era))
-> Annotator (StrictMaybe (TxAuxData era)))
-> Decoder s (StrictMaybe (Annotator (TxAuxData era)))
-> Decoder s (Annotator (StrictMaybe (TxAuxData era)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (TxAuxData era))
-> Decoder s (StrictMaybe (Annotator (TxAuxData era)))
forall s a. Decoder s a -> Decoder s (StrictMaybe a)
decodeNullStrictMaybe Decoder s (Annotator (TxAuxData era))
forall s. Decoder s (Annotator (TxAuxData era))
forall a s. DecCBOR a => Decoder s a
decCBOR)
{-# INLINE decCBOR #-}