Skip to content

Commit

Permalink
New ModeTx GADT to help with default values across BuildTx/ViewTx
Browse files Browse the repository at this point in the history
  • Loading branch information
newhoggy committed Mar 21, 2023
1 parent 16e60df commit c6dd515
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion bench/tx-generator/src/Cardano/TxGenerator/Tx.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions cardano-api/src/Cardano/Api.hs
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ module Cardano.Api (
defaultTxBodyContent,
defaultTxFee,
defaultTxValidityUpperBound,
defaultBuildTxWith,
setTxIns,
setTxInsCollateral,
setTxInsReference,
Expand Down Expand Up @@ -223,6 +224,7 @@ module Cardano.Api (

-- ** Building vs viewing transactions
BuildTxWith(..),
ModeTx(..),
BuildTx,
ViewTx,

Expand Down
18 changes: 15 additions & 3 deletions cardano-api/src/Cardano/Api/TxBody.hs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ module Cardano.Api.TxBody (
defaultTxBodyContent,
defaultTxFee,
defaultTxValidityUpperBound,
defaultBuildTxWith,
setTxIns,
setTxInsCollateral,
setTxInsReference,
Expand Down Expand Up @@ -106,6 +107,7 @@ module Cardano.Api.TxBody (
BuildTxWith(..),
BuildTx,
ViewTx,
ModeTx(..),

-- * Era-dependent transaction body features
CollateralSupportedInEra(..),
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit c6dd515

Please sign in to comment.