{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}
module Cardano.Api.Compatible.Tx
( AnyProtocolUpdate (..)
, AnyVote (..)
, createCompatibleTx
, addWitnesses
)
where
import Cardano.Api.Address (StakeCredential)
import Cardano.Api.Era
import Cardano.Api.Experimental.AnyScriptWitness
import Cardano.Api.Experimental.Tx qualified as Exp
import Cardano.Api.Experimental.Tx.Internal.AnyWitness
import Cardano.Api.Experimental.Tx.Internal.AnyWitness qualified as Exp
import Cardano.Api.Experimental.Tx.Internal.Certificate qualified as Exp
import Cardano.Api.Plutus.Internal.Script
import Cardano.Api.ProtocolParameters
import Cardano.Api.Tx.Internal.Body hiding
( convCertificates
, indexTxCertificates
, indexWitnessedTxProposalProcedures
)
import Cardano.Api.Tx.Internal.Sign
import Cardano.Api.Value.Internal
import Cardano.Ledger.Alonzo.Tx qualified as L
import Cardano.Ledger.Alonzo.TxWits qualified as Alonzo
import Cardano.Ledger.Api qualified as L
import Data.Map.Strict qualified as Map
import Data.Maybe
import Data.Maybe.Strict
import Data.Monoid
import Data.OSet.Strict (OSet)
import Data.Sequence.Strict qualified as Seq
import GHC.Exts (IsList (..))
import GHC.Stack
import Lens.Micro hiding (ix)
data AnyProtocolUpdate era where
ProtocolUpdate
:: ShelleyToBabbageEra era
-> UpdateProposal
-> AnyProtocolUpdate era
ProposalProcedures
:: ConwayEraOnwards era
-> Exp.TxProposalProcedures (ShelleyLedgerEra era)
-> AnyProtocolUpdate era
NoPParamsUpdate
:: ShelleyBasedEra era
-> AnyProtocolUpdate era
data AnyVote era where
VotingProcedures
:: ConwayEraOnwards era
-> Exp.TxVotingProcedures (ShelleyLedgerEra era)
-> AnyVote era
NoVotes :: AnyVote era
createCompatibleTx
:: forall era
. ShelleyBasedEra era
-> [TxIn]
-> [TxOut CtxTx era]
-> Lovelace
-> AnyProtocolUpdate era
-> AnyVote era
-> Exp.TxCertificates (ShelleyLedgerEra era)
-> Either ProtocolParametersConversionError (Tx era)
createCompatibleTx :: forall era.
ShelleyBasedEra era
-> [TxIn]
-> [TxOut CtxTx era]
-> Lovelace
-> AnyProtocolUpdate era
-> AnyVote era
-> TxCertificates (ShelleyLedgerEra era)
-> Either ProtocolParametersConversionError (Tx era)
createCompatibleTx ShelleyBasedEra era
sbe [TxIn]
ins [TxOut CtxTx era]
outs Lovelace
txFee' AnyProtocolUpdate era
anyProtocolUpdate AnyVote era
anyVote TxCertificates (ShelleyLedgerEra era)
txCertificates' =
ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
Either ProtocolParametersConversionError (Tx era))
-> Either ProtocolParametersConversionError (Tx era)
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
sbe ((ShelleyBasedEraConstraints era =>
Either ProtocolParametersConversionError (Tx era))
-> Either ProtocolParametersConversionError (Tx era))
-> (ShelleyBasedEraConstraints era =>
Either ProtocolParametersConversionError (Tx era))
-> Either ProtocolParametersConversionError (Tx era)
forall a b. (a -> b) -> a -> b
$ do
(updateTxBody, extraScriptWitnesses) <-
case AnyProtocolUpdate era
anyProtocolUpdate of
ProtocolUpdate ShelleyToBabbageEra era
shelleyToBabbageEra UpdateProposal
updateProposal -> do
ledgerPParamsUpdate <- ShelleyBasedEra era
-> UpdateProposal
-> Either
ProtocolParametersConversionError (Update (ShelleyLedgerEra era))
forall era.
ShelleyBasedEra era
-> UpdateProposal
-> Either
ProtocolParametersConversionError (Update (ShelleyLedgerEra era))
toLedgerUpdate ShelleyBasedEra era
sbe UpdateProposal
updateProposal
let updateTxBody :: Endo (L.TxBody (ShelleyLedgerEra era)) =
shelleyToBabbageEraConstraints shelleyToBabbageEra $
Endo $ \TxBody (ShelleyLedgerEra era)
txb ->
TxBody (ShelleyLedgerEra era)
txb TxBody (ShelleyLedgerEra era)
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Update (ShelleyLedgerEra era))
-> Identity (StrictMaybe (Update (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (Update era))
Lens'
(TxBody (ShelleyLedgerEra era))
(StrictMaybe (Update (ShelleyLedgerEra era)))
L.updateTxBodyL ((StrictMaybe (Update (ShelleyLedgerEra era))
-> Identity (StrictMaybe (Update (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> StrictMaybe (Update (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Update (ShelleyLedgerEra era)
-> StrictMaybe (Update (ShelleyLedgerEra era))
forall a. a -> StrictMaybe a
SJust Update (ShelleyLedgerEra era)
ledgerPParamsUpdate
pure (updateTxBody, [])
NoPParamsUpdate ShelleyBasedEra era
_ ->
(Endo (TxBody (ShelleyLedgerEra era)),
[(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))])
-> Either
ProtocolParametersConversionError
(Endo (TxBody (ShelleyLedgerEra era)),
[(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))])
forall a. a -> Either ProtocolParametersConversionError a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Endo (TxBody (ShelleyLedgerEra era))
forall a. Monoid a => a
mempty, [])
ProposalProcedures ConwayEraOnwards era
conwayOnwards TxProposalProcedures (ShelleyLedgerEra era)
proposalProcedures -> do
let Exp.TxProposalProcedures OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era))
propMap = TxProposalProcedures (ShelleyLedgerEra era)
proposalProcedures
OSet (ProposalProcedure (ShelleyLedgerEra era))
proposals :: OSet (L.ProposalProcedure (ShelleyLedgerEra era)) = [Item (OSet (ProposalProcedure (ShelleyLedgerEra era)))]
-> OSet (ProposalProcedure (ShelleyLedgerEra era))
forall l. IsList l => [Item l] -> l
fromList ([Item (OSet (ProposalProcedure (ShelleyLedgerEra era)))]
-> OSet (ProposalProcedure (ShelleyLedgerEra era)))
-> [Item (OSet (ProposalProcedure (ShelleyLedgerEra era)))]
-> OSet (ProposalProcedure (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ (Item (OSet (ProposalProcedure (ShelleyLedgerEra era))),
AnyWitness (ShelleyLedgerEra era))
-> Item (OSet (ProposalProcedure (ShelleyLedgerEra era)))
forall a b. (a, b) -> a
fst ((Item (OSet (ProposalProcedure (ShelleyLedgerEra era))),
AnyWitness (ShelleyLedgerEra era))
-> Item (OSet (ProposalProcedure (ShelleyLedgerEra era))))
-> [(Item (OSet (ProposalProcedure (ShelleyLedgerEra era))),
AnyWitness (ShelleyLedgerEra era))]
-> [Item (OSet (ProposalProcedure (ShelleyLedgerEra era)))]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
[(Item (OSet (ProposalProcedure (ShelleyLedgerEra era))),
AnyWitness (ShelleyLedgerEra era))])
-> [(Item (OSet (ProposalProcedure (ShelleyLedgerEra era))),
AnyWitness (ShelleyLedgerEra era))]
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
sbe (OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era))
-> [Item
(OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era)))]
forall l. IsList l => l -> [Item l]
toList OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era))
propMap)
proposalWitnesses :: [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
proposalWitnesses =
[ (ScriptWitnessIndex
ix, AnyWitness (ShelleyLedgerEra era)
witness)
| (ProposalProcedure (ShelleyLedgerEra era)
_, (ScriptWitnessIndex
ix, AnyWitness (ShelleyLedgerEra era)
witness)) <-
ConwayEraOnwards era
-> TxProposalProcedures (ShelleyLedgerEra era)
-> [(ProposalProcedure (ShelleyLedgerEra era),
(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era)))]
forall era.
ConwayEraOnwards era
-> TxProposalProcedures (ShelleyLedgerEra era)
-> [(ProposalProcedure (ShelleyLedgerEra era),
(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era)))]
indexWitnessedTxProposalProcedures ConwayEraOnwards era
conwayOnwards TxProposalProcedures (ShelleyLedgerEra era)
proposalProcedures
]
referenceInputs :: [TxIn]
referenceInputs =
[ TxIn -> TxIn
toShelleyTxIn TxIn
txIn
| (ScriptWitnessIndex
_, AnyWitness (ShelleyLedgerEra era)
wit) <- [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
proposalWitnesses
, TxIn
txIn <- Maybe TxIn -> [TxIn]
forall a. Maybe a -> [a]
maybeToList (Maybe TxIn -> [TxIn]) -> Maybe TxIn -> [TxIn]
forall a b. (a -> b) -> a -> b
$ AnyWitness (ShelleyLedgerEra era) -> Maybe TxIn
forall era. AnyWitness era -> Maybe TxIn
getAnyWitnessReferenceInput AnyWitness (ShelleyLedgerEra era)
wit
]
Endo (TxBody (ShelleyLedgerEra era))
updateTxBody :: Endo (L.TxBody (ShelleyLedgerEra era)) =
ConwayEraOnwards era
-> (ConwayEraOnwardsConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall era a.
ConwayEraOnwards era -> (ConwayEraOnwardsConstraints era => a) -> a
conwayEraOnwardsConstraints ConwayEraOnwards era
conwayOnwards ((ConwayEraOnwardsConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era)))
-> (ConwayEraOnwardsConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$
(TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a. (a -> a) -> Endo a
Endo ((TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era)))
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$
((Set TxIn -> Identity (Set TxIn))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era. BabbageEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody (ShelleyLedgerEra era)) (Set TxIn)
L.referenceInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> (Set TxIn -> Set TxIn)
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (Set TxIn -> Set TxIn -> Set TxIn
forall a. Semigroup a => a -> a -> a
<> [Item (Set TxIn)] -> Set TxIn
forall l. IsList l => [Item l] -> l
fromList [Item (Set TxIn)]
[TxIn]
referenceInputs))
(TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((OSet (ProposalProcedure (ShelleyLedgerEra era))
-> Identity (OSet (ProposalProcedure (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era.
ConwayEraTxBody era =>
Lens' (TxBody era) (OSet (ProposalProcedure era))
Lens'
(TxBody (ShelleyLedgerEra era))
(OSet (ProposalProcedure (ShelleyLedgerEra era)))
L.proposalProceduresTxBodyL ((OSet (ProposalProcedure (ShelleyLedgerEra era))
-> Identity (OSet (ProposalProcedure (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> OSet (ProposalProcedure (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ OSet (ProposalProcedure (ShelleyLedgerEra era))
proposals)
(Endo (TxBody (ShelleyLedgerEra era)),
[(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))])
-> Either
ProtocolParametersConversionError
(Endo (TxBody (ShelleyLedgerEra era)),
[(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))])
forall a. a -> Either ProtocolParametersConversionError a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Endo (TxBody (ShelleyLedgerEra era))
updateTxBody, [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
proposalWitnesses)
let txbody =
ShelleyBasedEra era
-> [TxIn]
-> [TxOut CtxTx era]
-> Lovelace
-> TxBody (ShelleyLedgerEra era)
forall era ctx.
HasCallStack =>
ShelleyBasedEra era
-> [TxIn]
-> [TxOut ctx era]
-> Lovelace
-> TxBody (ShelleyLedgerEra era)
createCommonTxBody ShelleyBasedEra era
sbe [TxIn]
ins [TxOut CtxTx era]
outs Lovelace
txFee'
TxBody (ShelleyLedgerEra era)
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& [Endo (TxBody (ShelleyLedgerEra era))]
-> TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era)
forall {a}. [Endo a] -> a -> a
appEndos [Endo (TxBody (ShelleyLedgerEra era))
setCerts, Endo (TxBody (ShelleyLedgerEra era))
setRefInputs, Endo (TxBody (ShelleyLedgerEra era))
updateTxBody]
updateVotingProcedures =
case AnyVote era
anyVote of
AnyVote era
NoVotes -> Tx (ShelleyLedgerEra era) -> Tx (ShelleyLedgerEra era)
forall a. a -> a
id
VotingProcedures ConwayEraOnwards era
conwayOnwards (Exp.TxVotingProcedures VotingProcedures (ShelleyLedgerEra era)
procedures Map Voter (AnyWitness (ShelleyLedgerEra era))
_) ->
ConwayEraOnwards era
-> VotingProcedures (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
overwriteVotingProcedures ConwayEraOnwards era
conwayOnwards VotingProcedures (ShelleyLedgerEra era)
procedures
apiScriptWitnesses =
[ (ScriptWitnessIndex
ix, AnyWitness (ShelleyLedgerEra era)
witness)
| (ScriptWitnessIndex
ix, Certificate (ShelleyLedgerEra era)
_, StakeCredential
_, AnyWitness (ShelleyLedgerEra era)
witness) <- [(ScriptWitnessIndex, Certificate (ShelleyLedgerEra era),
StakeCredential, AnyWitness (ShelleyLedgerEra era))]
indexedTxCerts
]
pure
. ShelleyTx sbe
$ L.mkBasicTx txbody
& L.witsTxL
%~ setScriptWitnesses (apiScriptWitnesses <> extraScriptWitnesses)
& updateVotingProcedures
where
era :: CardanoEra era
era = ShelleyBasedEra era -> CardanoEra era
forall era. ShelleyBasedEra era -> CardanoEra era
forall (eon :: * -> *) era.
ToCardanoEra eon =>
eon era -> CardanoEra era
toCardanoEra ShelleyBasedEra era
sbe
appEndos :: [Endo a] -> a -> a
appEndos = Endo a -> a -> a
forall a. Endo a -> a -> a
appEndo (Endo a -> a -> a) -> ([Endo a] -> Endo a) -> [Endo a] -> a -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Endo a] -> Endo a
forall a. Monoid a => [a] -> a
mconcat
setCerts :: Endo (L.TxBody (ShelleyLedgerEra era))
setCerts :: Endo (TxBody (ShelleyLedgerEra era))
setCerts =
ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
sbe ((ShelleyBasedEraConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era)))
-> (ShelleyBasedEraConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$
(TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a. (a -> a) -> Endo a
Endo ((TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era)))
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$
(StrictSeq (TxCert (ShelleyLedgerEra era))
-> Identity (StrictSeq (TxCert (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxCert era))
Lens'
(TxBody (ShelleyLedgerEra era))
(StrictSeq (TxCert (ShelleyLedgerEra era)))
L.certsTxBodyL ((StrictSeq (TxCert (ShelleyLedgerEra era))
-> Identity (StrictSeq (TxCert (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> StrictSeq (TxCert (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxCertificates (ShelleyLedgerEra era)
-> StrictSeq (TxCert (ShelleyLedgerEra era))
forall era.
TxCertificates (ShelleyLedgerEra era)
-> StrictSeq (TxCert (ShelleyLedgerEra era))
convCertificates TxCertificates (ShelleyLedgerEra era)
txCertificates'
setRefInputs :: Endo (L.TxBody (ShelleyLedgerEra era))
setRefInputs :: Endo (TxBody (ShelleyLedgerEra era))
setRefInputs = do
let refInputs :: [TxIn]
refInputs =
[ TxIn -> TxIn
toShelleyTxIn TxIn
refInput
| (ScriptWitnessIndex
_, Certificate (ShelleyLedgerEra era)
_, StakeCredential
_, AnyWitness (ShelleyLedgerEra era)
wit) <- [(ScriptWitnessIndex, Certificate (ShelleyLedgerEra era),
StakeCredential, AnyWitness (ShelleyLedgerEra era))]
indexedTxCerts
, TxIn
refInput <- Maybe TxIn -> [TxIn]
forall a. Maybe a -> [a]
maybeToList (Maybe TxIn -> [TxIn]) -> Maybe TxIn -> [TxIn]
forall a b. (a -> b) -> a -> b
$ AnyWitness (ShelleyLedgerEra era) -> Maybe TxIn
forall era. AnyWitness era -> Maybe TxIn
getAnyWitnessReferenceInput AnyWitness (ShelleyLedgerEra era)
wit
]
CardanoEra era
-> (BabbageEraOnwards era -> Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall (eon :: * -> *) a era.
(Eon eon, Monoid a) =>
CardanoEra era -> (eon era -> a) -> a
monoidForEraInEon CardanoEra era
era ((BabbageEraOnwards era -> Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era)))
-> (BabbageEraOnwards era -> Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ \BabbageEraOnwards era
beo ->
BabbageEraOnwards era
-> (BabbageEraOnwardsConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall era a.
BabbageEraOnwards era
-> (BabbageEraOnwardsConstraints era => a) -> a
babbageEraOnwardsConstraints BabbageEraOnwards era
beo ((BabbageEraOnwardsConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era)))
-> (BabbageEraOnwardsConstraints era =>
Endo (TxBody (ShelleyLedgerEra era)))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$
(TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a. (a -> a) -> Endo a
Endo ((TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era)))
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> Endo (TxBody (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$
(Set TxIn -> Identity (Set TxIn))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era. BabbageEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody (ShelleyLedgerEra era)) (Set TxIn)
L.referenceInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> Set TxIn
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Item (Set TxIn)] -> Set TxIn
forall l. IsList l => [Item l] -> l
fromList [Item (Set TxIn)]
[TxIn]
refInputs
overwriteVotingProcedures
:: ConwayEraOnwards era
-> L.VotingProcedures (ShelleyLedgerEra era)
-> L.Tx (ShelleyLedgerEra era)
-> L.Tx (ShelleyLedgerEra era)
overwriteVotingProcedures :: ConwayEraOnwards era
-> VotingProcedures (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
overwriteVotingProcedures ConwayEraOnwards era
conwayOnwards VotingProcedures (ShelleyLedgerEra era)
votingProcedures =
ConwayEraOnwards era
-> (ConwayEraOnwardsConstraints era =>
Tx (ShelleyLedgerEra era) -> Tx (ShelleyLedgerEra era))
-> Tx (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
forall era a.
ConwayEraOnwards era -> (ConwayEraOnwardsConstraints era => a) -> a
conwayEraOnwardsConstraints ConwayEraOnwards era
conwayOnwards ((ConwayEraOnwardsConstraints era =>
Tx (ShelleyLedgerEra era) -> Tx (ShelleyLedgerEra era))
-> Tx (ShelleyLedgerEra era) -> Tx (ShelleyLedgerEra era))
-> (ConwayEraOnwardsConstraints era =>
Tx (ShelleyLedgerEra era) -> Tx (ShelleyLedgerEra era))
-> Tx (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
((TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> Tx (ShelleyLedgerEra era)
-> Identity (Tx (ShelleyLedgerEra era))
forall era. EraTx era => Lens' (Tx era) (TxBody era)
Lens' (Tx (ShelleyLedgerEra era)) (TxBody (ShelleyLedgerEra era))
L.bodyTxL ((TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> Tx (ShelleyLedgerEra era)
-> Identity (Tx (ShelleyLedgerEra era)))
-> ((VotingProcedures (ShelleyLedgerEra era)
-> Identity (VotingProcedures (ShelleyLedgerEra era)))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> (VotingProcedures (ShelleyLedgerEra era)
-> Identity (VotingProcedures (ShelleyLedgerEra era)))
-> Tx (ShelleyLedgerEra era)
-> Identity (Tx (ShelleyLedgerEra era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VotingProcedures (ShelleyLedgerEra era)
-> Identity (VotingProcedures (ShelleyLedgerEra era)))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era.
ConwayEraTxBody era =>
Lens' (TxBody era) (VotingProcedures era)
Lens'
(TxBody (ShelleyLedgerEra era))
(VotingProcedures (ShelleyLedgerEra era))
L.votingProceduresTxBodyL) ((VotingProcedures (ShelleyLedgerEra era)
-> Identity (VotingProcedures (ShelleyLedgerEra era)))
-> Tx (ShelleyLedgerEra era)
-> Identity (Tx (ShelleyLedgerEra era)))
-> VotingProcedures (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
-> Tx (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VotingProcedures (ShelleyLedgerEra era)
votingProcedures
indexedTxCerts
:: [ ( ScriptWitnessIndex
, Exp.Certificate (ShelleyLedgerEra era)
, StakeCredential
, Exp.AnyWitness (ShelleyLedgerEra era)
)
]
indexedTxCerts :: [(ScriptWitnessIndex, Certificate (ShelleyLedgerEra era),
StakeCredential, AnyWitness (ShelleyLedgerEra era))]
indexedTxCerts = TxCertificates (ShelleyLedgerEra era)
-> [(ScriptWitnessIndex, Certificate (ShelleyLedgerEra era),
StakeCredential, AnyWitness (ShelleyLedgerEra era))]
forall era.
TxCertificates (ShelleyLedgerEra era)
-> [(ScriptWitnessIndex, Certificate (ShelleyLedgerEra era),
StakeCredential, AnyWitness (ShelleyLedgerEra era))]
indexTxCertificates TxCertificates (ShelleyLedgerEra era)
txCertificates'
setScriptWitnesses
:: [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> L.TxWits (ShelleyLedgerEra era)
-> L.TxWits (ShelleyLedgerEra era)
setScriptWitnesses :: [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era)
setScriptWitnesses [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses =
[Endo (TxWits (ShelleyLedgerEra era))]
-> TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era)
forall {a}. [Endo a] -> a -> a
appEndos
[ CardanoEra era
-> (AlonzoEraOnwards era -> Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era))
forall (eon :: * -> *) a era.
(Eon eon, Monoid a) =>
CardanoEra era -> (eon era -> a) -> a
monoidForEraInEon
CardanoEra era
era
( \AlonzoEraOnwards era
aeo -> AlonzoEraOnwards era
-> (AlonzoEraOnwardsConstraints era =>
Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era))
forall era a.
AlonzoEraOnwards era -> (AlonzoEraOnwardsConstraints era => a) -> a
alonzoEraOnwardsConstraints AlonzoEraOnwards era
aeo ((AlonzoEraOnwardsConstraints era =>
Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era)))
-> (AlonzoEraOnwardsConstraints era =>
Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ (TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> Endo (TxWits (ShelleyLedgerEra era))
forall a. (a -> a) -> Endo a
Endo ((TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> Endo (TxWits (ShelleyLedgerEra era)))
-> (TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> Endo (TxWits (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ do
let sData :: TxBodyScriptData era
sData = ShelleyBasedEra era
-> [TxOut CtxTx era]
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> TxBodyScriptData era
forall era.
ShelleyBasedEra era
-> [TxOut CtxTx era]
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> TxBodyScriptData era
convScriptData' ShelleyBasedEra era
sbe [TxOut CtxTx era]
outs [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses
let (TxDats (ShelleyLedgerEra era)
datums, Redeemers (ShelleyLedgerEra era)
redeemers) = case TxBodyScriptData era
sData of
TxBodyScriptData AlonzoEraOnwards era
_ TxDats (ShelleyLedgerEra era)
ds Redeemers (ShelleyLedgerEra era)
rs -> (TxDats (ShelleyLedgerEra era)
ds, Redeemers (ShelleyLedgerEra era)
rs)
TxBodyScriptData era
TxBodyNoScriptData -> (TxDats (ShelleyLedgerEra era)
forall a. Monoid a => a
mempty, Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
-> Redeemers (ShelleyLedgerEra era)
forall era.
AlonzoEraScript era =>
Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
L.Redeemers Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
forall a. Monoid a => a
mempty)
((TxDats (ShelleyLedgerEra era)
-> Identity (TxDats (ShelleyLedgerEra era)))
-> TxWits (ShelleyLedgerEra era)
-> Identity (TxWits (ShelleyLedgerEra era))
forall era. AlonzoEraTxWits era => Lens' (TxWits era) (TxDats era)
Lens'
(TxWits (ShelleyLedgerEra era)) (TxDats (ShelleyLedgerEra era))
L.datsTxWitsL ((TxDats (ShelleyLedgerEra era)
-> Identity (TxDats (ShelleyLedgerEra era)))
-> TxWits (ShelleyLedgerEra era)
-> Identity (TxWits (ShelleyLedgerEra era)))
-> TxDats (ShelleyLedgerEra era)
-> TxWits (ShelleyLedgerEra era)
-> TxWits (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxDats (ShelleyLedgerEra era)
datums) (TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> (TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> TxWits (ShelleyLedgerEra era)
-> TxWits (ShelleyLedgerEra era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Redeemers (ShelleyLedgerEra era)
-> Identity (Redeemers (ShelleyLedgerEra era)))
-> TxWits (ShelleyLedgerEra era)
-> Identity (TxWits (ShelleyLedgerEra era))
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens'
(TxWits (ShelleyLedgerEra era)) (Redeemers (ShelleyLedgerEra era))
L.rdmrsTxWitsL ((Redeemers (ShelleyLedgerEra era)
-> Identity (Redeemers (ShelleyLedgerEra era)))
-> TxWits (ShelleyLedgerEra era)
-> Identity (TxWits (ShelleyLedgerEra era)))
-> (Redeemers (ShelleyLedgerEra era)
-> Redeemers (ShelleyLedgerEra era))
-> TxWits (ShelleyLedgerEra era)
-> TxWits (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (Redeemers (ShelleyLedgerEra era)
-> Redeemers (ShelleyLedgerEra era)
-> Redeemers (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> Redeemers (ShelleyLedgerEra era)
redeemers))
)
, CardanoEra era
-> (AllegraEraOnwards era -> Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era))
forall (eon :: * -> *) a era.
(Eon eon, Monoid a) =>
CardanoEra era -> (eon era -> a) -> a
monoidForEraInEon
CardanoEra era
era
( \AllegraEraOnwards era
aeo -> AllegraEraOnwards era
-> (AllegraEraOnwardsConstraints era =>
Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era))
forall era a.
AllegraEraOnwards era
-> (AllegraEraOnwardsConstraints era => a) -> a
allegraEraOnwardsConstraints AllegraEraOnwards era
aeo ((AllegraEraOnwardsConstraints era =>
Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era)))
-> (AllegraEraOnwardsConstraints era =>
Endo (TxWits (ShelleyLedgerEra era)))
-> Endo (TxWits (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ (TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> Endo (TxWits (ShelleyLedgerEra era))
forall a. (a -> a) -> Endo a
Endo ((TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> Endo (TxWits (ShelleyLedgerEra era)))
-> (TxWits (ShelleyLedgerEra era) -> TxWits (ShelleyLedgerEra era))
-> Endo (TxWits (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ do
let ledgerScripts :: [Script (ShelleyLedgerEra era)]
ledgerScripts = ShelleyBasedEra era
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> [Script (ShelleyLedgerEra era)]
forall era ledgerera.
(ShelleyLedgerEra era ~ ledgerera) =>
ShelleyBasedEra era
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> [Script ledgerera]
convSimpleScripts ShelleyBasedEra era
sbe [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses
(Map ScriptHash (Script (ShelleyLedgerEra era))
-> Identity (Map ScriptHash (Script (ShelleyLedgerEra era))))
-> TxWits (ShelleyLedgerEra era)
-> Identity (TxWits (ShelleyLedgerEra era))
forall era.
EraTxWits era =>
Lens' (TxWits era) (Map ScriptHash (Script era))
Lens'
(TxWits (ShelleyLedgerEra era))
(Map ScriptHash (Script (ShelleyLedgerEra era)))
L.scriptTxWitsL
((Map ScriptHash (Script (ShelleyLedgerEra era))
-> Identity (Map ScriptHash (Script (ShelleyLedgerEra era))))
-> TxWits (ShelleyLedgerEra era)
-> Identity (TxWits (ShelleyLedgerEra era)))
-> Map ScriptHash (Script (ShelleyLedgerEra era))
-> TxWits (ShelleyLedgerEra era)
-> TxWits (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [(ScriptHash, Script (ShelleyLedgerEra era))]
-> Map ScriptHash (Script (ShelleyLedgerEra era))
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ (Script (ShelleyLedgerEra era) -> ScriptHash
forall era. EraScript era => Script era -> ScriptHash
L.hashScript Script (ShelleyLedgerEra era)
sw, Script (ShelleyLedgerEra era)
sw)
| Script (ShelleyLedgerEra era)
sw <- [Script (ShelleyLedgerEra era)]
ledgerScripts
]
)
]
convSimpleScripts
:: ShelleyLedgerEra era ~ ledgerera
=> ShelleyBasedEra era
-> [(ScriptWitnessIndex, Exp.AnyWitness (ShelleyLedgerEra era))]
-> [L.Script ledgerera]
convSimpleScripts :: forall era ledgerera.
(ShelleyLedgerEra era ~ ledgerera) =>
ShelleyBasedEra era
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> [Script ledgerera]
convSimpleScripts ShelleyBasedEra era
sbe [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses =
[Maybe (Script ledgerera)] -> [Script ledgerera]
forall a. [Maybe a] -> [a]
catMaybes
[ ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era => Maybe (Script ledgerera))
-> Maybe (Script ledgerera)
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
sbe ((ShelleyBasedEraConstraints era => Maybe (Script ledgerera))
-> Maybe (Script ledgerera))
-> (ShelleyBasedEraConstraints era => Maybe (Script ledgerera))
-> Maybe (Script ledgerera)
forall a b. (a -> b) -> a -> b
$ AnyWitness ledgerera -> Maybe (Script ledgerera)
forall era. AnyWitness era -> Maybe (Script era)
Exp.getAnyWitnessSimpleScript AnyWitness ledgerera
anywit
| (ScriptWitnessIndex
_, AnyWitness ledgerera
anywit) <- [(ScriptWitnessIndex, AnyWitness ledgerera)]
[(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses
]
convCertificates
:: Exp.TxCertificates (ShelleyLedgerEra era)
-> Seq.StrictSeq (L.TxCert (ShelleyLedgerEra era))
convCertificates :: forall era.
TxCertificates (ShelleyLedgerEra era)
-> StrictSeq (TxCert (ShelleyLedgerEra era))
convCertificates (Exp.TxCertificates OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))
cs) =
[Item (StrictSeq (TxCert (ShelleyLedgerEra era)))]
-> StrictSeq (TxCert (ShelleyLedgerEra era))
forall l. IsList l => [Item l] -> l
fromList ([Item (StrictSeq (TxCert (ShelleyLedgerEra era)))]
-> StrictSeq (TxCert (ShelleyLedgerEra era)))
-> ([(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> [Item (StrictSeq (TxCert (ShelleyLedgerEra era)))])
-> [(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> StrictSeq (TxCert (ShelleyLedgerEra era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))
-> Item (StrictSeq (TxCert (ShelleyLedgerEra era))))
-> [(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> [Item (StrictSeq (TxCert (ShelleyLedgerEra era)))]
forall a b. (a -> b) -> [a] -> [b]
map (\(Exp.Certificate TxCert (ShelleyLedgerEra era)
c, Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era))
_) -> Item (StrictSeq (TxCert (ShelleyLedgerEra era)))
TxCert (ShelleyLedgerEra era)
c) ([(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> StrictSeq (TxCert (ShelleyLedgerEra era)))
-> [(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> StrictSeq (TxCert (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))
-> [Item
(OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era))))]
forall l. IsList l => l -> [Item l]
toList OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))
cs
convScriptData'
:: ShelleyBasedEra era
-> [TxOut CtxTx era]
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> TxBodyScriptData era
convScriptData' :: forall era.
ShelleyBasedEra era
-> [TxOut CtxTx era]
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> TxBodyScriptData era
convScriptData' ShelleyBasedEra era
sbe [TxOut CtxTx era]
txOuts' [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses =
(ShelleyToMaryEraConstraints era =>
ShelleyToMaryEra era -> TxBodyScriptData era)
-> (AlonzoEraOnwardsConstraints era =>
AlonzoEraOnwards era -> TxBodyScriptData era)
-> ShelleyBasedEra era
-> TxBodyScriptData era
forall era a.
(ShelleyToMaryEraConstraints era => ShelleyToMaryEra era -> a)
-> (AlonzoEraOnwardsConstraints era => AlonzoEraOnwards era -> a)
-> ShelleyBasedEra era
-> a
caseShelleyToMaryOrAlonzoEraOnwards
(TxBodyScriptData era
-> ShelleyToMaryEra era -> TxBodyScriptData era
forall a b. a -> b -> a
const TxBodyScriptData era
forall era. TxBodyScriptData era
TxBodyNoScriptData)
( \AlonzoEraOnwards era
w ->
let redeemers :: Redeemers (ShelleyLedgerEra era)
redeemers = AlonzoEraOnwards era
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> Redeemers (ShelleyLedgerEra era)
forall era.
AlonzoEraOnwards era
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> Redeemers (ShelleyLedgerEra era)
getAnyPlutusScriptWitnessRedeemerPointerMap AlonzoEraOnwards era
w [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses
datums :: TxDats (ShelleyLedgerEra era)
datums = [TxDats (ShelleyLedgerEra era)] -> TxDats (ShelleyLedgerEra era)
forall a. Monoid a => [a] -> a
mconcat [AnyWitness (ShelleyLedgerEra era) -> TxDats (ShelleyLedgerEra era)
forall era. Era era => AnyWitness era -> TxDats era
getAnyWitnessScriptData AnyWitness (ShelleyLedgerEra era)
wit | (ScriptWitnessIndex
_, AnyWitness (ShelleyLedgerEra era)
wit) <- [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
scriptWitnesses]
supplementalDatums :: TxDats (ShelleyLedgerEra era)
supplementalDatums =
let ds :: [HashableScriptData]
ds = [HashableScriptData
d | TxOut AddressInEra era
_ TxOutValue era
_ (TxOutSupplementalDatum AlonzoEraOnwards era
_ HashableScriptData
d) ReferenceScript era
_ <- [TxOut CtxTx era]
txOuts']
in Map DataHash (Data (ShelleyLedgerEra era))
-> TxDats (ShelleyLedgerEra era)
forall era. Era era => Map DataHash (Data era) -> TxDats era
Alonzo.TxDats (Map DataHash (Data (ShelleyLedgerEra era))
-> TxDats (ShelleyLedgerEra era))
-> Map DataHash (Data (ShelleyLedgerEra era))
-> TxDats (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
[Item (Map DataHash (Data (ShelleyLedgerEra era)))]
-> Map DataHash (Data (ShelleyLedgerEra era))
forall l. IsList l => [Item l] -> l
fromList
[ (Data (ShelleyLedgerEra era) -> DataHash
forall era. Data era -> DataHash
L.hashData Data (ShelleyLedgerEra era)
d', Data (ShelleyLedgerEra era)
d')
| HashableScriptData
d <- [HashableScriptData]
ds
, let d' :: Data (ShelleyLedgerEra era)
d' = HashableScriptData -> Data (ShelleyLedgerEra era)
forall ledgerera.
Era ledgerera =>
HashableScriptData -> Data ledgerera
toAlonzoData HashableScriptData
d
]
in AlonzoEraOnwards era
-> TxDats (ShelleyLedgerEra era)
-> Redeemers (ShelleyLedgerEra era)
-> TxBodyScriptData era
forall era.
AlonzoEraOnwardsConstraints era =>
AlonzoEraOnwards era
-> TxDats (ShelleyLedgerEra era)
-> Redeemers (ShelleyLedgerEra era)
-> TxBodyScriptData era
TxBodyScriptData AlonzoEraOnwards era
w (TxDats (ShelleyLedgerEra era)
datums TxDats (ShelleyLedgerEra era)
-> TxDats (ShelleyLedgerEra era) -> TxDats (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> TxDats (ShelleyLedgerEra era)
supplementalDatums) Redeemers (ShelleyLedgerEra era)
redeemers
)
ShelleyBasedEra era
sbe
getAnyPlutusScriptWitnessRedeemerPointerMap
:: AlonzoEraOnwards era
-> [(ScriptWitnessIndex, Exp.AnyWitness (ShelleyLedgerEra era))]
-> L.Redeemers (ShelleyLedgerEra era)
getAnyPlutusScriptWitnessRedeemerPointerMap :: forall era.
AlonzoEraOnwards era
-> [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
-> Redeemers (ShelleyLedgerEra era)
getAnyPlutusScriptWitnessRedeemerPointerMap AlonzoEraOnwards era
w [(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
wits =
AlonzoEraOnwards era
-> (AlonzoEraOnwardsConstraints era =>
Redeemers (ShelleyLedgerEra era))
-> Redeemers (ShelleyLedgerEra era)
forall era a.
AlonzoEraOnwards era -> (AlonzoEraOnwardsConstraints era => a) -> a
alonzoEraOnwardsConstraints AlonzoEraOnwards era
w ((AlonzoEraOnwardsConstraints era =>
Redeemers (ShelleyLedgerEra era))
-> Redeemers (ShelleyLedgerEra era))
-> (AlonzoEraOnwardsConstraints era =>
Redeemers (ShelleyLedgerEra era))
-> Redeemers (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
-> Redeemers (ShelleyLedgerEra era)
forall era.
AlonzoEraScript era =>
Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
Alonzo.Redeemers (Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
-> Redeemers (ShelleyLedgerEra era))
-> Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
-> Redeemers (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
[Item
(Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits))]
-> Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
forall l. IsList l => [Item l] -> l
fromList
[ ( PlutusPurpose AsIx (ShelleyLedgerEra era)
i
,
( HashableScriptData -> Data (ShelleyLedgerEra era)
forall ledgerera.
Era ledgerera =>
HashableScriptData -> Data ledgerera
toAlonzoData (HashableScriptData -> Data (ShelleyLedgerEra era))
-> HashableScriptData -> Data (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ AnyPlutusScriptWitness lang purpose (ShelleyLedgerEra era)
-> HashableScriptData
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
AnyPlutusScriptWitness lang purpose era -> HashableScriptData
getAnyPlutusScriptWitnessRedeemer AnyPlutusScriptWitness lang purpose (ShelleyLedgerEra era)
pswit
, ExecutionUnits -> ExUnits
toAlonzoExUnits (ExecutionUnits -> ExUnits) -> ExecutionUnits -> ExUnits
forall a b. (a -> b) -> a -> b
$ AnyPlutusScriptWitness lang purpose (ShelleyLedgerEra era)
-> ExecutionUnits
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
AnyPlutusScriptWitness lang purpose era -> ExecutionUnits
getAnyPlutusScriptWitnessExecutionUnits AnyPlutusScriptWitness lang purpose (ShelleyLedgerEra era)
pswit
)
)
| ( ScriptWitnessIndex
idx
, AnyPlutusScriptWitness AnyPlutusScriptWitness lang purpose (ShelleyLedgerEra era)
pswit
) <-
[(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))]
wits
, Just PlutusPurpose AsIx (ShelleyLedgerEra era)
i <- [AlonzoEraOnwards era
-> ScriptWitnessIndex
-> Maybe (PlutusPurpose AsIx (ShelleyLedgerEra era))
forall era.
AlonzoEraOnwards era
-> ScriptWitnessIndex
-> Maybe (PlutusPurpose AsIx (ShelleyLedgerEra era))
fromScriptWitnessIndex AlonzoEraOnwards era
w ScriptWitnessIndex
idx]
]
createCommonTxBody
:: HasCallStack
=> ShelleyBasedEra era
-> [TxIn]
-> [TxOut ctx era]
-> Lovelace
-> L.TxBody (ShelleyLedgerEra era)
createCommonTxBody :: forall era ctx.
HasCallStack =>
ShelleyBasedEra era
-> [TxIn]
-> [TxOut ctx era]
-> Lovelace
-> TxBody (ShelleyLedgerEra era)
createCommonTxBody ShelleyBasedEra era
era [TxIn]
ins [TxOut ctx era]
outs Lovelace
txFee' =
let txIns' :: [TxIn]
txIns' = (TxIn -> TxIn) -> [TxIn] -> [TxIn]
forall a b. (a -> b) -> [a] -> [b]
map TxIn -> TxIn
toShelleyTxIn [TxIn]
ins
txOuts' :: [TxOut (ShelleyLedgerEra era)]
txOuts' = (TxOut ctx era -> TxOut (ShelleyLedgerEra era))
-> [TxOut ctx era] -> [TxOut (ShelleyLedgerEra era)]
forall a b. (a -> b) -> [a] -> [b]
map (ShelleyBasedEra era
-> TxOut ctx era -> TxOut (ShelleyLedgerEra era)
forall ctx era ledgerera.
(HasCallStack, ShelleyLedgerEra era ~ ledgerera) =>
ShelleyBasedEra era -> TxOut ctx era -> TxOut ledgerera
toShelleyTxOutAny ShelleyBasedEra era
era) [TxOut ctx era]
outs
in ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
era ((ShelleyBasedEraConstraints era => TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era))
-> (ShelleyBasedEraConstraints era =>
TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
TxBody (ShelleyLedgerEra era)
forall era. EraTxBody era => TxBody era
L.mkBasicTxBody
TxBody (ShelleyLedgerEra era)
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era. EraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody (ShelleyLedgerEra era)) (Set TxIn)
L.inputsTxBodyL
((Set TxIn -> Identity (Set TxIn))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> Set TxIn
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Item (Set TxIn)] -> Set TxIn
forall l. IsList l => [Item l] -> l
fromList [Item (Set TxIn)]
[TxIn]
txIns'
TxBody (ShelleyLedgerEra era)
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut (ShelleyLedgerEra era))
-> Identity (StrictSeq (TxOut (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxOut era))
Lens'
(TxBody (ShelleyLedgerEra era))
(StrictSeq (TxOut (ShelleyLedgerEra era)))
L.outputsTxBodyL
((StrictSeq (TxOut (ShelleyLedgerEra era))
-> Identity (StrictSeq (TxOut (ShelleyLedgerEra era))))
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> StrictSeq (TxOut (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxOut (ShelleyLedgerEra era)]
-> StrictSeq (TxOut (ShelleyLedgerEra era))
forall a. [a] -> StrictSeq a
Seq.fromList [TxOut (ShelleyLedgerEra era)]
txOuts'
TxBody (ShelleyLedgerEra era)
-> (TxBody (ShelleyLedgerEra era) -> TxBody (ShelleyLedgerEra era))
-> TxBody (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (Lovelace -> Identity Lovelace)
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era))
forall era. EraTxBody era => Lens' (TxBody era) Lovelace
Lens' (TxBody (ShelleyLedgerEra era)) Lovelace
L.feeTxBodyL
((Lovelace -> Identity Lovelace)
-> TxBody (ShelleyLedgerEra era)
-> Identity (TxBody (ShelleyLedgerEra era)))
-> Lovelace
-> TxBody (ShelleyLedgerEra era)
-> TxBody (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Lovelace
txFee'
addWitnesses
:: forall era
. [KeyWitness era]
-> Tx era
-> Tx era
addWitnesses :: forall era. [KeyWitness era] -> Tx era -> Tx era
addWitnesses [KeyWitness era]
witnesses (ShelleyTx ShelleyBasedEra era
sbe Tx (ShelleyLedgerEra era)
tx) =
ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era => Tx era) -> Tx era
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
sbe ((ShelleyBasedEraConstraints era => Tx era) -> Tx era)
-> (ShelleyBasedEraConstraints era => Tx era) -> Tx era
forall a b. (a -> b) -> a -> b
$
ShelleyBasedEra era -> Tx (ShelleyLedgerEra era) -> Tx era
forall era.
ShelleyBasedEra era -> Tx (ShelleyLedgerEra era) -> Tx era
ShelleyTx ShelleyBasedEra era
sbe Tx (ShelleyLedgerEra era)
forall ledgerera.
(ShelleyLedgerEra era ~ ledgerera, EraTx ledgerera) =>
Tx ledgerera
txCommon
where
txCommon
:: forall ledgerera
. ShelleyLedgerEra era ~ ledgerera
=> L.EraTx ledgerera
=> L.Tx ledgerera
txCommon :: forall ledgerera.
(ShelleyLedgerEra era ~ ledgerera, EraTx ledgerera) =>
Tx ledgerera
txCommon =
Tx ledgerera
Tx (ShelleyLedgerEra era)
tx
Tx ledgerera -> (Tx ledgerera -> Tx ledgerera) -> Tx ledgerera
forall a b. a -> (a -> b) -> b
& (TxWits ledgerera -> Identity (TxWits ledgerera))
-> Tx ledgerera -> Identity (Tx ledgerera)
forall era. EraTx era => Lens' (Tx era) (TxWits era)
Lens' (Tx ledgerera) (TxWits ledgerera)
L.witsTxL
((TxWits ledgerera -> Identity (TxWits ledgerera))
-> Tx ledgerera -> Identity (Tx ledgerera))
-> (TxWits ledgerera -> TxWits ledgerera)
-> Tx ledgerera
-> Tx ledgerera
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ ( ( (Set (WitVKey 'Witness) -> Identity (Set (WitVKey 'Witness)))
-> TxWits ledgerera -> Identity (TxWits ledgerera)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey 'Witness))
Lens' (TxWits ledgerera) (Set (WitVKey 'Witness))
L.addrTxWitsL
((Set (WitVKey 'Witness) -> Identity (Set (WitVKey 'Witness)))
-> TxWits ledgerera -> Identity (TxWits ledgerera))
-> (Set (WitVKey 'Witness) -> Set (WitVKey 'Witness))
-> TxWits ledgerera
-> TxWits ledgerera
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (Set (WitVKey 'Witness)
-> Set (WitVKey 'Witness) -> Set (WitVKey 'Witness)
forall a. Semigroup a => a -> a -> a
<> [Item (Set (WitVKey 'Witness))] -> Set (WitVKey 'Witness)
forall l. IsList l => [Item l] -> l
fromList [Item (Set (WitVKey 'Witness))
WitVKey 'Witness
w | ShelleyKeyWitness ShelleyBasedEra era
_ WitVKey 'Witness
w <- [KeyWitness era]
witnesses])
)
(TxWits ledgerera -> TxWits ledgerera)
-> (TxWits ledgerera -> TxWits ledgerera)
-> TxWits ledgerera
-> TxWits ledgerera
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ( (Set BootstrapWitness -> Identity (Set BootstrapWitness))
-> TxWits ledgerera -> Identity (TxWits ledgerera)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set BootstrapWitness)
Lens' (TxWits ledgerera) (Set BootstrapWitness)
L.bootAddrTxWitsL
((Set BootstrapWitness -> Identity (Set BootstrapWitness))
-> TxWits ledgerera -> Identity (TxWits ledgerera))
-> (Set BootstrapWitness -> Set BootstrapWitness)
-> TxWits ledgerera
-> TxWits ledgerera
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (Set BootstrapWitness
-> Set BootstrapWitness -> Set BootstrapWitness
forall a. Semigroup a => a -> a -> a
<> [Item (Set BootstrapWitness)] -> Set BootstrapWitness
forall l. IsList l => [Item l] -> l
fromList [Item (Set BootstrapWitness)
BootstrapWitness
w | ShelleyBootstrapWitness ShelleyBasedEra era
_ BootstrapWitness
w <- [KeyWitness era]
witnesses])
)
)
indexWitnessedTxProposalProcedures
:: forall era
. ConwayEraOnwards era
-> Exp.TxProposalProcedures (ShelleyLedgerEra era)
-> [ ( L.ProposalProcedure (ShelleyLedgerEra era)
, (ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era))
)
]
indexWitnessedTxProposalProcedures :: forall era.
ConwayEraOnwards era
-> TxProposalProcedures (ShelleyLedgerEra era)
-> [(ProposalProcedure (ShelleyLedgerEra era),
(ScriptWitnessIndex, AnyWitness (ShelleyLedgerEra era)))]
indexWitnessedTxProposalProcedures ConwayEraOnwards era
cOnwards (Exp.TxProposalProcedures OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era))
proposals) = do
let allProposalsList :: [(Word32,
(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era)))]
allProposalsList = [Word32]
-> [(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))]
-> [(Word32,
(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era)))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Word32
0 ..] ([(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))]
-> [(Word32,
(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era)))])
-> [(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))]
-> [(Word32,
(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era)))]
forall a b. (a -> b) -> a -> b
$ ConwayEraOnwards era
-> (ConwayEraOnwardsConstraints era =>
[(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))])
-> [(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))]
forall era a.
ConwayEraOnwards era -> (ConwayEraOnwardsConstraints era => a) -> a
conwayEraOnwardsConstraints ConwayEraOnwards era
cOnwards ((ConwayEraOnwardsConstraints era =>
[(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))])
-> [(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))])
-> (ConwayEraOnwardsConstraints era =>
[(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))])
-> [(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era))]
forall a b. (a -> b) -> a -> b
$ OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era))
-> [Item
(OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era)))]
forall l. IsList l => l -> [Item l]
toList OMap
(ProposalProcedure (ShelleyLedgerEra era))
(AnyWitness (ShelleyLedgerEra era))
proposals
[ (ProposalProcedure (ShelleyLedgerEra era)
proposal, (Word32 -> ScriptWitnessIndex
ScriptWitnessIndexProposing Word32
ix, AnyWitness (ShelleyLedgerEra era)
anyWitness))
| (Word32
ix, (ProposalProcedure (ShelleyLedgerEra era)
proposal, AnyWitness (ShelleyLedgerEra era)
anyWitness)) <- [(Word32,
(ProposalProcedure (ShelleyLedgerEra era),
AnyWitness (ShelleyLedgerEra era)))]
allProposalsList
]
indexTxCertificates
:: Exp.TxCertificates (ShelleyLedgerEra era)
-> [ ( ScriptWitnessIndex
, Exp.Certificate (ShelleyLedgerEra era)
, StakeCredential
, AnyWitness (ShelleyLedgerEra era)
)
]
indexTxCertificates :: forall era.
TxCertificates (ShelleyLedgerEra era)
-> [(ScriptWitnessIndex, Certificate (ShelleyLedgerEra era),
StakeCredential, AnyWitness (ShelleyLedgerEra era))]
indexTxCertificates (Exp.TxCertificates OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))
certsWits) =
[ (Word32 -> ScriptWitnessIndex
ScriptWitnessIndexCertificate Word32
ix, Certificate (ShelleyLedgerEra era)
cert, StakeCredential
stakeCred, AnyWitness (ShelleyLedgerEra era)
witness)
| (Word32
ix, (Certificate (ShelleyLedgerEra era)
cert, Just (StakeCredential
stakeCred, AnyWitness (ShelleyLedgerEra era)
witness))) <- [Word32]
-> [(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> [(Word32,
(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era))))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Word32
0 ..] ([(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> [(Word32,
(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era))))])
-> [(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))]
-> [(Word32,
(Certificate (ShelleyLedgerEra era),
Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era))))]
forall a b. (a -> b) -> a -> b
$ OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))
-> [Item
(OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era))))]
forall l. IsList l => l -> [Item l]
toList OMap
(Certificate (ShelleyLedgerEra era))
(Maybe (StakeCredential, AnyWitness (ShelleyLedgerEra era)))
certsWits
]