{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
module Cardano.Api.Experimental.Tx.Internal.SubTransaction
( UnsignedSubTx (..)
, SignedSubTx (..)
, makeUnsignedSubTx
, makeSubTxKeyWitness
, signSubTx
, makeSignedSubTx
, getUnsignedSubTxId
, getSignedSubTxId
, setTxSignedSubTransactions
, AsType (..)
)
where
import Cardano.Api.Experimental.Era
import Cardano.Api.Experimental.Tx.Internal.BodyContent
( MakeUnsignedTxError (..)
, SubTxBodyContent
, TxBodyContent
, TxOut (..)
, bodyGuardCredentials
, collectTxBodyScriptWitnessRequirements
, convCertificates
, convMintValue
, convPParamsToScriptIntegrityHash
, convProposalProcedures
, convReferenceInputs
, convTxIns
, convVotingProcedures
, convWithdrawals
, setTxSubTransactions
, subTxAccountBalanceIntervals
, subTxAuxScripts
, subTxCertificates
, subTxCurrentTreasuryValue
, subTxDirectDeposits
, subTxIns
, subTxInsReference
, subTxMetadata
, subTxMintValue
, subTxOuts
, subTxProposalProcedures
, subTxProtocolParams
, subTxRequiredTopLevelGuards
, subTxTreasuryDonation
, subTxValidityLowerBound
, subTxValidityUpperBound
, subTxVotingProcedures
, subTxWithdrawals
, toAuxiliaryData
)
import Cardano.Api.Experimental.Tx.Internal.TxScriptWitnessRequirements
( TxScriptWitnessRequirements (..)
)
import Cardano.Api.HasTypeProxy (HasTypeProxy (..))
import Cardano.Api.Ledger.Internal.Reexport qualified as L
import Cardano.Api.Serialise.Cbor (SerialiseAsCBOR (..))
import Cardano.Api.Serialise.TextEnvelope.Internal
( HasTextEnvelope (..)
, TextEnvelopeType (..)
)
import Cardano.Api.Tx.Internal.Sign
import Cardano.Api.Tx.Internal.TxIn (TxId, fromShelleyTxId)
import Cardano.Ledger.Api qualified as L
import Cardano.Ledger.Binary qualified as Ledger
import Cardano.Ledger.Core qualified as L (TxLevel (..))
import Cardano.Ledger.Dijkstra.TxBody qualified as L
( DijkstraEraTxBody (accountBalanceIntervalsTxBodyL, requiredTopLevelGuardsL)
)
import Data.ByteString.Lazy qualified as LBS
import Data.Maybe (fromMaybe)
import GHC.Exts (IsList (..))
import Lens.Micro
newtype UnsignedSubTx = UnsignedSubTx (L.Tx L.SubTx (LedgerEra DijkstraEra))
deriving (UnsignedSubTx -> UnsignedSubTx -> Bool
(UnsignedSubTx -> UnsignedSubTx -> Bool)
-> (UnsignedSubTx -> UnsignedSubTx -> Bool) -> Eq UnsignedSubTx
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UnsignedSubTx -> UnsignedSubTx -> Bool
== :: UnsignedSubTx -> UnsignedSubTx -> Bool
$c/= :: UnsignedSubTx -> UnsignedSubTx -> Bool
/= :: UnsignedSubTx -> UnsignedSubTx -> Bool
Eq, Int -> UnsignedSubTx -> ShowS
[UnsignedSubTx] -> ShowS
UnsignedSubTx -> String
(Int -> UnsignedSubTx -> ShowS)
-> (UnsignedSubTx -> String)
-> ([UnsignedSubTx] -> ShowS)
-> Show UnsignedSubTx
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UnsignedSubTx -> ShowS
showsPrec :: Int -> UnsignedSubTx -> ShowS
$cshow :: UnsignedSubTx -> String
show :: UnsignedSubTx -> String
$cshowList :: [UnsignedSubTx] -> ShowS
showList :: [UnsignedSubTx] -> ShowS
Show)
newtype SignedSubTx = SignedSubTx (L.Tx L.SubTx (LedgerEra DijkstraEra))
deriving (SignedSubTx -> SignedSubTx -> Bool
(SignedSubTx -> SignedSubTx -> Bool)
-> (SignedSubTx -> SignedSubTx -> Bool) -> Eq SignedSubTx
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SignedSubTx -> SignedSubTx -> Bool
== :: SignedSubTx -> SignedSubTx -> Bool
$c/= :: SignedSubTx -> SignedSubTx -> Bool
/= :: SignedSubTx -> SignedSubTx -> Bool
Eq, Int -> SignedSubTx -> ShowS
[SignedSubTx] -> ShowS
SignedSubTx -> String
(Int -> SignedSubTx -> ShowS)
-> (SignedSubTx -> String)
-> ([SignedSubTx] -> ShowS)
-> Show SignedSubTx
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SignedSubTx -> ShowS
showsPrec :: Int -> SignedSubTx -> ShowS
$cshow :: SignedSubTx -> String
show :: SignedSubTx -> String
$cshowList :: [SignedSubTx] -> ShowS
showList :: [SignedSubTx] -> ShowS
Show)
instance HasTypeProxy UnsignedSubTx where
data AsType UnsignedSubTx = AsUnsignedSubTx
proxyToAsType :: Proxy UnsignedSubTx -> AsType UnsignedSubTx
proxyToAsType Proxy UnsignedSubTx
_ = AsType UnsignedSubTx
AsUnsignedSubTx
instance HasTypeProxy SignedSubTx where
data AsType SignedSubTx = AsSignedSubTx
proxyToAsType :: Proxy SignedSubTx -> AsType SignedSubTx
proxyToAsType Proxy SignedSubTx
_ = AsType SignedSubTx
AsSignedSubTx
instance SerialiseAsCBOR UnsignedSubTx where
serialiseToCBOR :: UnsignedSubTx -> ByteString
serialiseToCBOR (UnsignedSubTx Tx SubTx (LedgerEra DijkstraEra)
tx) = Version -> Tx SubTx DijkstraEra -> ByteString
forall a. EncCBOR a => Version -> a -> ByteString
Ledger.serialize' Version
subTxProtVer Tx SubTx DijkstraEra
Tx SubTx (LedgerEra DijkstraEra)
tx
deserialiseFromCBOR :: AsType UnsignedSubTx
-> ByteString -> Either DecoderError UnsignedSubTx
deserialiseFromCBOR AsType UnsignedSubTx
_ ByteString
bs =
Tx SubTx DijkstraEra -> UnsignedSubTx
Tx SubTx (LedgerEra DijkstraEra) -> UnsignedSubTx
UnsignedSubTx
(Tx SubTx DijkstraEra -> UnsignedSubTx)
-> Either DecoderError (Tx SubTx DijkstraEra)
-> Either DecoderError UnsignedSubTx
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Version
-> Text
-> (forall s. Decoder s (Annotator (Tx SubTx DijkstraEra)))
-> ByteString
-> Either DecoderError (Tx SubTx DijkstraEra)
forall a.
Version
-> Text
-> (forall s. Decoder s (Annotator a))
-> ByteString
-> Either DecoderError a
Ledger.decodeFullAnnotator Version
subTxProtVer Text
"UnsignedSubTx" Decoder s (Annotator (Tx SubTx DijkstraEra))
forall s. Decoder s (Annotator (Tx SubTx DijkstraEra))
forall a s. DecCBOR a => Decoder s a
Ledger.decCBOR (ByteString -> ByteString
LBS.fromStrict ByteString
bs)
instance SerialiseAsCBOR SignedSubTx where
serialiseToCBOR :: SignedSubTx -> ByteString
serialiseToCBOR (SignedSubTx Tx SubTx (LedgerEra DijkstraEra)
tx) = Version -> Tx SubTx DijkstraEra -> ByteString
forall a. EncCBOR a => Version -> a -> ByteString
Ledger.serialize' Version
subTxProtVer Tx SubTx DijkstraEra
Tx SubTx (LedgerEra DijkstraEra)
tx
deserialiseFromCBOR :: AsType SignedSubTx -> ByteString -> Either DecoderError SignedSubTx
deserialiseFromCBOR AsType SignedSubTx
_ ByteString
bs =
Tx SubTx DijkstraEra -> SignedSubTx
Tx SubTx (LedgerEra DijkstraEra) -> SignedSubTx
SignedSubTx
(Tx SubTx DijkstraEra -> SignedSubTx)
-> Either DecoderError (Tx SubTx DijkstraEra)
-> Either DecoderError SignedSubTx
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Version
-> Text
-> (forall s. Decoder s (Annotator (Tx SubTx DijkstraEra)))
-> ByteString
-> Either DecoderError (Tx SubTx DijkstraEra)
forall a.
Version
-> Text
-> (forall s. Decoder s (Annotator a))
-> ByteString
-> Either DecoderError a
Ledger.decodeFullAnnotator Version
subTxProtVer Text
"SignedSubTx" Decoder s (Annotator (Tx SubTx DijkstraEra))
forall s. Decoder s (Annotator (Tx SubTx DijkstraEra))
forall a s. DecCBOR a => Decoder s a
Ledger.decCBOR (ByteString -> ByteString
LBS.fromStrict ByteString
bs)
subTxProtVer :: L.Version
subTxProtVer :: Version
subTxProtVer = forall era. Era era => Version
L.eraProtVerHigh @(LedgerEra DijkstraEra)
instance HasTextEnvelope UnsignedSubTx where
textEnvelopeTypes :: AsType UnsignedSubTx -> NonEmpty TextEnvelopeType
textEnvelopeTypes AsType UnsignedSubTx
_ = TextEnvelopeType -> NonEmpty TextEnvelopeType
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (TextEnvelopeType -> NonEmpty TextEnvelopeType)
-> TextEnvelopeType -> NonEmpty TextEnvelopeType
forall a b. (a -> b) -> a -> b
$ String -> TextEnvelopeType
TextEnvelopeType String
"Unwitnessed SubTx DijkstraEra"
textEnvelopeDefaultDescr :: UnsignedSubTx -> TextEnvelopeDescr
textEnvelopeDefaultDescr UnsignedSubTx
_ = TextEnvelopeDescr
"Ledger Cddl Format"
instance HasTextEnvelope SignedSubTx where
textEnvelopeTypes :: AsType SignedSubTx -> NonEmpty TextEnvelopeType
textEnvelopeTypes AsType SignedSubTx
_ = TextEnvelopeType -> NonEmpty TextEnvelopeType
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (TextEnvelopeType -> NonEmpty TextEnvelopeType)
-> TextEnvelopeType -> NonEmpty TextEnvelopeType
forall a b. (a -> b) -> a -> b
$ String -> TextEnvelopeType
TextEnvelopeType String
"Witnessed SubTx DijkstraEra"
textEnvelopeDefaultDescr :: SignedSubTx -> TextEnvelopeDescr
textEnvelopeDefaultDescr SignedSubTx
_ = TextEnvelopeDescr
"Ledger Cddl Format"
getUnsignedSubTxId :: UnsignedSubTx -> TxId
getUnsignedSubTxId :: UnsignedSubTx -> TxId
getUnsignedSubTxId (UnsignedSubTx Tx SubTx (LedgerEra DijkstraEra)
tx) = TxId -> TxId
fromShelleyTxId (Tx SubTx DijkstraEra -> TxId
forall era (l :: TxLevel). EraTx era => Tx l era -> TxId
L.txIdTx Tx SubTx DijkstraEra
Tx SubTx (LedgerEra DijkstraEra)
tx)
getSignedSubTxId :: SignedSubTx -> TxId
getSignedSubTxId :: SignedSubTx -> TxId
getSignedSubTxId (SignedSubTx Tx SubTx (LedgerEra DijkstraEra)
tx) = TxId -> TxId
fromShelleyTxId (Tx SubTx DijkstraEra -> TxId
forall era (l :: TxLevel). EraTx era => Tx l era -> TxId
L.txIdTx Tx SubTx DijkstraEra
Tx SubTx (LedgerEra DijkstraEra)
tx)
setTxSignedSubTransactions
:: [SignedSubTx]
-> TxBodyContent (LedgerEra DijkstraEra)
-> TxBodyContent (LedgerEra DijkstraEra)
setTxSignedSubTransactions :: [SignedSubTx]
-> TxBodyContent (LedgerEra DijkstraEra)
-> TxBodyContent (LedgerEra DijkstraEra)
setTxSignedSubTransactions [SignedSubTx]
subTxs = [Tx SubTx DijkstraEra]
-> TxBodyContent DijkstraEra -> TxBodyContent DijkstraEra
forall era.
EraTx era =>
[Tx SubTx era] -> TxBodyContent era -> TxBodyContent era
setTxSubTransactions [Tx SubTx DijkstraEra
Tx SubTx (LedgerEra DijkstraEra)
tx | SignedSubTx Tx SubTx (LedgerEra DijkstraEra)
tx <- [SignedSubTx]
subTxs]
makeUnsignedSubTx
:: SubTxBodyContent (LedgerEra DijkstraEra)
-> Either MakeUnsignedTxError UnsignedSubTx
makeUnsignedSubTx :: SubTxBodyContent (LedgerEra DijkstraEra)
-> Either MakeUnsignedTxError UnsignedSubTx
makeUnsignedSubTx SubTxBodyContent (LedgerEra DijkstraEra)
st = do
let TxScriptWitnessRequirements Set Language
languages [Script (LedgerEra DijkstraEra)]
scripts TxDats (LedgerEra DijkstraEra)
datums Redeemers (LedgerEra DijkstraEra)
redeemers =
forall (l :: TxLevel) era.
IsEra era =>
BodyContent l (LedgerEra era)
-> TxScriptWitnessRequirements (LedgerEra era)
collectTxBodyScriptWitnessRequirements @_ @DijkstraEra SubTxBodyContent (LedgerEra DijkstraEra)
st
scriptIntegrityHash <-
forall era.
IsEra era =>
Maybe (PParams (LedgerEra era))
-> Redeemers (LedgerEra era)
-> TxDats (LedgerEra era)
-> Set Language
-> Either MakeUnsignedTxError (StrictMaybe ScriptIntegrityHash)
convPParamsToScriptIntegrityHash @DijkstraEra
(SubTxBodyContent DijkstraEra -> Maybe (PParams DijkstraEra)
forall era. SubTxBodyContent era -> Maybe (PParams era)
subTxProtocolParams SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
Redeemers (LedgerEra DijkstraEra)
redeemers
TxDats (LedgerEra DijkstraEra)
datums
Set Language
languages
let txAuxData = forall era.
IsEra era =>
TxMetadata
-> [SimpleScript (LedgerEra era)]
-> Maybe (TxAuxData (LedgerEra era))
toAuxiliaryData @DijkstraEra (SubTxBodyContent DijkstraEra -> TxMetadata
forall era. SubTxBodyContent era -> TxMetadata
subTxMetadata SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st) (SubTxBodyContent DijkstraEra -> [SimpleScript DijkstraEra]
forall era. SubTxBodyContent era -> [SimpleScript era]
subTxAuxScripts SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
body =
TxBody SubTx (LedgerEra DijkstraEra)
forall era (l :: TxLevel).
(EraTxBody era, Typeable l) =>
TxBody l era
forall (l :: TxLevel).
Typeable l =>
TxBody l (LedgerEra DijkstraEra)
L.mkBasicTxBody
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) (Set TxIn)
L.inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> Set TxIn
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [(TxIn, AnyWitness DijkstraEra)] -> Set TxIn
forall era. [(TxIn, AnyWitness era)] -> Set TxIn
convTxIns (SubTxBodyContent DijkstraEra -> [(TxIn, AnyWitness DijkstraEra)]
forall era. SubTxBodyContent era -> [(TxIn, AnyWitness era)]
subTxIns SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
BabbageEraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) (Set TxIn)
L.referenceInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> Set TxIn
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxInsReference DijkstraEra -> Set TxIn
forall era. TxInsReference era -> Set TxIn
convReferenceInputs (SubTxBodyContent DijkstraEra -> TxInsReference DijkstraEra
forall era. SubTxBodyContent era -> TxInsReference era
subTxInsReference SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut (LedgerEra DijkstraEra))
-> Identity (StrictSeq (TxOut (LedgerEra DijkstraEra))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra))
(StrictSeq (TxOut (LedgerEra DijkstraEra)))
L.outputsTxBodyL ((StrictSeq (TxOut (LedgerEra DijkstraEra))
-> Identity (StrictSeq (TxOut (LedgerEra DijkstraEra))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> StrictSeq (TxOut (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Item (StrictSeq (TxOut (LedgerEra DijkstraEra)))]
-> StrictSeq (TxOut (LedgerEra DijkstraEra))
forall l. IsList l => [Item l] -> l
fromList [Item (StrictSeq (TxOut (LedgerEra DijkstraEra)))
TxOut DijkstraEra
o | TxOut TxOut DijkstraEra
o <- SubTxBodyContent DijkstraEra -> [TxOut DijkstraEra]
forall era. SubTxBodyContent era -> [TxOut era]
subTxOuts SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st]
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
AllegraEraTxBody era =>
Lens' (TxBody l era) ValidityInterval
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) ValidityInterval
L.vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> ValidityInterval -> Identity ValidityInterval)
-> (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> ValidityInterval -> Identity ValidityInterval
Lens' ValidityInterval (StrictMaybe SlotNo)
L.invalidBeforeL ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> StrictMaybe SlotNo
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe SlotNo -> StrictMaybe SlotNo
forall a. Maybe a -> StrictMaybe a
L.maybeToStrictMaybe (SubTxBodyContent DijkstraEra -> Maybe SlotNo
forall era. SubTxBodyContent era -> Maybe SlotNo
subTxValidityLowerBound SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
AllegraEraTxBody era =>
Lens' (TxBody l era) ValidityInterval
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) ValidityInterval
L.vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> ValidityInterval -> Identity ValidityInterval)
-> (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> ValidityInterval -> Identity ValidityInterval
Lens' ValidityInterval (StrictMaybe SlotNo)
L.invalidHereAfterL ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> StrictMaybe SlotNo
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe SlotNo -> StrictMaybe SlotNo
forall a. Maybe a -> StrictMaybe a
L.maybeToStrictMaybe (SubTxBodyContent DijkstraEra -> Maybe SlotNo
forall era. SubTxBodyContent era -> Maybe SlotNo
subTxValidityUpperBound SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (StrictMaybe ScriptIntegrityHash
-> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash)
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra))
(StrictMaybe ScriptIntegrityHash)
L.scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash
-> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> StrictMaybe ScriptIntegrityHash
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe ScriptIntegrityHash
scriptIntegrityHash
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) Withdrawals
L.withdrawalsTxBodyL ((Withdrawals -> Identity Withdrawals)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> Withdrawals
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxWithdrawals DijkstraEra -> Withdrawals
forall era. TxWithdrawals era -> Withdrawals
convWithdrawals (SubTxBodyContent DijkstraEra -> TxWithdrawals DijkstraEra
forall era. SubTxBodyContent era -> TxWithdrawals era
subTxWithdrawals SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert (LedgerEra DijkstraEra))
-> Identity (StrictSeq (TxCert (LedgerEra DijkstraEra))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra))
(StrictSeq (TxCert (LedgerEra DijkstraEra)))
L.certsTxBodyL ((StrictSeq (TxCert (LedgerEra DijkstraEra))
-> Identity (StrictSeq (TxCert (LedgerEra DijkstraEra))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> StrictSeq (TxCert (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxCertificates (LedgerEra DijkstraEra)
-> StrictSeq (TxCert (LedgerEra DijkstraEra))
forall era.
TxCertificates (LedgerEra era)
-> StrictSeq (TxCert (LedgerEra era))
convCertificates (SubTxBodyContent (LedgerEra DijkstraEra)
-> TxCertificates (LedgerEra DijkstraEra)
forall era. SubTxBodyContent era -> TxCertificates era
subTxCertificates SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (MultiAsset -> Identity MultiAsset)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
MaryEraTxBody era =>
Lens' (TxBody l era) MultiAsset
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) MultiAsset
L.mintTxBodyL ((MultiAsset -> Identity MultiAsset)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> MultiAsset
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxMintValue DijkstraEra -> MultiAsset
forall era. TxMintValue era -> MultiAsset
convMintValue (SubTxBodyContent DijkstraEra -> TxMintValue DijkstraEra
forall era. SubTxBodyContent era -> TxMintValue era
subTxMintValue SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (StrictMaybe TxAuxDataHash -> Identity (StrictMaybe TxAuxDataHash))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictMaybe TxAuxDataHash)
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra)) (StrictMaybe TxAuxDataHash)
L.auxDataHashTxBodyL ((StrictMaybe TxAuxDataHash
-> Identity (StrictMaybe TxAuxDataHash))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> StrictMaybe TxAuxDataHash
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe TxAuxDataHash -> StrictMaybe TxAuxDataHash
forall a. Maybe a -> StrictMaybe a
L.maybeToStrictMaybe (TxAuxData DijkstraEra -> TxAuxDataHash
forall era. EraTxAuxData era => TxAuxData era -> TxAuxDataHash
L.hashTxAuxData (TxAuxData DijkstraEra -> TxAuxDataHash)
-> Maybe (TxAuxData DijkstraEra) -> Maybe TxAuxDataHash
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (TxAuxData DijkstraEra)
Maybe (TxAuxData (LedgerEra DijkstraEra))
txAuxData)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (OSet (ProposalProcedure (LedgerEra DijkstraEra))
-> Identity (OSet (ProposalProcedure (LedgerEra DijkstraEra))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (OSet (ProposalProcedure era))
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra))
(OSet (ProposalProcedure (LedgerEra DijkstraEra)))
L.proposalProceduresTxBodyL ((OSet (ProposalProcedure (LedgerEra DijkstraEra))
-> Identity (OSet (ProposalProcedure (LedgerEra DijkstraEra))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> OSet (ProposalProcedure (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe (TxProposalProcedures (LedgerEra DijkstraEra))
-> OSet (ProposalProcedure (LedgerEra DijkstraEra))
forall era.
IsEra era =>
Maybe (TxProposalProcedures (LedgerEra era))
-> OSet (ProposalProcedure (LedgerEra era))
convProposalProcedures (SubTxBodyContent DijkstraEra
-> Maybe (TxProposalProcedures DijkstraEra)
forall era.
SubTxBodyContent era -> Maybe (TxProposalProcedures era)
subTxProposalProcedures SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (VotingProcedures (LedgerEra DijkstraEra)
-> Identity (VotingProcedures (LedgerEra DijkstraEra)))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (VotingProcedures era)
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra))
(VotingProcedures (LedgerEra DijkstraEra))
L.votingProceduresTxBodyL ((VotingProcedures (LedgerEra DijkstraEra)
-> Identity (VotingProcedures (LedgerEra DijkstraEra)))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> VotingProcedures (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe (TxVotingProcedures (LedgerEra DijkstraEra))
-> VotingProcedures (LedgerEra DijkstraEra)
forall era.
Maybe (TxVotingProcedures (LedgerEra era))
-> VotingProcedures (LedgerEra era)
convVotingProcedures (SubTxBodyContent DijkstraEra
-> Maybe (TxVotingProcedures DijkstraEra)
forall era. SubTxBodyContent era -> Maybe (TxVotingProcedures era)
subTxVotingProcedures SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) Coin
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) Coin
L.treasuryDonationTxBodyL ((Coin -> Identity Coin)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> Coin
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> Maybe Coin -> Coin
forall a. a -> Maybe a -> a
fromMaybe (Integer -> Coin
L.Coin Integer
0) (SubTxBodyContent DijkstraEra -> Maybe Coin
forall era. SubTxBodyContent era -> Maybe Coin
subTxTreasuryDonation SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe Coin)
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) (StrictMaybe Coin)
L.currentTreasuryValueTxBodyL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> StrictMaybe Coin
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe Coin -> StrictMaybe Coin
forall a. Maybe a -> StrictMaybe a
L.maybeToStrictMaybe (SubTxBodyContent DijkstraEra -> Maybe Coin
forall era. SubTxBodyContent era -> Maybe Coin
subTxCurrentTreasuryValue SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st)
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (OSet (Credential Guard) -> Identity (OSet (Credential Guard)))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (OSet (Credential Guard))
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) (OSet (Credential Guard))
L.guardsTxBodyL ((OSet (Credential Guard) -> Identity (OSet (Credential Guard)))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> OSet (Credential Guard)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SubTxBodyContent DijkstraEra -> OSet (Credential Guard)
forall (l :: TxLevel) era.
BodyContent l era -> OSet (Credential Guard)
bodyGuardCredentials SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (Map
(Credential Guard) (StrictMaybe (Data (LedgerEra DijkstraEra)))
-> Identity
(Map
(Credential Guard) (StrictMaybe (Data (LedgerEra DijkstraEra)))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens'
(TxBody l era) (Map (Credential Guard) (StrictMaybe (Data era)))
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra))
(Map
(Credential Guard) (StrictMaybe (Data (LedgerEra DijkstraEra))))
L.requiredTopLevelGuardsL ((Map
(Credential Guard) (StrictMaybe (Data (LedgerEra DijkstraEra)))
-> Identity
(Map
(Credential Guard) (StrictMaybe (Data (LedgerEra DijkstraEra)))))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> Map
(Credential Guard) (StrictMaybe (Data (LedgerEra DijkstraEra)))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SubTxBodyContent (LedgerEra DijkstraEra)
-> Map
(Credential Guard) (StrictMaybe (Data (LedgerEra DijkstraEra)))
forall era.
SubTxBodyContent era
-> Map (Credential Guard) (StrictMaybe (Data era))
subTxRequiredTopLevelGuards SubTxBodyContent (LedgerEra DijkstraEra)
st
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (DirectDeposits -> Identity DirectDeposits)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) DirectDeposits
forall (l :: TxLevel).
Lens' (TxBody l (LedgerEra DijkstraEra)) DirectDeposits
L.directDepositsTxBodyL ((DirectDeposits -> Identity DirectDeposits)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> DirectDeposits
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SubTxBodyContent DijkstraEra -> DirectDeposits
forall era. SubTxBodyContent era -> DirectDeposits
subTxDirectDeposits SubTxBodyContent DijkstraEra
SubTxBodyContent (LedgerEra DijkstraEra)
st
TxBody SubTx (LedgerEra DijkstraEra)
-> (TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra))
-> TxBody SubTx (LedgerEra DijkstraEra)
forall a b. a -> (a -> b) -> b
& (AccountBalanceIntervals (LedgerEra DijkstraEra)
-> Identity (AccountBalanceIntervals (LedgerEra DijkstraEra)))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra))
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (AccountBalanceIntervals era)
forall (l :: TxLevel).
Lens'
(TxBody l (LedgerEra DijkstraEra))
(AccountBalanceIntervals (LedgerEra DijkstraEra))
L.accountBalanceIntervalsTxBodyL ((AccountBalanceIntervals (LedgerEra DijkstraEra)
-> Identity (AccountBalanceIntervals (LedgerEra DijkstraEra)))
-> TxBody SubTx (LedgerEra DijkstraEra)
-> Identity (TxBody SubTx (LedgerEra DijkstraEra)))
-> AccountBalanceIntervals (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
-> TxBody SubTx (LedgerEra DijkstraEra)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SubTxBodyContent (LedgerEra DijkstraEra)
-> AccountBalanceIntervals (LedgerEra DijkstraEra)
forall era. SubTxBodyContent era -> AccountBalanceIntervals era
subTxAccountBalanceIntervals SubTxBodyContent (LedgerEra DijkstraEra)
st
scriptWitnesses =
TxWits DijkstraEra
forall era. EraTxWits era => TxWits era
L.mkBasicTxWits
TxWits DijkstraEra
-> (TxWits DijkstraEra -> TxWits DijkstraEra) -> TxWits DijkstraEra
forall a b. a -> (a -> b) -> b
& (Map ScriptHash (Script DijkstraEra)
-> Identity (Map ScriptHash (Script DijkstraEra)))
-> TxWits DijkstraEra -> Identity (TxWits DijkstraEra)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Map ScriptHash (Script era))
Lens' (TxWits DijkstraEra) (Map ScriptHash (Script DijkstraEra))
L.scriptTxWitsL ((Map ScriptHash (Script DijkstraEra)
-> Identity (Map ScriptHash (Script DijkstraEra)))
-> TxWits DijkstraEra -> Identity (TxWits DijkstraEra))
-> Map ScriptHash (Script DijkstraEra)
-> TxWits DijkstraEra
-> TxWits DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Item (Map ScriptHash (Script DijkstraEra))]
-> Map ScriptHash (Script DijkstraEra)
forall l. IsList l => [Item l] -> l
fromList [(Script DijkstraEra -> ScriptHash
forall era. EraScript era => Script era -> ScriptHash
L.hashScript Script DijkstraEra
AlonzoScript DijkstraEra
sw, AlonzoScript DijkstraEra
sw) | AlonzoScript DijkstraEra
sw <- [Script (LedgerEra DijkstraEra)]
[AlonzoScript DijkstraEra]
scripts]
TxWits DijkstraEra
-> (TxWits DijkstraEra -> AlonzoTxWits DijkstraEra)
-> AlonzoTxWits DijkstraEra
forall a b. a -> (a -> b) -> b
& (TxDats DijkstraEra -> Identity (TxDats DijkstraEra))
-> TxWits DijkstraEra -> Identity (TxWits DijkstraEra)
(TxDats DijkstraEra -> Identity (TxDats DijkstraEra))
-> TxWits DijkstraEra -> Identity (AlonzoTxWits DijkstraEra)
forall era. AlonzoEraTxWits era => Lens' (TxWits era) (TxDats era)
Lens' (TxWits DijkstraEra) (TxDats DijkstraEra)
L.datsTxWitsL ((TxDats DijkstraEra -> Identity (TxDats DijkstraEra))
-> TxWits DijkstraEra -> Identity (AlonzoTxWits DijkstraEra))
-> TxDats DijkstraEra
-> TxWits DijkstraEra
-> AlonzoTxWits DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxDats DijkstraEra
TxDats (LedgerEra DijkstraEra)
datums
AlonzoTxWits DijkstraEra
-> (AlonzoTxWits DijkstraEra -> AlonzoTxWits DijkstraEra)
-> AlonzoTxWits DijkstraEra
forall a b. a -> (a -> b) -> b
& (Redeemers DijkstraEra -> Identity (Redeemers DijkstraEra))
-> TxWits DijkstraEra -> Identity (TxWits DijkstraEra)
(Redeemers DijkstraEra -> Identity (Redeemers DijkstraEra))
-> AlonzoTxWits DijkstraEra -> Identity (AlonzoTxWits DijkstraEra)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits DijkstraEra) (Redeemers DijkstraEra)
L.rdmrsTxWitsL ((Redeemers DijkstraEra -> Identity (Redeemers DijkstraEra))
-> AlonzoTxWits DijkstraEra -> Identity (AlonzoTxWits DijkstraEra))
-> Redeemers DijkstraEra
-> AlonzoTxWits DijkstraEra
-> AlonzoTxWits DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Redeemers DijkstraEra
Redeemers (LedgerEra DijkstraEra)
redeemers
Right $
UnsignedSubTx $
L.mkBasicTx body
& L.witsTxL .~ scriptWitnesses
& L.auxDataTxL .~ L.maybeToStrictMaybe txAuxData
makeSubTxKeyWitness
:: UnsignedSubTx
-> ShelleyWitnessSigningKey
-> L.WitVKey L.Witness
makeSubTxKeyWitness :: UnsignedSubTx -> ShelleyWitnessSigningKey -> WitVKey Witness
makeSubTxKeyWitness (UnsignedSubTx Tx SubTx (LedgerEra DijkstraEra)
unsigned) ShelleyWitnessSigningKey
wsk =
HasCallStack =>
Hash HASH EraIndependentTxBody
-> ShelleyWitnessSigningKey -> WitVKey Witness
Hash HASH EraIndependentTxBody
-> ShelleyWitnessSigningKey -> WitVKey Witness
makeShelleyKeyWitnessFromHash (TxBody SubTx DijkstraEra -> Hash HASH EraIndependentTxBody
forall (l :: TxLevel) era.
HashAnnotated (TxBody l era) EraIndependentTxBody =>
TxBody l era -> Hash HASH EraIndependentTxBody
hashTxBody (Tx SubTx DijkstraEra
Tx SubTx (LedgerEra DijkstraEra)
unsigned Tx SubTx DijkstraEra
-> Getting
(TxBody SubTx DijkstraEra)
(Tx SubTx DijkstraEra)
(TxBody SubTx DijkstraEra)
-> TxBody SubTx DijkstraEra
forall s a. s -> Getting a s a -> a
^. Getting
(TxBody SubTx DijkstraEra)
(Tx SubTx DijkstraEra)
(TxBody SubTx DijkstraEra)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel).
Lens' (Tx l DijkstraEra) (TxBody l DijkstraEra)
L.bodyTxL)) ShelleyWitnessSigningKey
wsk
signSubTx
:: [L.BootstrapWitness]
-> [L.WitVKey L.Witness]
-> UnsignedSubTx
-> SignedSubTx
signSubTx :: [BootstrapWitness]
-> [WitVKey Witness] -> UnsignedSubTx -> SignedSubTx
signSubTx [BootstrapWitness]
bootstrapWits [WitVKey Witness]
shelleyKeyWits (UnsignedSubTx Tx SubTx (LedgerEra DijkstraEra)
unsigned) =
Tx SubTx (LedgerEra DijkstraEra) -> SignedSubTx
SignedSubTx (Tx SubTx (LedgerEra DijkstraEra) -> SignedSubTx)
-> Tx SubTx (LedgerEra DijkstraEra) -> SignedSubTx
forall a b. (a -> b) -> a -> b
$ [BootstrapWitness]
-> [WitVKey Witness]
-> Tx SubTx (LedgerEra DijkstraEra)
-> Tx SubTx (LedgerEra DijkstraEra)
forall era (l :: TxLevel).
EraTx era =>
[BootstrapWitness] -> [WitVKey Witness] -> Tx l era -> Tx l era
addKeyWitnesses [BootstrapWitness]
bootstrapWits [WitVKey Witness]
shelleyKeyWits Tx SubTx (LedgerEra DijkstraEra)
unsigned
makeSignedSubTx
:: [ShelleyWitnessSigningKey]
-> SubTxBodyContent (LedgerEra DijkstraEra)
-> Either MakeUnsignedTxError SignedSubTx
makeSignedSubTx :: [ShelleyWitnessSigningKey]
-> SubTxBodyContent (LedgerEra DijkstraEra)
-> Either MakeUnsignedTxError SignedSubTx
makeSignedSubTx [ShelleyWitnessSigningKey]
keys SubTxBodyContent (LedgerEra DijkstraEra)
st = do
unsigned <- SubTxBodyContent (LedgerEra DijkstraEra)
-> Either MakeUnsignedTxError UnsignedSubTx
makeUnsignedSubTx SubTxBodyContent (LedgerEra DijkstraEra)
st
Right $ signSubTx [] (map (makeSubTxKeyWitness unsigned) keys) unsigned