From 2bdd8f0deef74f04ccbf92ba0b89dfbf2ced4e0e Mon Sep 17 00:00:00 2001 From: Pablo Lamela Date: Tue, 4 Feb 2025 14:03:50 +0100 Subject: [PATCH] Remove deprecated functions and update types and update `serialiseTxLedgerCddl` --- .../Cardano/Api/SerialiseLedgerCddl.hs | 56 +++++-------------- cardano-api/src/Cardano/Api.hs | 2 - .../cardano-api-test/Test/Cardano/Api/CBOR.hs | 32 ----------- 3 files changed, 14 insertions(+), 76 deletions(-) diff --git a/cardano-api/internal/Cardano/Api/SerialiseLedgerCddl.hs b/cardano-api/internal/Cardano/Api/SerialiseLedgerCddl.hs index 02f6282570..ce1ceb5da2 100644 --- a/cardano-api/internal/Cardano/Api/SerialiseLedgerCddl.hs +++ b/cardano-api/internal/Cardano/Api/SerialiseLedgerCddl.hs @@ -22,8 +22,6 @@ module Cardano.Api.SerialiseLedgerCddl , writeTxFileTextEnvelopeCddl , writeTxWitnessFileTextEnvelopeCddl -- Exported for testing - , serialiseTxLedgerCddl - , deserialiseTxLedgerCddl , deserialiseByronTxCddl , serialiseWitnessLedgerCddl , deserialiseWitnessLedgerCddl @@ -122,46 +120,6 @@ instance Error TextEnvelopeCddlError where TextEnvelopeCddlErrByronKeyWitnessUnsupported -> "TextEnvelopeCddl error: Byron key witnesses are currently unsupported." -{-# DEPRECATED - serialiseTxLedgerCddl - "Use 'serialiseToTextEnvelope' from 'Cardano.Api.SerialiseTextEnvelope' instead." - #-} -serialiseTxLedgerCddl :: ShelleyBasedEra era -> Tx era -> TextEnvelope -serialiseTxLedgerCddl era tx = - shelleyBasedEraConstraints era $ - (serialiseToTextEnvelope (Just (TextEnvelopeDescr "Ledger Cddl Format")) tx) - { teType = TextEnvelopeType $ T.unpack $ genType tx - } - where - genType :: Tx era -> Text - genType tx' = case getTxWitnesses tx' of - [] -> "Unwitnessed " <> genTxType - _ -> "Witnessed " <> genTxType - genTxType :: Text - genTxType = - case era of - ShelleyBasedEraShelley -> "Tx ShelleyEra" - ShelleyBasedEraAllegra -> "Tx AllegraEra" - ShelleyBasedEraMary -> "Tx MaryEra" - ShelleyBasedEraAlonzo -> "Tx AlonzoEra" - ShelleyBasedEraBabbage -> "Tx BabbageEra" - ShelleyBasedEraConway -> "Tx ConwayEra" - -{-# DEPRECATED - deserialiseTxLedgerCddl - "Use 'deserialiseFromTextEnvelope' from 'Cardano.Api.SerialiseTextEnvelope' instead." - #-} -deserialiseTxLedgerCddl - :: forall era - . ShelleyBasedEra era - -> TextEnvelope - -> Either TextEnvelopeError (Tx era) -deserialiseTxLedgerCddl era = - shelleyBasedEraConstraints era $ deserialiseFromTextEnvelope asType - where - asType :: AsType (Tx era) - asType = shelleyBasedEraConstraints era $ proxyToAsType Proxy - writeByronTxFileTextEnvelopeCddl :: File content Out -> Byron.ATxAux ByteString @@ -254,6 +212,11 @@ writeTxFileTextEnvelopeCddl era path tx = where txJson = encodePretty' textEnvelopeCddlJSONConfig (serialiseTxLedgerCddl era tx) <> "\n" + serialiseTxLedgerCddl :: ShelleyBasedEra era -> Tx era -> TextEnvelope + serialiseTxLedgerCddl era' tx' = + shelleyBasedEraConstraints era' $ + serialiseToTextEnvelope (Just (TextEnvelopeDescr "Ledger Cddl Format")) tx' + writeTxWitnessFileTextEnvelopeCddl :: ShelleyBasedEra era -> File () Out @@ -312,6 +275,15 @@ deserialiseFromTextEnvelopeCddlAnyOf types teCddl = matching (FromCDDLTx ttoken _f) = TextEnvelopeType (T.unpack ttoken) `legacyComparison` teType teCddl matching (FromCDDLWitness ttoken _f) = TextEnvelopeType (T.unpack ttoken) `legacyComparison` teType teCddl + deserialiseTxLedgerCddl + :: forall era + . ShelleyBasedEra era + -> TextEnvelope + -> Either TextEnvelopeError (Tx era) + deserialiseTxLedgerCddl era = + shelleyBasedEraConstraints era $ + deserialiseFromTextEnvelope (shelleyBasedEraConstraints era $ proxyToAsType Proxy) + -- Parse the text into types because this will increase code readability and -- will make it easier to keep track of the different Cddl descriptions via -- a single sum data type. diff --git a/cardano-api/src/Cardano/Api.hs b/cardano-api/src/Cardano/Api.hs index dfae71c4ca..530aa43880 100644 --- a/cardano-api/src/Cardano/Api.hs +++ b/cardano-api/src/Cardano/Api.hs @@ -735,8 +735,6 @@ module Cardano.Api , deserialiseFromTextEnvelopeCddlAnyOf , writeTxFileTextEnvelopeCddl , writeTxWitnessFileTextEnvelopeCddl - , serialiseTxLedgerCddl - , deserialiseTxLedgerCddl , deserialiseByronTxCddl , serialiseWitnessLedgerCddl , deserialiseWitnessLedgerCddl diff --git a/cardano-api/test/cardano-api-test/Test/Cardano/Api/CBOR.hs b/cardano-api/test/cardano-api-test/Test/Cardano/Api/CBOR.hs index 177918a60d..073ec428cd 100644 --- a/cardano-api/test/cardano-api-test/Test/Cardano/Api/CBOR.hs +++ b/cardano-api/test/cardano-api-test/Test/Cardano/Api/CBOR.hs @@ -13,7 +13,6 @@ where import Cardano.Api import Cardano.Api.Script import Cardano.Api.SerialiseLedgerCddl (cddlTypeToEra) -import Cardano.Api.SerialiseTextEnvelope (TextEnvelopeDescr (TextEnvelopeDescr)) import Cardano.Api.Shelley (AsType (..)) import qualified Data.ByteString.Base16 as Base16 @@ -41,28 +40,6 @@ import Test.Tasty.Hedgehog (testProperty) -- TODO: Need to add PaymentExtendedKey roundtrip tests however -- we can't derive an Eq instance for Crypto.HD.XPrv --- This is the same test as prop_roundtrip_witness_CBOR but uses the --- new function `serialiseTxLedgerCddl` instead of the deprecated --- `serialiseToTextEnvelope`. `deserialiseTxLedgerCddl` must be --- compatible with both during the transition. -prop_forward_compatibility_txbody_CBOR :: Property -prop_forward_compatibility_txbody_CBOR = H.property $ do - AnyShelleyBasedEra era <- H.noteShowM . H.forAll $ Gen.element [minBound .. maxBound] - x <- H.forAll $ makeSignedTransaction [] . fst <$> genValidTxBody era - shelleyBasedEraConstraints - era - ( H.tripping - x - (serialiseToTextEnvelope (Just (TextEnvelopeDescr "Ledger Cddl Format"))) - (deserialiseTxLedgerCddl era) - ) - -prop_roundtrip_txbody_CBOR :: Property -prop_roundtrip_txbody_CBOR = H.property $ do - AnyShelleyBasedEra era <- H.noteShowM . H.forAll $ Gen.element [minBound .. maxBound] - x <- H.forAll $ makeSignedTransaction [] . fst <$> genValidTxBody era - H.tripping x (serialiseTxLedgerCddl era) (deserialiseTxLedgerCddl era) - prop_roundtrip_tx_CBOR :: Property prop_roundtrip_tx_CBOR = H.property $ do AnyShelleyBasedEra era <- H.noteShowM . H.forAll $ Gen.element [minBound .. maxBound] @@ -289,12 +266,6 @@ prop_TxWitness_cddlTypeToEra = H.property $ do getProxy :: forall a. a -> Proxy a getProxy _ = Proxy -prop_roundtrip_Tx_Cddl :: Property -prop_roundtrip_Tx_Cddl = H.property $ do - AnyShelleyBasedEra era <- H.noteShowM . H.forAll $ Gen.element [minBound .. maxBound] - x <- forAll $ genTx era - H.tripping x (serialiseTxLedgerCddl era) (deserialiseTxLedgerCddl era) - prop_roundtrip_TxWitness_Cddl :: Property prop_roundtrip_TxWitness_Cddl = H.property $ do AnyShelleyBasedEra sbe <- H.noteShowM . H.forAll $ Gen.element [minBound .. maxBound] @@ -404,9 +375,6 @@ tests = "roundtrip UpdateProposal CBOR" prop_roundtrip_UpdateProposal_CBOR , testProperty "roundtrip ScriptData CBOR" prop_roundtrip_ScriptData_CBOR - , testProperty "roundtrip txbody forward compatibility CBOR" prop_forward_compatibility_txbody_CBOR - , testProperty "roundtrip txbody CBOR" prop_roundtrip_txbody_CBOR - , testProperty "roundtrip Tx Cddl" prop_roundtrip_Tx_Cddl , testProperty "roundtrip TxWitness Cddl" prop_roundtrip_TxWitness_Cddl , testProperty "roundtrip tx CBOR" prop_roundtrip_tx_CBOR , testProperty