{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wno-orphans #-}
{-# OPTIONS_HADDOCK not-home #-}
module Cardano.Ledger.Shelley.Tx (
ShelleyTx (..),
Tx (..),
bodyShelleyTxL,
witsShelleyTxL,
auxDataShelleyTxL,
mkBasicShelleyTx,
shelleyMinFeeTx,
sizeShelleyTxF,
shelleyTxEqRaw,
) where
import Cardano.Ledger.BaseTypes (integralToBounded)
import Cardano.Ledger.Binary (
Annotator (..),
DecCBOR (decCBOR),
EncCBOR (encCBOR),
Encoding,
ToCBOR,
decodeNullStrictMaybe,
encodeListLen,
encodeNullStrictMaybe,
serialize,
)
import Cardano.Ledger.Binary.Coders
import qualified Cardano.Ledger.Binary.Plain as Plain
import Cardano.Ledger.Coin (Coin)
import Cardano.Ledger.Core
import Cardano.Ledger.MemoBytes (EqRaw (..))
import Cardano.Ledger.Shelley.Era (ShelleyEra)
import Cardano.Ledger.Shelley.Scripts (validateMultiSig)
import Cardano.Ledger.Shelley.TxAuxData ()
import Cardano.Ledger.Shelley.TxBody ()
import Cardano.Ledger.Shelley.TxWits ()
import Cardano.Ledger.Val ((<+>), (<×>))
import Control.DeepSeq (NFData (..), deepseq)
import Control.Monad.Trans.Fail.String (errorFail)
import qualified Data.ByteString.Lazy as LBS
import Data.Functor.Classes (Eq1 (..))
import Data.Maybe.Strict (StrictMaybe (..))
import Data.Typeable
import Data.Word (Word32)
import GHC.Generics (Generic)
import GHC.Stack (HasCallStack)
import Lens.Micro (Lens', SimpleGetter, lens, to, (^.))
import NoThunks.Class (InspectHeap (..), NoThunks (..))
data ShelleyTx l era where
ShelleyTx ::
{ forall era. ShelleyTx TopTx era -> TxBody TopTx era
stBody :: !(TxBody TopTx era)
, forall era. ShelleyTx TopTx era -> TxWits era
stWits :: !(TxWits era)
, forall era. ShelleyTx TopTx era -> StrictMaybe (TxAuxData era)
stAuxData :: !(StrictMaybe (TxAuxData era))
} ->
ShelleyTx TopTx era
instance
( NFData (TxBody l era)
, NFData (TxWits era)
, NFData (TxAuxData era)
) =>
NFData (ShelleyTx l era)
where
rnf :: ShelleyTx l era -> ()
rnf ShelleyTx {TxBody TopTx era
stBody :: forall era. ShelleyTx TopTx era -> TxBody TopTx era
stBody :: TxBody TopTx era
stBody, TxWits era
stWits :: forall era. ShelleyTx TopTx era -> TxWits era
stWits :: TxWits era
stWits, StrictMaybe (TxAuxData era)
stAuxData :: forall era. ShelleyTx TopTx era -> StrictMaybe (TxAuxData era)
stAuxData :: StrictMaybe (TxAuxData era)
stAuxData} =
TxBody TopTx era
stBody TxBody TopTx era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq` TxWits era
stWits TxWits era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq` StrictMaybe (TxAuxData era) -> ()
forall a. NFData a => a -> ()
rnf StrictMaybe (TxAuxData era)
stAuxData
deriving instance
( Era era
, Eq (TxBody l era)
, Eq (TxWits era)
, Eq (TxAuxData era)
) =>
Eq (ShelleyTx l era)
deriving instance
( Era era
, Show (TxBody l era)
, Show (TxWits era)
, Show (TxAuxData era)
) =>
Show (ShelleyTx l era)
deriving via
InspectHeap (ShelleyTx l era)
instance
(Typeable era, Typeable l) => NoThunks (ShelleyTx l era)
bodyShelleyTxL :: Lens' (ShelleyTx l era) (TxBody l era)
bodyShelleyTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxBody l era -> f (TxBody l era))
-> ShelleyTx l era -> f (ShelleyTx l era)
bodyShelleyTxL =
(ShelleyTx l era -> TxBody l era)
-> (ShelleyTx l era -> TxBody l era -> ShelleyTx l era)
-> Lens
(ShelleyTx l era) (ShelleyTx l era) (TxBody l era) (TxBody l era)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\ShelleyTx {TxBody TopTx era
stBody :: forall era. ShelleyTx TopTx era -> TxBody TopTx era
stBody :: TxBody TopTx era
stBody} -> TxBody l era
TxBody TopTx era
stBody) ((ShelleyTx l era -> TxBody l era -> ShelleyTx l era)
-> Lens
(ShelleyTx l era) (ShelleyTx l era) (TxBody l era) (TxBody l era))
-> (ShelleyTx l era -> TxBody l era -> ShelleyTx l era)
-> Lens
(ShelleyTx l era) (ShelleyTx l era) (TxBody l era) (TxBody l era)
forall a b. (a -> b) -> a -> b
$ \ShelleyTx l era
tx TxBody l era
txBody ->
case ShelleyTx l era
tx of
ShelleyTx {} -> ShelleyTx l era
tx {stBody = txBody}
{-# INLINEABLE bodyShelleyTxL #-}
witsShelleyTxL :: Lens' (ShelleyTx l era) (TxWits era)
witsShelleyTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> ShelleyTx l era -> f (ShelleyTx l era)
witsShelleyTxL =
(ShelleyTx l era -> TxWits era)
-> (ShelleyTx l era -> TxWits era -> ShelleyTx l era)
-> Lens
(ShelleyTx l era) (ShelleyTx l era) (TxWits era) (TxWits era)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\ShelleyTx {TxWits era
stWits :: forall era. ShelleyTx TopTx era -> TxWits era
stWits :: TxWits era
stWits} -> TxWits era
stWits) ((ShelleyTx l era -> TxWits era -> ShelleyTx l era)
-> Lens
(ShelleyTx l era) (ShelleyTx l era) (TxWits era) (TxWits era))
-> (ShelleyTx l era -> TxWits era -> ShelleyTx l era)
-> Lens
(ShelleyTx l era) (ShelleyTx l era) (TxWits era) (TxWits era)
forall a b. (a -> b) -> a -> b
$ \ShelleyTx l era
tx TxWits era
txWits ->
case ShelleyTx l era
tx of
ShelleyTx {} -> ShelleyTx l era
tx {stWits = txWits}
{-# INLINEABLE witsShelleyTxL #-}
auxDataShelleyTxL :: Lens' (ShelleyTx l era) (StrictMaybe (TxAuxData era))
auxDataShelleyTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> ShelleyTx l era -> f (ShelleyTx l era)
auxDataShelleyTxL =
(ShelleyTx l era -> StrictMaybe (TxAuxData era))
-> (ShelleyTx l era
-> StrictMaybe (TxAuxData era) -> ShelleyTx l era)
-> Lens
(ShelleyTx l era)
(ShelleyTx l era)
(StrictMaybe (TxAuxData era))
(StrictMaybe (TxAuxData era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\ShelleyTx {StrictMaybe (TxAuxData era)
stAuxData :: forall era. ShelleyTx TopTx era -> StrictMaybe (TxAuxData era)
stAuxData :: StrictMaybe (TxAuxData era)
stAuxData} -> StrictMaybe (TxAuxData era)
stAuxData) ((ShelleyTx l era
-> StrictMaybe (TxAuxData era) -> ShelleyTx l era)
-> Lens
(ShelleyTx l era)
(ShelleyTx l era)
(StrictMaybe (TxAuxData era))
(StrictMaybe (TxAuxData era)))
-> (ShelleyTx l era
-> StrictMaybe (TxAuxData era) -> ShelleyTx l era)
-> Lens
(ShelleyTx l era)
(ShelleyTx l era)
(StrictMaybe (TxAuxData era))
(StrictMaybe (TxAuxData era))
forall a b. (a -> b) -> a -> b
$ \ShelleyTx l era
tx StrictMaybe (TxAuxData era)
txAuxData ->
case ShelleyTx l era
tx of
ShelleyTx {} -> ShelleyTx l era
tx {stAuxData = txAuxData}
{-# INLINEABLE auxDataShelleyTxL #-}
mkBasicShelleyTx ::
(EraTx era, STxLevel l era ~ STxTopLevel l era) =>
TxBody l era ->
ShelleyTx l era
mkBasicShelleyTx :: forall era (l :: TxLevel).
(EraTx era, STxLevel l era ~ STxTopLevel l era) =>
TxBody l era -> ShelleyTx l era
mkBasicShelleyTx 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 ->
ShelleyTx
{ stBody :: TxBody TopTx era
stBody = TxBody l era
TxBody TopTx era
txBody
, stWits :: TxWits era
stWits = TxWits era
forall era. EraTxWits era => TxWits era
mkBasicTxWits
, stAuxData :: StrictMaybe (TxAuxData era)
stAuxData = StrictMaybe (TxAuxData era)
forall a. StrictMaybe a
SNothing
}
toCBORForSizeComputation ::
( EncCBOR (TxBody l era)
, EncCBOR (TxWits era)
, EncCBOR (TxAuxData era)
) =>
ShelleyTx l era ->
Encoding
toCBORForSizeComputation :: forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
ShelleyTx l era -> Encoding
toCBORForSizeComputation ShelleyTx {TxBody TopTx era
stBody :: forall era. ShelleyTx TopTx era -> TxBody TopTx era
stBody :: TxBody TopTx era
stBody, TxWits era
stWits :: forall era. ShelleyTx TopTx era -> TxWits era
stWits :: TxWits era
stWits, StrictMaybe (TxAuxData era)
stAuxData :: forall era. ShelleyTx TopTx era -> StrictMaybe (TxAuxData era)
stAuxData :: StrictMaybe (TxAuxData era)
stAuxData} =
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
stBody
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> TxWits era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR TxWits era
stWits
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)
stAuxData
sizeShelleyTxF :: forall era l. (HasCallStack, EraTx era) => SimpleGetter (ShelleyTx l era) Word32
sizeShelleyTxF :: forall era (l :: TxLevel).
(HasCallStack, EraTx era) =>
SimpleGetter (ShelleyTx l era) Word32
sizeShelleyTxF =
(ShelleyTx l era -> Word32)
-> SimpleGetter (ShelleyTx l era) Word32
forall s a. (s -> a) -> SimpleGetter s a
to ((ShelleyTx l era -> Word32)
-> SimpleGetter (ShelleyTx l era) Word32)
-> (ShelleyTx l era -> Word32)
-> SimpleGetter (ShelleyTx l era) Word32
forall a b. (a -> b) -> a -> b
$
Fail Word32 -> Word32
forall a. HasCallStack => Fail a -> a
errorFail
(Fail Word32 -> Word32)
-> (ShelleyTx l era -> Fail Word32) -> ShelleyTx l era -> Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> Fail Word32
forall i b (m :: * -> *).
(Integral i, Integral b, Bounded b, MonadFail m) =>
i -> m b
integralToBounded
(Int64 -> Fail Word32)
-> (ShelleyTx l era -> Int64) -> ShelleyTx l era -> Fail Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int64
LBS.length
(ByteString -> Int64)
-> (ShelleyTx l era -> ByteString) -> ShelleyTx 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)
-> (ShelleyTx l era -> Encoding) -> ShelleyTx l era -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyTx l era -> Encoding
forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
ShelleyTx l era -> Encoding
toCBORForSizeComputation
{-# INLINEABLE sizeShelleyTxF #-}
instance
( Typeable l
, EraTxBody era
, EraTxWits era
, EraTxAuxData era
, STxLevel l era ~ STxTopLevel l era
) =>
DecCBOR (Annotator (ShelleyTx l era))
where
decCBOR :: forall s. Decoder s (Annotator (ShelleyTx 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 (ShelleyTx l era)))
-> Decoder s (Annotator (ShelleyTx l era)))
-> (STxTopLevel l era -> Decoder s (Annotator (ShelleyTx l era)))
-> Decoder s (Annotator (ShelleyTx l era))
forall a b. (a -> b) -> a -> b
$ \case
STxTopLevel l era
STopTxOnly ->
Decode (Closed Dense) (Annotator (ShelleyTx l era))
-> Decoder s (Annotator (ShelleyTx l era))
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (Annotator (ShelleyTx l era))
-> Decoder s (Annotator (ShelleyTx l era)))
-> Decode (Closed Dense) (Annotator (ShelleyTx l era))
-> Decoder s (Annotator (ShelleyTx l era))
forall a b. (a -> b) -> a -> b
$
Decode
(Closed Dense)
(TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx l era)
-> Decode
(Closed Dense)
(Annotator
(TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx l era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx l era)
-> Decode
(Closed Dense)
(TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx l era)
forall t. t -> Decode (Closed Dense) t
RecD TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx l era
TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx TopTx era
forall era.
TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx TopTx era
ShelleyTx)
Decode
(Closed Dense)
(Annotator
(TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx l era))
-> Decode (Closed (ZonkAny 1)) (Annotator (TxBody TopTx era))
-> Decode
(Closed Dense)
(Annotator
(TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx 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 (TxBody TopTx era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator
(TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx l era))
-> Decode (Closed (ZonkAny 0)) (Annotator (TxWits era))
-> Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> ShelleyTx 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)) (Annotator (TxWits era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> ShelleyTx l era))
-> Decode (Closed Dense) (Annotator (StrictMaybe (TxAuxData era)))
-> Decode (Closed Dense) (Annotator (ShelleyTx 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)
instance Typeable l => DecCBOR (Annotator (Tx l ShelleyEra)) where
decCBOR :: forall s. Decoder s (Annotator (Tx l ShelleyEra))
decCBOR = (ShelleyTx l ShelleyEra -> Tx l ShelleyEra)
-> Annotator (ShelleyTx l ShelleyEra)
-> Annotator (Tx l ShelleyEra)
forall a b. (a -> b) -> Annotator a -> Annotator b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ShelleyTx l ShelleyEra -> Tx l ShelleyEra
forall (l :: TxLevel). ShelleyTx l ShelleyEra -> Tx l ShelleyEra
MkShelleyTx (Annotator (ShelleyTx l ShelleyEra) -> Annotator (Tx l ShelleyEra))
-> Decoder s (Annotator (ShelleyTx l ShelleyEra))
-> Decoder s (Annotator (Tx l ShelleyEra))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (ShelleyTx l ShelleyEra))
forall s. Decoder s (Annotator (ShelleyTx l ShelleyEra))
forall a s. DecCBOR a => Decoder s a
decCBOR
instance HasEraTxLevel Tx ShelleyEra where
toSTxLevel :: forall (l :: TxLevel). Tx l ShelleyEra -> STxLevel l ShelleyEra
toSTxLevel (MkShelleyTx ShelleyTx {}) = forall era. STxTopLevel TopTx era
STopTxOnly @ShelleyEra
instance EraTx ShelleyEra where
newtype Tx l ShelleyEra = MkShelleyTx {forall (l :: TxLevel). Tx l ShelleyEra -> ShelleyTx l ShelleyEra
unShelleyTx :: ShelleyTx l ShelleyEra}
deriving newtype (Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
(Tx l ShelleyEra -> Tx l ShelleyEra -> Bool)
-> (Tx l ShelleyEra -> Tx l ShelleyEra -> Bool)
-> Eq (Tx l ShelleyEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (l :: TxLevel). Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
$c== :: forall (l :: TxLevel). Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
== :: Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
$c/= :: forall (l :: TxLevel). Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
/= :: Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
Eq, Tx l ShelleyEra -> Encoding
(Tx l ShelleyEra -> Encoding) -> EncCBOR (Tx l ShelleyEra)
forall a. (a -> Encoding) -> EncCBOR a
forall (l :: TxLevel). Tx l ShelleyEra -> Encoding
$cencCBOR :: forall (l :: TxLevel). Tx l ShelleyEra -> Encoding
encCBOR :: Tx l ShelleyEra -> Encoding
EncCBOR, Tx l ShelleyEra -> ()
(Tx l ShelleyEra -> ()) -> NFData (Tx l ShelleyEra)
forall a. (a -> ()) -> NFData a
forall (l :: TxLevel). Tx l ShelleyEra -> ()
$crnf :: forall (l :: TxLevel). Tx l ShelleyEra -> ()
rnf :: Tx l ShelleyEra -> ()
NFData, Context -> Tx l ShelleyEra -> IO (Maybe ThunkInfo)
Proxy (Tx l ShelleyEra) -> String
(Context -> Tx l ShelleyEra -> IO (Maybe ThunkInfo))
-> (Context -> Tx l ShelleyEra -> IO (Maybe ThunkInfo))
-> (Proxy (Tx l ShelleyEra) -> String)
-> NoThunks (Tx l ShelleyEra)
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 ShelleyEra -> IO (Maybe ThunkInfo)
forall (l :: TxLevel).
Typeable l =>
Proxy (Tx l ShelleyEra) -> String
$cnoThunks :: forall (l :: TxLevel).
Typeable l =>
Context -> Tx l ShelleyEra -> IO (Maybe ThunkInfo)
noThunks :: Context -> Tx l ShelleyEra -> IO (Maybe ThunkInfo)
$cwNoThunks :: forall (l :: TxLevel).
Typeable l =>
Context -> Tx l ShelleyEra -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> Tx l ShelleyEra -> IO (Maybe ThunkInfo)
$cshowTypeOf :: forall (l :: TxLevel).
Typeable l =>
Proxy (Tx l ShelleyEra) -> String
showTypeOf :: Proxy (Tx l ShelleyEra) -> String
NoThunks, Int -> Tx l ShelleyEra -> ShowS
[Tx l ShelleyEra] -> ShowS
Tx l ShelleyEra -> String
(Int -> Tx l ShelleyEra -> ShowS)
-> (Tx l ShelleyEra -> String)
-> ([Tx l ShelleyEra] -> ShowS)
-> Show (Tx l ShelleyEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (l :: TxLevel). Int -> Tx l ShelleyEra -> ShowS
forall (l :: TxLevel). [Tx l ShelleyEra] -> ShowS
forall (l :: TxLevel). Tx l ShelleyEra -> String
$cshowsPrec :: forall (l :: TxLevel). Int -> Tx l ShelleyEra -> ShowS
showsPrec :: Int -> Tx l ShelleyEra -> ShowS
$cshow :: forall (l :: TxLevel). Tx l ShelleyEra -> String
show :: Tx l ShelleyEra -> String
$cshowList :: forall (l :: TxLevel). [Tx l ShelleyEra] -> ShowS
showList :: [Tx l ShelleyEra] -> ShowS
Show, Typeable (Tx l ShelleyEra)
Typeable (Tx l ShelleyEra) =>
(Tx l ShelleyEra -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l ShelleyEra) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l ShelleyEra] -> Size)
-> ToCBOR (Tx l ShelleyEra)
Tx l ShelleyEra -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l ShelleyEra] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l ShelleyEra) -> 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 ShelleyEra)
forall (l :: TxLevel). Typeable l => Tx l ShelleyEra -> Encoding
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l ShelleyEra] -> Size
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l ShelleyEra) -> Size
$ctoCBOR :: forall (l :: TxLevel). Typeable l => Tx l ShelleyEra -> Encoding
toCBOR :: Tx l ShelleyEra -> Encoding
$cencodedSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l ShelleyEra) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l ShelleyEra) -> Size
$cencodedListSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l ShelleyEra] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l ShelleyEra] -> Size
ToCBOR)
deriving ((forall x. Tx l ShelleyEra -> Rep (Tx l ShelleyEra) x)
-> (forall x. Rep (Tx l ShelleyEra) x -> Tx l ShelleyEra)
-> Generic (Tx l ShelleyEra)
forall x. Rep (Tx l ShelleyEra) x -> Tx l ShelleyEra
forall x. Tx l ShelleyEra -> Rep (Tx l ShelleyEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (l :: TxLevel) x. Rep (Tx l ShelleyEra) x -> Tx l ShelleyEra
forall (l :: TxLevel) x. Tx l ShelleyEra -> Rep (Tx l ShelleyEra) x
$cfrom :: forall (l :: TxLevel) x. Tx l ShelleyEra -> Rep (Tx l ShelleyEra) x
from :: forall x. Tx l ShelleyEra -> Rep (Tx l ShelleyEra) x
$cto :: forall (l :: TxLevel) x. Rep (Tx l ShelleyEra) x -> Tx l ShelleyEra
to :: forall x. Rep (Tx l ShelleyEra) x -> Tx l ShelleyEra
Generic)
mkBasicTx :: forall (l :: TxLevel). TxBody l ShelleyEra -> Tx l ShelleyEra
mkBasicTx = ShelleyTx l ShelleyEra -> Tx l ShelleyEra
forall (l :: TxLevel). ShelleyTx l ShelleyEra -> Tx l ShelleyEra
MkShelleyTx (ShelleyTx l ShelleyEra -> Tx l ShelleyEra)
-> (TxBody l ShelleyEra -> ShelleyTx l ShelleyEra)
-> TxBody l ShelleyEra
-> Tx l ShelleyEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody l ShelleyEra -> ShelleyTx l ShelleyEra
forall era (l :: TxLevel).
(EraTx era, STxLevel l era ~ STxTopLevel l era) =>
TxBody l era -> ShelleyTx l era
mkBasicShelleyTx
bodyTxL :: forall (l :: TxLevel).
Lens' (Tx l ShelleyEra) (TxBody l ShelleyEra)
bodyTxL = (ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
shelleyTxL ((ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra))
-> ((TxBody l ShelleyEra -> f (TxBody l ShelleyEra))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> (TxBody l ShelleyEra -> f (TxBody l ShelleyEra))
-> Tx l ShelleyEra
-> f (Tx l ShelleyEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxBody l ShelleyEra -> f (TxBody l ShelleyEra))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxBody l era -> f (TxBody l era))
-> ShelleyTx l era -> f (ShelleyTx l era)
bodyShelleyTxL
{-# INLINE bodyTxL #-}
witsTxL :: forall (l :: TxLevel). Lens' (Tx l ShelleyEra) (TxWits ShelleyEra)
witsTxL = (ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
shelleyTxL ((ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra))
-> ((ShelleyTxWits ShelleyEra -> f (ShelleyTxWits ShelleyEra))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> (ShelleyTxWits ShelleyEra -> f (ShelleyTxWits ShelleyEra))
-> Tx l ShelleyEra
-> f (Tx l ShelleyEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxWits ShelleyEra -> f (TxWits ShelleyEra))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra)
(ShelleyTxWits ShelleyEra -> f (ShelleyTxWits ShelleyEra))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> ShelleyTx l era -> f (ShelleyTx l era)
witsShelleyTxL
{-# INLINE witsTxL #-}
auxDataTxL :: forall (l :: TxLevel).
Lens' (Tx l ShelleyEra) (StrictMaybe (TxAuxData ShelleyEra))
auxDataTxL = (ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
shelleyTxL ((ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra))
-> ((StrictMaybe (ShelleyTxAuxData ShelleyEra)
-> f (StrictMaybe (ShelleyTxAuxData ShelleyEra)))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> (StrictMaybe (ShelleyTxAuxData ShelleyEra)
-> f (StrictMaybe (ShelleyTxAuxData ShelleyEra)))
-> Tx l ShelleyEra
-> f (Tx l ShelleyEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (TxAuxData ShelleyEra)
-> f (StrictMaybe (TxAuxData ShelleyEra)))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra)
(StrictMaybe (ShelleyTxAuxData ShelleyEra)
-> f (StrictMaybe (ShelleyTxAuxData ShelleyEra)))
-> ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> ShelleyTx l era -> f (ShelleyTx l era)
auxDataShelleyTxL
{-# INLINE auxDataTxL #-}
sizeTxF :: forall (l :: TxLevel).
HasCallStack =>
SimpleGetter (Tx l ShelleyEra) Word32
sizeTxF = (ShelleyTx l ShelleyEra -> Const r (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> Const r (Tx l ShelleyEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
shelleyTxL ((ShelleyTx l ShelleyEra -> Const r (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> Const r (Tx l ShelleyEra))
-> ((Word32 -> Const r Word32)
-> ShelleyTx l ShelleyEra -> Const r (ShelleyTx l ShelleyEra))
-> (Word32 -> Const r Word32)
-> Tx l ShelleyEra
-> Const r (Tx l ShelleyEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Word32 -> Const r Word32)
-> ShelleyTx l ShelleyEra -> Const r (ShelleyTx l ShelleyEra)
SimpleGetter (ShelleyTx l ShelleyEra) Word32
forall era (l :: TxLevel).
(HasCallStack, EraTx era) =>
SimpleGetter (ShelleyTx l era) Word32
sizeShelleyTxF
{-# INLINE sizeTxF #-}
validateNativeScript :: forall (l :: TxLevel).
Tx l ShelleyEra -> NativeScript ShelleyEra -> Bool
validateNativeScript = Tx l ShelleyEra -> NativeScript ShelleyEra -> Bool
forall era (t :: TxLevel).
(ShelleyEraScript era, EraTx era,
NativeScript era ~ MultiSig era) =>
Tx t era -> NativeScript era -> Bool
validateMultiSig
{-# INLINE validateNativeScript #-}
getMinFeeTx :: forall (l :: TxLevel).
PParams ShelleyEra -> Tx l ShelleyEra -> Int -> Coin
getMinFeeTx PParams ShelleyEra
pp Tx l ShelleyEra
tx Int
_ = PParams ShelleyEra -> Tx l ShelleyEra -> Coin
forall era (l :: TxLevel).
EraTx era =>
PParams era -> Tx l era -> Coin
shelleyMinFeeTx PParams ShelleyEra
pp Tx l ShelleyEra
tx
shelleyTxEqRaw :: EraTx era => Tx l era -> Tx l era -> Bool
shelleyTxEqRaw :: forall era (l :: TxLevel).
EraTx era =>
Tx l era -> Tx l era -> Bool
shelleyTxEqRaw Tx l era
tx1 Tx l era
tx2 =
TxBody l era -> TxBody l era -> Bool
forall a. EqRaw a => a -> a -> Bool
eqRaw (Tx l era
tx1 Tx l era
-> Getting (TxBody l era) (Tx l era) (TxBody l era) -> TxBody l era
forall s a. s -> Getting a s a -> a
^. Getting (TxBody l era) (Tx l era) (TxBody l 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) (Tx l era
tx2 Tx l era
-> Getting (TxBody l era) (Tx l era) (TxBody l era) -> TxBody l era
forall s a. s -> Getting a s a -> a
^. Getting (TxBody l era) (Tx l era) (TxBody l 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)
Bool -> Bool -> Bool
&& TxWits era -> TxWits era -> Bool
forall a. EqRaw a => a -> a -> Bool
eqRaw (Tx l era
tx1 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) (Tx l era
tx2 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)
Bool -> Bool -> Bool
&& (TxAuxData era -> TxAuxData era -> Bool)
-> StrictMaybe (TxAuxData era)
-> StrictMaybe (TxAuxData era)
-> Bool
forall a b.
(a -> b -> Bool) -> StrictMaybe a -> StrictMaybe b -> Bool
forall (f :: * -> *) a b.
Eq1 f =>
(a -> b -> Bool) -> f a -> f b -> Bool
liftEq TxAuxData era -> TxAuxData era -> Bool
forall a. EqRaw a => a -> a -> Bool
eqRaw (Tx l era
tx1 Tx l era
-> Getting
(StrictMaybe (TxAuxData era))
(Tx l era)
(StrictMaybe (TxAuxData era))
-> StrictMaybe (TxAuxData era)
forall s a. s -> Getting a s a -> a
^. Getting
(StrictMaybe (TxAuxData era))
(Tx l era)
(StrictMaybe (TxAuxData era))
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
forall (l :: TxLevel).
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
auxDataTxL) (Tx l era
tx2 Tx l era
-> Getting
(StrictMaybe (TxAuxData era))
(Tx l era)
(StrictMaybe (TxAuxData era))
-> StrictMaybe (TxAuxData era)
forall s a. s -> Getting a s a -> a
^. Getting
(StrictMaybe (TxAuxData era))
(Tx l era)
(StrictMaybe (TxAuxData era))
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
forall (l :: TxLevel).
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
auxDataTxL)
instance EqRaw (Tx l ShelleyEra) where
eqRaw :: Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
eqRaw = Tx l ShelleyEra -> Tx l ShelleyEra -> Bool
forall era (l :: TxLevel).
EraTx era =>
Tx l era -> Tx l era -> Bool
shelleyTxEqRaw
shelleyTxL :: Lens' (Tx l ShelleyEra) (ShelleyTx l ShelleyEra)
shelleyTxL :: forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx l ShelleyEra -> f (ShelleyTx l ShelleyEra))
-> Tx l ShelleyEra -> f (Tx l ShelleyEra)
shelleyTxL = (Tx l ShelleyEra -> ShelleyTx l ShelleyEra)
-> (Tx l ShelleyEra -> ShelleyTx l ShelleyEra -> Tx l ShelleyEra)
-> Lens
(Tx l ShelleyEra)
(Tx l ShelleyEra)
(ShelleyTx l ShelleyEra)
(ShelleyTx l ShelleyEra)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Tx l ShelleyEra -> ShelleyTx l ShelleyEra
forall (l :: TxLevel). Tx l ShelleyEra -> ShelleyTx l ShelleyEra
unShelleyTx (\Tx l ShelleyEra
x ShelleyTx l ShelleyEra
y -> Tx l ShelleyEra
x {unShelleyTx = y})
instance
(Era era, EncCBOR (TxWits era), EncCBOR (TxBody l era), EncCBOR (TxAuxData era)) =>
EncCBOR (ShelleyTx l era)
where
encCBOR :: ShelleyTx l era -> Encoding
encCBOR ShelleyTx {StrictMaybe (TxAuxData era)
TxWits era
TxBody TopTx era
stBody :: forall era. ShelleyTx TopTx era -> TxBody TopTx era
stWits :: forall era. ShelleyTx TopTx era -> TxWits era
stAuxData :: forall era. ShelleyTx TopTx era -> StrictMaybe (TxAuxData era)
stBody :: TxBody TopTx era
stWits :: TxWits era
stAuxData :: StrictMaybe (TxAuxData era)
..} =
Encode (Closed Dense) (ShelleyTx TopTx era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode (Closed Dense) (ShelleyTx TopTx era) -> Encoding)
-> Encode (Closed Dense) (ShelleyTx TopTx era) -> Encoding
forall a b. (a -> b) -> a -> b
$
(TxBody TopTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> ShelleyTx TopTx era)
-> Encode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> ShelleyTx TopTx era)
forall t. t -> Encode (Closed Dense) t
Rec TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx TopTx era
forall era.
TxBody TopTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx TopTx era
ShelleyTx
Encode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> ShelleyTx TopTx era)
-> Encode (Closed Dense) (TxBody TopTx era)
-> Encode
(Closed Dense)
(TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx 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
stBody
Encode
(Closed Dense)
(TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx TopTx era)
-> Encode (Closed Dense) (TxWits era)
-> Encode
(Closed Dense) (StrictMaybe (TxAuxData era) -> ShelleyTx 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
stWits
Encode
(Closed Dense) (StrictMaybe (TxAuxData era) -> ShelleyTx TopTx era)
-> Encode (Closed Dense) (StrictMaybe (TxAuxData era))
-> Encode (Closed Dense) (ShelleyTx 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)
stAuxData
instance
(Era era, EncCBOR (TxWits era), EncCBOR (TxBody l era), EncCBOR (TxAuxData era), Typeable l) =>
ToCBOR (ShelleyTx l era)
where
toCBOR :: ShelleyTx l era -> Encoding
toCBOR = forall era t. (Era era, EncCBOR t) => t -> Encoding
toEraCBOR @era
shelleyMinFeeTx :: EraTx era => PParams era -> Tx l era -> Coin
shelleyMinFeeTx :: forall era (l :: TxLevel).
EraTx era =>
PParams era -> Tx l era -> Coin
shelleyMinFeeTx 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 => 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 => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinFeeBL