From a052a6261ed8371006ee71c66372a7f6a5d362b8 Mon Sep 17 00:00:00 2001 From: Robert 'Probie' Offner Date: Tue, 27 Sep 2022 19:32:05 +1000 Subject: [PATCH] Return `Lovelace` for `calculateMinimumUTxO` Closes https://github.com/input-output-hk/cardano-node/issues/4416 --- cardano-api/ChangeLog.md | 2 ++ cardano-api/src/Cardano/Api/Fees.hs | 16 ++++++++-------- .../src/Cardano/CLI/Shelley/Run/Transaction.hs | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cardano-api/ChangeLog.md b/cardano-api/ChangeLog.md index d2e68afc184..862886561a6 100644 --- a/cardano-api/ChangeLog.md +++ b/cardano-api/ChangeLog.md @@ -8,6 +8,8 @@ - Expose convenience functions `executeQueryCardanoMode`, `determineEra`, `constructBalancedTx` and `queryStateForBalancedTx` ([PR 4446](https://github.com/input-output-hk/cardano-node/pull/4446)) +- Change `calculateMinimumUTxO` to return `Lovelace` instead of a `Value` ([PR 4482](https://github.com/input-output-hk/cardano-node/pull/4482)) + ### Bugs - Allow reading text envelopes from pipes ([PR 4384](https://github.com/input-output-hk/cardano-node/pull/4384)) diff --git a/cardano-api/src/Cardano/Api/Fees.hs b/cardano-api/src/Cardano/Api/Fees.hs index 9363a3a83b9..a9c2c7997ba 100644 --- a/cardano-api/src/Cardano/Api/Fees.hs +++ b/cardano-api/src/Cardano/Api/Fees.hs @@ -1152,11 +1152,11 @@ makeTransactionBodyAutoBalance eraInMode systemstart history pparams checkMinUTxOValue txout@(TxOut _ v _ _) pparams' = do minUTxO <- first TxBodyErrorMinUTxOMissingPParams $ calculateMinimumUTxO era txout pparams' - if txOutValueToLovelace v >= selectLovelace minUTxO + if txOutValueToLovelace v >= minUTxO then Right () else Left $ TxBodyErrorMinUTxONotMet (txOutInAnyEra txout) - (selectLovelace minUTxO) + minUTxO substituteExecutionUnits :: Map ScriptWitnessIndex ExecutionUnits -> TxBodyContent BuildTx era @@ -1313,30 +1313,30 @@ calculateMinimumUTxO :: ShelleyBasedEra era -> TxOut CtxTx era -> ProtocolParameters - -> Either MinimumUTxOError Value + -> Either MinimumUTxOError Lovelace calculateMinimumUTxO era txout@(TxOut _ v _ _) pparams' = case era of - ShelleyBasedEraShelley -> lovelaceToValue <$> getMinUTxOPreAlonzo pparams' + ShelleyBasedEraShelley -> getMinUTxOPreAlonzo pparams' ShelleyBasedEraAllegra -> calcMinUTxOAllegraMary ShelleyBasedEraMary -> calcMinUTxOAllegraMary ShelleyBasedEraAlonzo -> let lTxOut = toShelleyTxOutAny era txout babPParams = toAlonzoPParams pparams' minUTxO = Shelley.evaluateMinLovelaceOutput babPParams lTxOut - val = lovelaceToValue $ fromShelleyLovelace minUTxO + val = fromShelleyLovelace minUTxO in Right val ShelleyBasedEraBabbage -> let lTxOut = toShelleyTxOutAny era txout babPParams = toBabbagePParams pparams' minUTxO = Shelley.evaluateMinLovelaceOutput babPParams lTxOut - val = lovelaceToValue $ fromShelleyLovelace minUTxO + val = fromShelleyLovelace minUTxO in Right val where - calcMinUTxOAllegraMary :: Either MinimumUTxOError Value + calcMinUTxOAllegraMary :: Either MinimumUTxOError Lovelace calcMinUTxOAllegraMary = do let val = txOutValueToValue v minUTxO <- getMinUTxOPreAlonzo pparams' - Right . lovelaceToValue $ calcMinimumDeposit val minUTxO + Right $ calcMinimumDeposit val minUTxO getMinUTxOPreAlonzo :: ProtocolParameters -> Either MinimumUTxOError Lovelace diff --git a/cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs b/cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs index ede950103eb..162efca41e6 100644 --- a/cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs +++ b/cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs @@ -1361,7 +1361,7 @@ runTxCalculateMinRequiredUTxO (AnyCardanoEra era) protocolParamsSourceSpec txOut $ checkProtocolParameters sbe pp minValue <- firstExceptT ShelleyTxCmdMinimumUTxOErr . hoistEither $ calculateMinimumUTxO sbe out pp - liftIO . IO.print $ selectLovelace minValue + liftIO . IO.print $ minValue runTxCreatePolicyId :: ScriptFile -> ExceptT ShelleyTxCmdError IO () runTxCreatePolicyId (ScriptFile sFile) = do