diff --git a/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs b/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs index c9ec3d73f57..3d5dfada91e 100644 --- a/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs +++ b/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs @@ -114,7 +114,7 @@ dummyTxSizeInEra metadata = case createAndValidateTransactionBody dummyTx of Left err -> error $ "metaDataSize " ++ show err where dummyTx :: TxBodyContent BuildTx era - dummyTx = defaultTxBodyContent + dummyTx = defaultTxBodyContent InBuildTx & setTxIns [ ( TxIn "dbaff4e270cfb55612d9e2ac4658a27c79da4a5271c6f90853042d1403733810" (TxIx 0) , BuildTxWith $ KeyWitness KeyWitnessForSpending diff --git a/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs b/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs index a07b0ca793a..0f34b5077f5 100644 --- a/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs +++ b/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs @@ -125,7 +125,7 @@ mkGenesisTransaction key ttl fee txins txouts (`signShelleyTransaction` [WitnessGenesisUTxOKey key]) (createAndValidateTransactionBody txBodyContent) where - txBodyContent = defaultTxBodyContent + txBodyContent = defaultTxBodyContent InBuildTx & setTxIns (zip txins $ repeat $ BuildTxWith $ KeyWitness KeyWitnessForSpending) & setTxOuts txouts & setTxFee (mkTxFee fee) diff --git a/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs b/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs index ab7b2d952fc..7071ef64495 100644 --- a/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs +++ b/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs @@ -94,7 +94,7 @@ genTx protocolParameters (collateral, collFunds) fee metadata inFunds outputs (createAndValidateTransactionBody txBodyContent) where allKeys = mapMaybe getFundKey $ inFunds ++ collFunds - txBodyContent = defaultTxBodyContent + txBodyContent = defaultTxBodyContent InBuildTx & setTxIns (map (\f -> (getFundTxIn f, BuildTxWith $ getFundWitness f)) inFunds) & setTxInsCollateral collateral & setTxOuts outputs diff --git a/cardano-api/src/Cardano/Api.hs b/cardano-api/src/Cardano/Api.hs index e5a018163e3..02d58a6a108 100644 --- a/cardano-api/src/Cardano/Api.hs +++ b/cardano-api/src/Cardano/Api.hs @@ -163,6 +163,7 @@ module Cardano.Api ( defaultTxBodyContent, defaultTxFee, defaultTxValidityUpperBound, + defaultBuildTxWith, setTxIns, setTxInsCollateral, setTxInsReference, @@ -223,6 +224,7 @@ module Cardano.Api ( -- ** Building vs viewing transactions BuildTxWith(..), + ModeTx(..), BuildTx, ViewTx, diff --git a/cardano-api/src/Cardano/Api/TxBody.hs b/cardano-api/src/Cardano/Api/TxBody.hs index 6f8ff8b3cf1..ad522765e98 100644 --- a/cardano-api/src/Cardano/Api/TxBody.hs +++ b/cardano-api/src/Cardano/Api/TxBody.hs @@ -32,6 +32,7 @@ module Cardano.Api.TxBody ( defaultTxBodyContent, defaultTxFee, defaultTxValidityUpperBound, + defaultBuildTxWith, setTxIns, setTxInsCollateral, setTxInsReference, @@ -106,6 +107,7 @@ module Cardano.Api.TxBody ( BuildTxWith(..), BuildTx, ViewTx, + ModeTx(..), -- * Era-dependent transaction body features CollateralSupportedInEra(..), @@ -1325,6 +1327,16 @@ data BuildTxWith build a where ViewTx :: BuildTxWith ViewTx a BuildTxWith :: a -> BuildTxWith BuildTx a +defaultBuildTxWith :: ModeTx build -> a -> BuildTxWith build a +defaultBuildTxWith inModeTx a = + case inModeTx of + InViewTx -> ViewTx + InBuildTx -> BuildTxWith a + +data ModeTx a where + InBuildTx :: ModeTx BuildTx + InViewTx :: ModeTx ViewTx + instance Functor (BuildTxWith build) where fmap _ ViewTx = ViewTx fmap f (BuildTxWith x) = BuildTxWith (f x) @@ -1765,8 +1777,8 @@ data TxBodyContent build era = } deriving (Eq, Show) -defaultTxBodyContent :: IsCardanoEra era => TxBodyContent BuildTx era -defaultTxBodyContent = TxBodyContent +defaultTxBodyContent :: IsCardanoEra era => ModeTx mtx -> TxBodyContent mtx era +defaultTxBodyContent mtx = TxBodyContent { txIns = [] , txInsCollateral = TxInsCollateralNone , txInsReference = TxInsReferenceNone @@ -1778,7 +1790,7 @@ defaultTxBodyContent = TxBodyContent , txMetadata = TxMetadataNone , txAuxScripts = TxAuxScriptsNone , txExtraKeyWits = TxExtraKeyWitnessesNone - , txProtocolParams = BuildTxWith Nothing + , txProtocolParams = defaultBuildTxWith mtx Nothing , txWithdrawals = TxWithdrawalsNone , txCertificates = TxCertificatesNone , txUpdateProposal = TxUpdateProposalNone