Skip to content

Commit ea449a4

Browse files
authored
Merge pull request #1379 from IntersectMBO/jordan/bump-cardano-api-11.2.0.0
Bump to cardano-api 11.2.0.0 + migrate to Certificate API
2 parents 93e8b7b + a0722ce commit ea449a4

46 files changed

Lines changed: 312 additions & 176 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
project: cardano-cli
2+
pr: 1379
3+
kind:
4+
- maintenance
5+
description: |
6+
Bump to cardano-api 11.2.0.0. Folds in three migrations that previously
7+
lived in separate PRs / unreleased branches:
8+
9+
- Companion to cardano-api #1200: drop deprecated TxBody / TxBodyContent
10+
uses (was #1375).
11+
- Companion to cardano-api #1209: migrate createCompatibleTx, toTxOutInEra,
12+
and toTxOutInShelleyBasedEra to the experimental TxOut plus supplemental
13+
datum map (was #1376).
14+
- Companion to cardano-api #1210: legacy Cardano.Api.Certificate module is
15+
gone; migrate all imports to Cardano.Api.Experimental.Certificate /
16+
Cardano.Api.Compatible.Certificate as appropriate, and drop vacuous
17+
hiding clauses that became -Wdodgy-imports errors under -Werror.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
project: cardano-cli
2+
pr: 1379
3+
kind:
4+
- bugfix
5+
description: |
6+
Fix `cardano-cli transaction view` rendering inline datums as a Haskell-`Show`
7+
string instead of the structured JSON detailed-schema dict. The friendly tx
8+
renderer's `L.Datum` branch in `friendlyTxOut` now routes through
9+
`scriptDataToJson ScriptDataJsonDetailedSchema . fromAlonzoData`, restoring the
10+
pre-#1374 output shape for inline-datum outputs.

‎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 2026-04-16T00:15:23Z
17-
, cardano-haskell-packages 2026-05-08T13:26:45Z
17+
, cardano-haskell-packages 2026-05-18T18:23:40Z
1818

1919
active-repositories:
2020
, :rest

‎cardano-cli/cardano-cli.cabal‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ library
242242
binary,
243243
bytestring,
244244
canonical-json,
245-
cardano-api ^>=11.1,
245+
cardano-api ^>=11.2,
246246
cardano-binary,
247247
cardano-crypto,
248248
cardano-crypto-class ^>=2.3,

‎cardano-cli/src/Cardano/CLI/Compatible/Governance/Command.hs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module Cardano.CLI.Compatible.Governance.Command
88
where
99

1010
import Cardano.Api
11+
import Cardano.Api.Compatible.Certificate (MIRPot)
1112

1213
import Cardano.CLI.Compatible.Governance.Types
1314
import Cardano.CLI.EraBased.Governance.Option

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

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ where
3333
import Cardano.Api as Api
3434
import Cardano.Api.Experimental (obtainCommonConstraints)
3535
import Cardano.Api.Experimental qualified as Exp
36+
import Cardano.Api.Experimental.Tx qualified as Exp
3637
import Cardano.Api.Ledger (ExUnits (..), extractHash, strictMaybeToMaybe)
3738
import Cardano.Api.Ledger qualified as Alonzo
3839
import Cardano.Api.Ledger qualified as L
@@ -219,8 +220,7 @@ basePairs
219220
-> [Aeson.Pair]
220221
basePairs era body mAuxData =
221222
Exp.obtainCommonConstraints era $
222-
let sbe = convert era :: ShelleyBasedEra era
223-
certs = toList (body ^. L.certsTxBodyL)
223+
let certs = toList (body ^. L.certsTxBodyL)
224224
in [ "auxiliary scripts" .= friendlyAuxScripts era mAuxData
225225
, "certificates"
226226
.= if null certs
@@ -232,7 +232,7 @@ basePairs era body mAuxData =
232232
, "metadata" .= friendlyMetadata mAuxData
233233
, "outputs"
234234
.= map
235-
(friendlyTxOut era . fromCtxUTxOTxOut . fromShelleyTxOut sbe)
235+
(friendlyTxOut era . Exp.TxOut)
236236
(toList (body ^. L.outputsTxBodyL))
237237
, "withdrawals" .= friendlyWithdrawals (body ^. L.withdrawalsTxBodyL)
238238
]
@@ -472,8 +472,7 @@ friendlyReturnCollateral era = \case
472472
L.SNothing -> Aeson.Null
473473
L.SJust collOut ->
474474
Exp.obtainCommonConstraints era $
475-
let sbe = convert era :: ShelleyBasedEra era
476-
in friendlyTxOut era (fromCtxUTxOTxOut (fromShelleyTxOut sbe collOut))
475+
friendlyTxOut era (Exp.TxOut collOut)
477476

478477
friendlyExtraKeyWits :: Set.Set (L.KeyHash L.Guard) -> Aeson.Value
479478
friendlyExtraKeyWits keyhashes
@@ -499,35 +498,45 @@ friendlyStakeAddress (StakeAddress net cred) =
499498
, friendlyStakeCredential cred
500499
]
501500

502-
friendlyTxOut :: Exp.Era era -> TxOut CtxTx era -> Aeson.Value
503-
friendlyTxOut era (TxOut addr amount mdatum script) =
501+
friendlyTxOut
502+
:: forall era
503+
. Exp.Era era
504+
-> Exp.TxOut (Exp.LedgerEra era)
505+
-> Aeson.Value
506+
friendlyTxOut era (Exp.TxOut ledgerTxOut) =
504507
Exp.obtainCommonConstraints era $
505-
object $
506-
case addr of
507-
AddressInEra ByronAddressInAnyEra byronAdr ->
508-
[ "address era" .= String "Byron"
509-
, "address" .= serialiseAddress byronAdr
510-
, "amount" .= friendlyTxOutValue era amount
511-
]
512-
AddressInEra (ShelleyAddressInEra _) saddr@(ShelleyAddress net cred stake) ->
513-
let preAlonzo =
508+
babbageEraOnwardsConstraints beo $
509+
let addr = fromShelleyAddr sbe (ledgerTxOut ^. L.addrTxOutL)
510+
ledgerValue = ledgerTxOut ^. L.valueTxOutL
511+
refScript = case ledgerTxOut ^. L.referenceScriptTxOutL of
512+
L.SNothing -> ReferenceScriptNone
513+
L.SJust s -> fromShelleyScriptToReferenceScript sbe s
514+
in object $
515+
case addr of
516+
AddressInEra ByronAddressInAnyEra byronAdr ->
517+
[ "address era" .= String "Byron"
518+
, "address" .= serialiseAddress byronAdr
519+
, "amount" .= friendlyLedgerValue era ledgerValue
520+
]
521+
AddressInEra (ShelleyAddressInEra _) saddr@(ShelleyAddress net cred stake) ->
514522
friendlyPaymentCredential (fromShelleyPaymentCredential cred)
515523
: [ "address era" .= Aeson.String "Shelley"
516524
, "network" .= net
517525
, "address" .= serialiseAddress saddr
518-
, "amount" .= friendlyTxOutValue era amount
519-
, "stake reference" .= friendlyStakeReference (fromShelleyStakeReference stake)
526+
, "amount" .= friendlyLedgerValue era ledgerValue
527+
, "stake reference"
528+
.= friendlyStakeReference (fromShelleyStakeReference stake)
529+
, "datum" .= case ledgerTxOut ^. L.datumTxOutL of
530+
L.NoDatum -> Aeson.Null
531+
L.DatumHash h -> toJSON h
532+
L.Datum bd ->
533+
scriptDataToJson ScriptDataJsonDetailedSchema $
534+
fromAlonzoData (L.binaryDataToData bd)
535+
, "reference script" .= refScript
520536
]
521-
datum = ["datum" .= d | d <- maybeToList $ renderDatum mdatum]
522-
sinceAlonzo = ["reference script" .= script]
523-
in preAlonzo ++ datum ++ sinceAlonzo
524537
where
525-
renderDatum :: TxOutDatum CtxTx era -> Maybe Aeson.Value
526-
renderDatum = \case
527-
TxOutDatumNone -> Nothing
528-
TxOutDatumHash _ h -> Just $ toJSON h
529-
TxOutSupplementalDatum _ sData -> Just $ scriptDataToJson ScriptDataJsonDetailedSchema sData
530-
TxOutDatumInline _ sData -> Just $ scriptDataToJson ScriptDataJsonDetailedSchema sData
538+
beo = convert era :: BabbageEraOnwards era
539+
sbe = convert era :: ShelleyBasedEra era
531540

532541
friendlyStakeReference :: StakeAddressReference -> Aeson.Value
533542
friendlyStakeReference = \case
@@ -690,12 +699,6 @@ friendlyPaymentCredential = \case
690699
friendlyLovelace :: Lovelace -> Aeson.Value
691700
friendlyLovelace value = String $ docToText (pretty value)
692701

693-
friendlyTxOutValue :: Exp.Era era -> TxOutValue era -> Aeson.Value
694-
friendlyTxOutValue era = \case
695-
TxOutValueByron lovelace -> friendlyLovelace lovelace
696-
TxOutValueShelleyBased _ v ->
697-
Exp.obtainCommonConstraints era $ friendlyLedgerValue era v
698-
699702
friendlyLedgerValue
700703
:: ()
701704
=> Exp.Era era

‎cardano-cli/src/Cardano/CLI/Compatible/StakeAddress/Run.hs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module Cardano.CLI.Compatible.StakeAddress.Run
1010
)
1111
where
1212

13-
import Cardano.Api hiding (makeStakeAddressRegistrationCertificate)
13+
import Cardano.Api
1414
import Cardano.Api.Compatible.Certificate
1515
import Cardano.Api.Experimental qualified as Exp
1616
import Cardano.Api.Ledger qualified as L

‎cardano-cli/src/Cardano/CLI/Compatible/StakePool/Command.hs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module Cardano.CLI.Compatible.StakePool.Command
1010
where
1111

1212
import Cardano.Api
13+
import Cardano.Api.Experimental.Certificate (StakePoolMetadataReference, StakePoolRelay)
1314

1415
import Cardano.CLI.Type.Common
1516
import Cardano.CLI.Type.Key

‎cardano-cli/src/Cardano/CLI/Compatible/StakePool/Run.hs‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ module Cardano.CLI.Compatible.StakePool.Run
99
)
1010
where
1111

12-
import Cardano.Api hiding (makeStakePoolRegistrationCertificate)
12+
import Cardano.Api
1313
import Cardano.Api.Compatible.Certificate
1414
import Cardano.Api.Experimental qualified as Exp
15+
import Cardano.Api.Experimental.Certificate (StakePoolParameters (..), toShelleyPoolParams)
1516

1617
import Cardano.CLI.Compatible.Exception
1718
import Cardano.CLI.Compatible.StakePool.Command

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import Cardano.CLI.Type.Common
3838

