Skip to content

Commit 5d71284

Browse files
committed
Upgrade cardano-api-10.8. Fix costs calculation for transaction with more than one certificates with the same stake credential and script witness.
1 parent 7146c85 commit 5d71284

File tree

6 files changed

+11
-52
lines changed

6 files changed

+11
-52
lines changed

cabal.project

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ repository cardano-haskell-packages
1414
-- you need to run if you change them
1515
index-state:
1616
, hackage.haskell.org 2024-12-24T12:56:48Z
17-
, cardano-haskell-packages 2025-01-15T09:59:24Z
17+
, cardano-haskell-packages 2025-02-01T07:12:29Z
1818

1919
packages:
2020
cardano-cli

cardano-cli/cardano-cli.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ library
212212
binary,
213213
bytestring,
214214
canonical-json,
215-
cardano-api ^>=10.6,
215+
cardano-api ^>=10.8,
216216
cardano-binary,
217217
cardano-crypto,
218218
cardano-crypto-class ^>=2.1.2,

cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import Data.Function
3939
import qualified Data.Map.Strict as Map
4040
import Data.Maybe
4141
import Data.Text (Text)
42-
import GHC.Exts (IsList (..))
4342
import Options.Applicative
4443
import qualified Options.Applicative as Opt
4544

@@ -300,7 +299,7 @@ runCompatibleTransactionCmd
300299
validatedRefInputs <-
301300
liftEither . first CompatibleTxCmdError . validateTxInsReference $
302301
certsRefInputs <> votesRefInputs <> proposalsRefInputs
303-
let txCerts = convertCertificates certsAndMaybeScriptWits
302+
let txCerts = mkTxCertificates sbe certsAndMaybeScriptWits
304303

305304
-- this body is only for witnesses
306305
apiTxBody <-
@@ -331,23 +330,6 @@ runCompatibleTransactionCmd
331330
newExceptT $
332331
writeTxFileTextEnvelopeCddl sbe outputFp signedTx
333332
where
334-
convertCertificates
335-
:: [(Certificate era, Maybe (ScriptWitness WitCtxStake era))]
336-
-> TxCertificates BuildTx era
337-
convertCertificates certsAndScriptWitnesses =
338-
TxCertificates sbe certs $ BuildTxWith reqWits
339-
where
340-
certs = map fst certsAndScriptWitnesses
341-
reqWits = fromList $ mapMaybe convert' certsAndScriptWitnesses
342-
convert'
343-
:: (Certificate era, Maybe (ScriptWitness WitCtxStake era))
344-
-> Maybe (StakeCredential, Witness WitCtxStake era)
345-
convert' (cert, mScriptWitnessFiles) = do
346-
sCred <- selectStakeCredentialWitness cert
347-
Just . (sCred,) $ case mScriptWitnessFiles of
348-
Just sWit -> ScriptWitness ScriptWitnessForStakeAddr sWit
349-
Nothing -> KeyWitness KeyWitnessForStakeAddr
350-
351333
validateTxInsReference
352334
:: [TxIn]
353335
-> Either TxCmdError (TxInsReference era)

cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ import Data.Function ((&))
8282
import qualified Data.List as List
8383
import Data.Map.Strict (Map)
8484
import qualified Data.Map.Strict as Map
85-
import Data.Maybe (catMaybes, fromMaybe, mapMaybe, maybeToList)
85+
import Data.Maybe
8686
import Data.Set (Set)
8787
import qualified Data.Set as Set
8888
import qualified Data.Text as Text
@@ -954,7 +954,7 @@ constructTxBodyContent
954954
& setTxExtraKeyWits validatedReqSigners
955955
& setTxProtocolParams (BuildTxWith $ LedgerProtocolParameters <$> mPparams)
956956
& setTxWithdrawals (TxWithdrawals sbe $ map convertWithdrawals withdrawals)
957-
& setTxCertificates (convertCertificates sbe certsAndMaybeScriptWits)
957+
& setTxCertificates (mkTxCertificates sbe certsAndMaybeScriptWits)
958958
& setTxUpdateProposal txUpdateProposal
959959
& setTxMintValue validatedMintValue
960960
& setTxScriptValidity validatedTxScriptValidity
@@ -1071,15 +1071,11 @@ runTxBuild
10711071
testEquality era nodeEra
10721072
& hoistMaybe (TxCmdTxNodeEraMismatchError $ NodeEraMismatchError era nodeEra)
10731073

1074-
let certs =
1075-
case convertCertificates sbe certsAndMaybeScriptWits of
1076-
TxCertificates _ cs _ -> cs
1077-
_ -> []
1078-
1074+
let certsToQuery = fst <$> certsAndMaybeScriptWits
10791075
(txEraUtxo, pparams, eraHistory, systemStart, stakePools, stakeDelegDeposits, drepDelegDeposits, _) <-
10801076
lift
10811077
( executeLocalStateQueryExpr localNodeConnInfo Consensus.VolatileTip $
1082-
queryStateForBalancedTx nodeEra allTxInputs certs
1078+
queryStateForBalancedTx nodeEra allTxInputs certsToQuery
10831079
)
10841080
& onLeft (left . TxCmdQueryConvenienceError . AcqFailure)
10851081
& onLeft (left . TxCmdQueryConvenienceError)
@@ -1140,25 +1136,6 @@ runTxBuild
11401136

11411137
return balancedTxBody
11421138

1143-
convertCertificates
1144-
:: ()
1145-
=> ShelleyBasedEra era
1146-
-> [(Certificate era, Maybe (ScriptWitness WitCtxStake era))]
1147-
-> TxCertificates BuildTx era
1148-
convertCertificates sbe certsAndScriptWitnesses =
1149-
TxCertificates sbe certs $ BuildTxWith reqWits
1150-
where
1151-
certs = map fst certsAndScriptWitnesses
1152-
reqWits = fromList $ mapMaybe convertCert certsAndScriptWitnesses
1153-
convertCert
1154-
:: (Certificate era, Maybe (ScriptWitness WitCtxStake era))
1155-
-> Maybe (StakeCredential, Witness WitCtxStake era)
1156-
convertCert (cert, mScriptWitnessFiles) = do
1157-
sCred <- selectStakeCredentialWitness cert
1158-
Just $ case mScriptWitnessFiles of
1159-
Just sWit -> (sCred, ScriptWitness ScriptWitnessForStakeAddr sWit)
1160-
Nothing -> (sCred, KeyWitness KeyWitnessForStakeAddr)
1161-
11621139
-- ----------------------------------------------------------------------------
11631140
-- Transaction body validation and conversion
11641141
--

cardano-cli/src/Cardano/CLI/Json/Friendly.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ friendlyPrices ExecutionUnitPrices{priceExecutionMemory, priceExecutionSteps} =
626626
friendlyCertificates :: ShelleyBasedEra era -> TxCertificates ViewTx era -> Aeson.Value
627627
friendlyCertificates sbe = \case
628628
TxCertificatesNone -> Null
629-
TxCertificates _ cs _ -> array $ map (friendlyCertificate sbe) cs
629+
TxCertificates _ cs -> array $ map (friendlyCertificate sbe . fst) $ toList cs
630630

631631
friendlyCertificate :: ShelleyBasedEra era -> Certificate era -> Aeson.Value
632632
friendlyCertificate sbe =

flake.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)