{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Allegra.Tx (
validateTimelock,
Tx (..),
) where
import Cardano.Ledger.Allegra.Era (AllegraEra)
import Cardano.Ledger.Allegra.PParams ()
import Cardano.Ledger.Allegra.Scripts (AllegraEraScript (..), Timelock, evalTimelock)
import Cardano.Ledger.Allegra.TxAuxData ()
import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..))
import Cardano.Ledger.Allegra.TxWits ()
import Cardano.Ledger.Binary (Annotator, DecCBOR (..), EncCBOR, ToCBOR)
import Cardano.Ledger.Core (
EraTx (..),
EraTxWits (..),
HasEraTxLevel (..),
NativeScript,
STxTopLevel (..),
)
import Cardano.Ledger.Keys.WitVKey (witVKeyHash)
import Cardano.Ledger.MemoBytes (EqRaw (..))
import Cardano.Ledger.Shelley.Tx (
ShelleyTx (..),
Tx (..),
auxDataShelleyTxL,
bodyShelleyTxL,
mkBasicShelleyTx,
shelleyMinFeeTx,
shelleyTxEqRaw,
sizeShelleyTxF,
witsShelleyTxL,
)
import Control.DeepSeq (NFData)
import qualified Data.Set as Set (map)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import Lens.Micro (Lens', lens, (^.))
import NoThunks.Class (NoThunks)
instance EraTx AllegraEra where
newtype Tx t AllegraEra = MkAllegraTx {forall (t :: TxLevel). Tx t AllegraEra -> ShelleyTx t AllegraEra
unAllegraTx :: ShelleyTx t AllegraEra}
deriving newtype (Tx t AllegraEra -> Tx t AllegraEra -> Bool
(Tx t AllegraEra -> Tx t AllegraEra -> Bool)
-> (Tx t AllegraEra -> Tx t AllegraEra -> Bool)
-> Eq (Tx t AllegraEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (t :: TxLevel). Tx t AllegraEra -> Tx t AllegraEra -> Bool
$c== :: forall (t :: TxLevel). Tx t AllegraEra -> Tx t AllegraEra -> Bool
== :: Tx t AllegraEra -> Tx t AllegraEra -> Bool
$c/= :: forall (t :: TxLevel). Tx t AllegraEra -> Tx t AllegraEra -> Bool
/= :: Tx t AllegraEra -> Tx t AllegraEra -> Bool
Eq, Tx t AllegraEra -> ()
(Tx t AllegraEra -> ()) -> NFData (Tx t AllegraEra)
forall a. (a -> ()) -> NFData a
forall (t :: TxLevel). Tx t AllegraEra -> ()
$crnf :: forall (t :: TxLevel). Tx t AllegraEra -> ()
rnf :: Tx t AllegraEra -> ()
NFData, Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo)
Proxy (Tx t AllegraEra) -> String
(Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo))
-> (Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo))
-> (Proxy (Tx t AllegraEra) -> String)
-> NoThunks (Tx t AllegraEra)
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
forall (t :: TxLevel).
Typeable t =>
Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo)
forall (t :: TxLevel).
Typeable t =>
Proxy (Tx t AllegraEra) -> String
$cnoThunks :: forall (t :: TxLevel).
Typeable t =>
Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo)
noThunks :: Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo)
$cwNoThunks :: forall (t :: TxLevel).
Typeable t =>
Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> Tx t AllegraEra -> IO (Maybe ThunkInfo)
$cshowTypeOf :: forall (t :: TxLevel).
Typeable t =>
Proxy (Tx t AllegraEra) -> String
showTypeOf :: Proxy (Tx t AllegraEra) -> String
NoThunks, Int -> Tx t AllegraEra -> ShowS
[Tx t AllegraEra] -> ShowS
Tx t AllegraEra -> String
(Int -> Tx t AllegraEra -> ShowS)
-> (Tx t AllegraEra -> String)
-> ([Tx t AllegraEra] -> ShowS)
-> Show (Tx t AllegraEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (t :: TxLevel). Int -> Tx t AllegraEra -> ShowS
forall (t :: TxLevel). [Tx t AllegraEra] -> ShowS
forall (t :: TxLevel). Tx t AllegraEra -> String
$cshowsPrec :: forall (t :: TxLevel). Int -> Tx t AllegraEra -> ShowS
showsPrec :: Int -> Tx t AllegraEra -> ShowS
$cshow :: forall (t :: TxLevel). Tx t AllegraEra -> String
show :: Tx t AllegraEra -> String
$cshowList :: forall (t :: TxLevel). [Tx t AllegraEra] -> ShowS
showList :: [Tx t AllegraEra] -> ShowS
Show, Typeable (Tx t AllegraEra)
Typeable (Tx t AllegraEra) =>
(Tx t AllegraEra -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx t AllegraEra) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx t AllegraEra] -> Size)
-> ToCBOR (Tx t AllegraEra)
Tx t AllegraEra -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx t AllegraEra] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx t AllegraEra) -> 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 (t :: TxLevel). Typeable t => Typeable (Tx t AllegraEra)
forall (t :: TxLevel). Typeable t => Tx t AllegraEra -> Encoding
forall (t :: TxLevel).
Typeable t =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx t AllegraEra] -> Size
forall (t :: TxLevel).
Typeable t =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx t AllegraEra) -> Size
$ctoCBOR :: forall (t :: TxLevel). Typeable t => Tx t AllegraEra -> Encoding
toCBOR :: Tx t AllegraEra -> Encoding
$cencodedSizeExpr :: forall (t :: TxLevel).
Typeable t =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx t AllegraEra) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx t AllegraEra) -> Size
$cencodedListSizeExpr :: forall (t :: TxLevel).
Typeable t =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx t AllegraEra] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx t AllegraEra] -> Size
ToCBOR, Tx t AllegraEra -> Encoding
(Tx t AllegraEra -> Encoding) -> EncCBOR (Tx t AllegraEra)
forall a. (a -> Encoding) -> EncCBOR a
forall (t :: TxLevel). Tx t AllegraEra -> Encoding
$cencCBOR :: forall (t :: TxLevel). Tx t AllegraEra -> Encoding
encCBOR :: Tx t AllegraEra -> Encoding
EncCBOR)
deriving ((forall x. Tx t AllegraEra -> Rep (Tx t AllegraEra) x)
-> (forall x. Rep (Tx t AllegraEra) x -> Tx t AllegraEra)
-> Generic (Tx t AllegraEra)
forall x. Rep (Tx t AllegraEra) x -> Tx t AllegraEra
forall x. Tx t AllegraEra -> Rep (Tx t AllegraEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (t :: TxLevel) x. Rep (Tx t AllegraEra) x -> Tx t AllegraEra
forall (t :: TxLevel) x. Tx t AllegraEra -> Rep (Tx t AllegraEra) x
$cfrom :: forall (t :: TxLevel) x. Tx t AllegraEra -> Rep (Tx t AllegraEra) x
from :: forall x. Tx t AllegraEra -> Rep (Tx t AllegraEra) x
$cto :: forall (t :: TxLevel) x. Rep (Tx t AllegraEra) x -> Tx t AllegraEra
to :: forall x. Rep (Tx t AllegraEra) x -> Tx t AllegraEra
Generic)
mkBasicTx :: forall (l :: TxLevel). TxBody l AllegraEra -> Tx l AllegraEra
mkBasicTx = ShelleyTx l AllegraEra -> Tx l AllegraEra
forall (t :: TxLevel). ShelleyTx t AllegraEra -> Tx t AllegraEra
MkAllegraTx (ShelleyTx l AllegraEra -> Tx l AllegraEra)
-> (TxBody l AllegraEra -> ShelleyTx l AllegraEra)
-> TxBody l AllegraEra
-> Tx l AllegraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody l AllegraEra -> ShelleyTx l AllegraEra
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 AllegraEra) (TxBody l AllegraEra)
bodyTxL = (ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> f (Tx l AllegraEra)
forall (t :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx t AllegraEra -> f (ShelleyTx t AllegraEra))
-> Tx t AllegraEra -> f (Tx t AllegraEra)
allegraTxL ((ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> f (Tx l AllegraEra))
-> ((TxBody l AllegraEra -> f (TxBody l AllegraEra))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> (TxBody l AllegraEra -> f (TxBody l AllegraEra))
-> Tx l AllegraEra
-> f (Tx l AllegraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxBody l AllegraEra -> f (TxBody l AllegraEra))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra)
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 AllegraEra) (TxWits AllegraEra)
witsTxL = (ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> f (Tx l AllegraEra)
forall (t :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx t AllegraEra -> f (ShelleyTx t AllegraEra))
-> Tx t AllegraEra -> f (Tx t AllegraEra)
allegraTxL ((ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> f (Tx l AllegraEra))
-> ((ShelleyTxWits AllegraEra -> f (ShelleyTxWits AllegraEra))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> (ShelleyTxWits AllegraEra -> f (ShelleyTxWits AllegraEra))
-> Tx l AllegraEra
-> f (Tx l AllegraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxWits AllegraEra -> f (TxWits AllegraEra))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra)
(ShelleyTxWits AllegraEra -> f (ShelleyTxWits AllegraEra))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra)
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 AllegraEra) (StrictMaybe (TxAuxData AllegraEra))
auxDataTxL = (ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> f (Tx l AllegraEra)
forall (t :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx t AllegraEra -> f (ShelleyTx t AllegraEra))
-> Tx t AllegraEra -> f (Tx t AllegraEra)
allegraTxL ((ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> f (Tx l AllegraEra))
-> ((StrictMaybe (AllegraTxAuxData AllegraEra)
-> f (StrictMaybe (AllegraTxAuxData AllegraEra)))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra))
-> (StrictMaybe (AllegraTxAuxData AllegraEra)
-> f (StrictMaybe (AllegraTxAuxData AllegraEra)))
-> Tx l AllegraEra
-> f (Tx l AllegraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (TxAuxData AllegraEra)
-> f (StrictMaybe (TxAuxData AllegraEra)))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra)
(StrictMaybe (AllegraTxAuxData AllegraEra)
-> f (StrictMaybe (AllegraTxAuxData AllegraEra)))
-> ShelleyTx l AllegraEra -> f (ShelleyTx l AllegraEra)
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 AllegraEra) Word32
sizeTxF = (ShelleyTx l AllegraEra -> Const r (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> Const r (Tx l AllegraEra)
forall (t :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx t AllegraEra -> f (ShelleyTx t AllegraEra))
-> Tx t AllegraEra -> f (Tx t AllegraEra)
allegraTxL ((ShelleyTx l AllegraEra -> Const r (ShelleyTx l AllegraEra))
-> Tx l AllegraEra -> Const r (Tx l AllegraEra))
-> ((Word32 -> Const r Word32)
-> ShelleyTx l AllegraEra -> Const r (ShelleyTx l AllegraEra))
-> (Word32 -> Const r Word32)
-> Tx l AllegraEra
-> Const r (Tx l AllegraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Word32 -> Const r Word32)
-> ShelleyTx l AllegraEra -> Const r (ShelleyTx l AllegraEra)
SimpleGetter (ShelleyTx l AllegraEra) Word32
forall era (l :: TxLevel).
(HasCallStack, EraTx era) =>
SimpleGetter (ShelleyTx l era) Word32
sizeShelleyTxF
{-# INLINE sizeTxF #-}
validateNativeScript :: forall (l :: TxLevel).
Tx l AllegraEra -> NativeScript AllegraEra -> Bool
validateNativeScript = Tx l AllegraEra -> NativeScript AllegraEra -> 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 AllegraEra -> Tx l AllegraEra -> Int -> Coin
getMinFeeTx PParams AllegraEra
pp Tx l AllegraEra
tx Int
_ = PParams AllegraEra -> Tx l AllegraEra -> Coin
forall era (l :: TxLevel).
EraTx era =>
PParams era -> Tx l era -> Coin
shelleyMinFeeTx PParams AllegraEra
pp Tx l AllegraEra
tx
instance HasEraTxLevel Tx AllegraEra where
toSTxLevel :: forall (l :: TxLevel). Tx l AllegraEra -> STxLevel l AllegraEra
toSTxLevel (MkAllegraTx ShelleyTx {}) = forall era. STxTopLevel TopTx era
STopTxOnly @AllegraEra
instance EqRaw (Tx t AllegraEra) where
eqRaw :: Tx t AllegraEra -> Tx t AllegraEra -> Bool
eqRaw = Tx t AllegraEra -> Tx t AllegraEra -> Bool
forall era (l :: TxLevel).
EraTx era =>
Tx l era -> Tx l era -> Bool
shelleyTxEqRaw
instance Typeable t => DecCBOR (Annotator (Tx t AllegraEra)) where
decCBOR :: forall s. Decoder s (Annotator (Tx t AllegraEra))
decCBOR = (ShelleyTx t AllegraEra -> Tx t AllegraEra)
-> Annotator (ShelleyTx t AllegraEra)
-> Annotator (Tx t AllegraEra)
forall a b. (a -> b) -> Annotator a -> Annotator b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ShelleyTx t AllegraEra -> Tx t AllegraEra
forall (t :: TxLevel). ShelleyTx t AllegraEra -> Tx t AllegraEra
MkAllegraTx (Annotator (ShelleyTx t AllegraEra) -> Annotator (Tx t AllegraEra))
-> Decoder s (Annotator (ShelleyTx t AllegraEra))
-> Decoder s (Annotator (Tx t AllegraEra))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (ShelleyTx t AllegraEra))
forall s. Decoder s (Annotator (ShelleyTx t AllegraEra))
forall a s. DecCBOR a => Decoder s a
decCBOR
allegraTxL :: Lens' (Tx t AllegraEra) (ShelleyTx t AllegraEra)
allegraTxL :: forall (t :: TxLevel) (f :: * -> *).
Functor f =>
(ShelleyTx t AllegraEra -> f (ShelleyTx t AllegraEra))
-> Tx t AllegraEra -> f (Tx t AllegraEra)
allegraTxL = (Tx t AllegraEra -> ShelleyTx t AllegraEra)
-> (Tx t AllegraEra -> ShelleyTx t AllegraEra -> Tx t AllegraEra)
-> Lens
(Tx t AllegraEra)
(Tx t AllegraEra)
(ShelleyTx t AllegraEra)
(ShelleyTx t AllegraEra)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Tx t AllegraEra -> ShelleyTx t AllegraEra
forall (t :: TxLevel). Tx t AllegraEra -> ShelleyTx t AllegraEra
unAllegraTx (\Tx t AllegraEra
x ShelleyTx t AllegraEra
y -> Tx t AllegraEra
x {unAllegraTx = y})
validateTimelock ::
(EraTx era, AllegraEraTxBody era, AllegraEraScript era, NativeScript era ~ Timelock era) =>
Tx t era -> NativeScript era -> Bool
validateTimelock :: forall era (t :: TxLevel).
(EraTx era, AllegraEraTxBody era, AllegraEraScript era,
NativeScript era ~ Timelock era) =>
Tx t era -> NativeScript era -> Bool
validateTimelock Tx t era
tx NativeScript era
timelock = Set (KeyHash Witness)
-> ValidityInterval -> NativeScript era -> Bool
forall era.
(AllegraEraScript era, NativeScript era ~ Timelock era) =>
Set (KeyHash Witness)
-> ValidityInterval -> NativeScript era -> Bool
evalTimelock Set (KeyHash Witness)
vhks (Tx t era
tx Tx t era
-> Getting ValidityInterval (Tx t era) ValidityInterval
-> ValidityInterval
forall s a. s -> Getting a s a -> a
^. (TxBody t era -> Const ValidityInterval (TxBody t era))
-> Tx t era -> Const ValidityInterval (Tx t era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody t era -> Const ValidityInterval (TxBody t era))
-> Tx t era -> Const ValidityInterval (Tx t era))
-> ((ValidityInterval -> Const ValidityInterval ValidityInterval)
-> TxBody t era -> Const ValidityInterval (TxBody t era))
-> Getting ValidityInterval (Tx t era) ValidityInterval
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ValidityInterval -> Const ValidityInterval ValidityInterval)
-> TxBody t era -> Const ValidityInterval (TxBody t era)
forall era (l :: TxLevel).
AllegraEraTxBody era =>
Lens' (TxBody l era) ValidityInterval
forall (l :: TxLevel). Lens' (TxBody l era) ValidityInterval
vldtTxBodyL) NativeScript era
timelock
where
vhks :: Set (KeyHash Witness)
vhks = (WitVKey Witness -> KeyHash Witness)
-> Set (WitVKey Witness) -> Set (KeyHash Witness)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map WitVKey Witness -> KeyHash Witness
forall (kr :: KeyRole). WitVKey kr -> KeyHash Witness
witVKeyHash (Tx t era
tx Tx t era
-> Getting
(Set (WitVKey Witness)) (Tx t era) (Set (WitVKey Witness))
-> Set (WitVKey Witness)
forall s a. s -> Getting a s a -> a
^. (TxWits era -> Const (Set (WitVKey Witness)) (TxWits era))
-> Tx t era -> Const (Set (WitVKey Witness)) (Tx t 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 (Set (WitVKey Witness)) (TxWits era))
-> Tx t era -> Const (Set (WitVKey Witness)) (Tx t era))
-> ((Set (WitVKey Witness)
-> Const (Set (WitVKey Witness)) (Set (WitVKey Witness)))
-> TxWits era -> Const (Set (WitVKey Witness)) (TxWits era))
-> Getting
(Set (WitVKey Witness)) (Tx t era) (Set (WitVKey Witness))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (WitVKey Witness)
-> Const (Set (WitVKey Witness)) (Set (WitVKey Witness)))
-> TxWits era -> Const (Set (WitVKey Witness)) (TxWits era)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits era) (Set (WitVKey Witness))
addrTxWitsL)
{-# INLINEABLE validateTimelock #-}