3939
import Control.Monad
4040
import Data.Map.Ordered.Strict qualified as OMap
41+
import Data.Map.Strict qualified as Map
4142
import Lens.Micro
4243

4344
runCompatibleTransactionCmd
@@ -60,7 +61,8 @@ runCompatibleTransactionCmd
6061
) = shelleyBasedEraConstraints sbe $ do
6162
sks <- mapM (fromEitherIOCli . readWitnessSigningData) witnesses
6263

63-
allOuts <- mapM (toTxOutInAnyEra sbe) outs
64+
(allOuts, extraDatumsMapList) <- mapAndUnzipM (toTxOutInAnyEra sbe) outs
65+
let extraDatums = Map.unions extraDatumsMapList
6466

6567
certFilesAndMaybeScriptWits <-
6668
readCertificateScriptWitnesses' sbe certificates
@@ -107,7 +109,7 @@ runCompatibleTransactionCmd
107109

108110
transaction@(ShelleyTx _ ledgerTx) <-
109111
fromEitherCli $
110-
createCompatibleTx sbe ins allOuts fee protocolUpdates votes txCerts
112+
createCompatibleTx sbe ins allOuts extraDatums fee protocolUpdates votes txCerts
111113

112114
let txBody = ledgerTx ^. L.bodyTxL
113115

0 commit comments

Comments
 (0)