diff --git a/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs b/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs index 0876cc59907..7a87d2fb44f 100644 --- a/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs +++ b/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/SizedMetadata.hs @@ -10,6 +10,7 @@ import Prelude import Cardano.Api import qualified Data.ByteString as BS +import Data.Default.Class import qualified Data.Map.Strict as Map import Data.Word (Word64) @@ -106,28 +107,15 @@ dummyTxSizeInEra metadata = case createAndValidateTransactionBody dummyTx of Left err -> error $ "metaDataSize " ++ show err where dummyTx :: TxBodyContent BuildTx era - dummyTx = (defaultTxBodyContent @BuildTx @era) + dummyTx = def { txIns = [ ( TxIn "dbaff4e270cfb55612d9e2ac4658a27c79da4a5271c6f90853042d1403733810" (TxIx 0) , BuildTxWith $ KeyWitness KeyWitnessForSpending ) ] - , txInsCollateral = TxInsCollateralNone - , txInsReference = TxInsReferenceNone - , txOuts = [] , txFee = mkTxFee 0 , txValidityRange = (TxValidityNoLowerBound, mkTxValidityUpperBound 0) , txMetadata = metadata - , txAuxScripts = TxAuxScriptsNone - , txExtraKeyWits = TxExtraKeyWitnessesNone - , txProtocolParams = BuildTxWith Nothing - , txWithdrawals = TxWithdrawalsNone - , txCertificates = TxCertificatesNone - , txUpdateProposal = TxUpdateProposalNone - , txMintValue = TxMintNone - , txScriptValidity = TxScriptValidityNone - , txReturnCollateral = TxReturnCollateralNone - , txTotalCollateral = TxTotalCollateralNone } dummyTxSize :: forall era . IsShelleyBasedEra era => AsType era -> Maybe TxMetadata -> Int diff --git a/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs b/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs index cfe7c6d255b..4607f5a7fa7 100644 --- a/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs +++ b/bench/tx-generator/src/Cardano/TxGenerator/Genesis.hs @@ -19,6 +19,7 @@ module Cardano.TxGenerator.Genesis where import Data.Bifunctor (bimap, second) +import Data.Default.Class import Data.List (find) import qualified Data.ListMap as ListMap (toList) @@ -124,24 +125,11 @@ mkGenesisTransaction key ttl fee txins txouts (`signShelleyTransaction` [WitnessGenesisUTxOKey key]) (createAndValidateTransactionBody txBodyContent) where - txBodyContent = (defaultTxBodyContent @BuildTx @era) + txBodyContent = def { txIns = zip txins $ repeat $ BuildTxWith $ KeyWitness KeyWitnessForSpending - , txInsCollateral = TxInsCollateralNone - , txInsReference = TxInsReferenceNone , txOuts = txouts , txFee = mkTxFee fee , txValidityRange = (TxValidityNoLowerBound, mkTxValidityUpperBound ttl) - , txMetadata = TxMetadataNone - , txAuxScripts = TxAuxScriptsNone - , txExtraKeyWits = TxExtraKeyWitnessesNone - , txProtocolParams = BuildTxWith Nothing - , txWithdrawals = TxWithdrawalsNone - , txCertificates = TxCertificatesNone - , txUpdateProposal = TxUpdateProposalNone - , txMintValue = TxMintNone - , txScriptValidity = TxScriptValidityNone - , txReturnCollateral = TxReturnCollateralNone - , txTotalCollateral = TxTotalCollateralNone } castKey :: SigningKey PaymentKey -> SigningKey GenesisUTxOKey diff --git a/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs b/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs index 27083a4fef3..c703a1083be 100644 --- a/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs +++ b/bench/tx-generator/src/Cardano/TxGenerator/Tx.hs @@ -9,6 +9,7 @@ module Cardano.TxGenerator.Tx import Data.Bifunctor (bimap, second) import qualified Data.ByteString as BS (length) +import Data.Default.Class import Data.Maybe (mapMaybe) import Cardano.Api @@ -94,24 +95,14 @@ genTx protocolParameters (collateral, collFunds) fee metadata inFunds outputs (createAndValidateTransactionBody txBodyContent) where allKeys = mapMaybe getFundKey $ inFunds ++ collFunds - txBodyContent = (defaultTxBodyContent @BuildTx @era) + txBodyContent = def { txIns = map (\f -> (getFundTxIn f, BuildTxWith $ getFundWitness f)) inFunds , txInsCollateral = collateral - , txInsReference = TxInsReferenceNone , txOuts = outputs , txFee = fee , txValidityRange = (TxValidityNoLowerBound, upperBound) , txMetadata = metadata - , txAuxScripts = TxAuxScriptsNone - , txExtraKeyWits = TxExtraKeyWitnessesNone , txProtocolParams = BuildTxWith $ Just protocolParameters - , txWithdrawals = TxWithdrawalsNone - , txCertificates = TxCertificatesNone - , txUpdateProposal = TxUpdateProposalNone - , txMintValue = TxMintNone - , txScriptValidity = TxScriptValidityNone - , txReturnCollateral = TxReturnCollateralNone - , txTotalCollateral = TxTotalCollateralNone } upperBound :: TxValidityUpperBound era diff --git a/bench/tx-generator/tx-generator.cabal b/bench/tx-generator/tx-generator.cabal index 8365586c730..5d656370294 100644 --- a/bench/tx-generator/tx-generator.cabal +++ b/bench/tx-generator/tx-generator.cabal @@ -104,6 +104,7 @@ library , cborg >= 0.2.2 && < 0.3 , containers , constraints-extras + , data-default-class , dlist , extra , formatting diff --git a/cardano-api/cardano-api.cabal b/cardano-api/cardano-api.cabal index 810fe939cb5..acdfaf06b24 100644 --- a/cardano-api/cardano-api.cabal +++ b/cardano-api/cardano-api.cabal @@ -59,7 +59,6 @@ library Cardano.Api.Convenience.Constraints Cardano.Api.Convenience.Construction Cardano.Api.Convenience.Query - Cardano.Api.DefaultValue Cardano.Api.DeserialiseAnyOf Cardano.Api.Environment Cardano.Api.EraCast @@ -131,6 +130,7 @@ library , contra-tracer , containers , cryptonite + , data-default-class , deepseq , directory , either diff --git a/cardano-api/src/Cardano/Api.hs b/cardano-api/src/Cardano/Api.hs index 415e80fcbba..7285c3e7283 100644 --- a/cardano-api/src/Cardano/Api.hs +++ b/cardano-api/src/Cardano/Api.hs @@ -744,7 +744,6 @@ module Cardano.Api ( getIsCardanoEraConstraint, -- ** Misc - DefaultValue(..), ScriptLockedTxInsError(..), TxInsExistError(..), renderEra, @@ -764,7 +763,6 @@ import Cardano.Api.Certificate import Cardano.Api.Convenience.Constraints import Cardano.Api.Convenience.Construction import Cardano.Api.Convenience.Query -import Cardano.Api.DefaultValue import Cardano.Api.DeserialiseAnyOf import Cardano.Api.Environment import Cardano.Api.EraCast diff --git a/cardano-api/src/Cardano/Api/DefaultValue.hs b/cardano-api/src/Cardano/Api/DefaultValue.hs deleted file mode 100644 index 4f36cb2e3f7..00000000000 --- a/cardano-api/src/Cardano/Api/DefaultValue.hs +++ /dev/null @@ -1,12 +0,0 @@ -module Cardano.Api.DefaultValue - ( DefaultValue(..) - ) where - -class DefaultValue a where - defaultValue :: a - -instance DefaultValue () where - defaultValue = () - -instance DefaultValue (Maybe a) where - defaultValue = Nothing diff --git a/cardano-api/src/Cardano/Api/TxBody.hs b/cardano-api/src/Cardano/Api/TxBody.hs index d76c9e7cb0b..7b581a5be3a 100644 --- a/cardano-api/src/Cardano/Api/TxBody.hs +++ b/cardano-api/src/Cardano/Api/TxBody.hs @@ -169,6 +169,7 @@ import Data.Bifunctor (first) import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BSC import qualified Data.ByteString.Lazy as LBS +import Data.Default.Class import Data.Foldable (for_, toList) import Data.Function (on) import Data.List (intercalate, sortBy) @@ -254,7 +255,6 @@ import Ouroboros.Consensus.Shelley.Eras (StandardAllegra, StandardAlon import Cardano.Api.Address import Cardano.Api.Certificate import Cardano.Api.Convenience.Constraints -import Cardano.Api.DefaultValue import Cardano.Api.EraCast import Cardano.Api.Eras import Cardano.Api.Error @@ -288,8 +288,8 @@ data ScriptValidity deriving (Eq, Show) -instance DefaultValue ScriptValidity where - defaultValue = ScriptInvalid +instance Default ScriptValidity where + def = ScriptInvalid instance ToCBOR ScriptValidity where toCBOR = toCBOR . scriptValidityToIsValid @@ -321,8 +321,8 @@ data TxScriptValidity era where deriving instance Eq (TxScriptValiditySupportedInEra era) deriving instance Show (TxScriptValiditySupportedInEra era) -instance DefaultValue (TxScriptValidity era) where - defaultValue = TxScriptValidityNone +instance Default (TxScriptValidity era) where + def = TxScriptValidityNone data TxScriptValiditySupportedInEra era where TxScriptValiditySupportedInAlonzoEra :: TxScriptValiditySupportedInEra AlonzoEra @@ -1168,11 +1168,11 @@ data BuildTxWith build a where ViewTx :: BuildTxWith ViewTx a BuildTxWith :: a -> BuildTxWith BuildTx a -instance DefaultValue (BuildTxWith ViewTx a) where - defaultValue = ViewTx +instance Default (BuildTxWith ViewTx a) where + def = ViewTx -instance DefaultValue a => DefaultValue (BuildTxWith BuildTx a) where - defaultValue = BuildTxWith defaultValue +instance Default a => Default (BuildTxWith BuildTx a) where + def = BuildTxWith def instance Functor (BuildTxWith build) where fmap _ ViewTx = ViewTx @@ -1195,8 +1195,8 @@ data TxInsCollateral era where -> [TxIn] -- Only key witnesses, no scripts. -> TxInsCollateral era -instance DefaultValue (TxInsCollateral era) where - defaultValue = TxInsCollateralNone +instance Default (TxInsCollateral era) where + def = TxInsCollateralNone deriving instance Eq (TxInsCollateral era) deriving instance Show (TxInsCollateral era) @@ -1212,8 +1212,8 @@ data TxInsReference build era where deriving instance Eq (TxInsReference build era) deriving instance Show (TxInsReference build era) -instance DefaultValue (TxInsReference build era) where - defaultValue = TxInsReferenceNone +instance Default (TxInsReference build era) where + def = TxInsReferenceNone -- ---------------------------------------------------------------------------- -- Transaction output values (era-dependent) @@ -1241,18 +1241,18 @@ deriving instance Eq (TxOutValue era) deriving instance Show (TxOutValue era) deriving instance Generic (TxOutValue era) -instance DefaultValue (TxOutValue ByronEra) where - defaultValue = TxOutAdaOnly AdaOnlyInByronEra mempty -instance DefaultValue (TxOutValue ShelleyEra) where - defaultValue = TxOutAdaOnly AdaOnlyInShelleyEra mempty -instance DefaultValue (TxOutValue AllegraEra) where - defaultValue = TxOutAdaOnly AdaOnlyInAllegraEra mempty -instance DefaultValue (TxOutValue MaryEra) where - defaultValue = TxOutValue MultiAssetInMaryEra mempty -instance DefaultValue (TxOutValue AlonzoEra) where - defaultValue = TxOutValue MultiAssetInAlonzoEra mempty -instance DefaultValue (TxOutValue BabbageEra) where - defaultValue = TxOutValue MultiAssetInBabbageEra mempty +instance Default (TxOutValue ByronEra) where + def = TxOutAdaOnly AdaOnlyInByronEra mempty +instance Default (TxOutValue ShelleyEra) where + def = TxOutAdaOnly AdaOnlyInShelleyEra mempty +instance Default (TxOutValue AllegraEra) where + def = TxOutAdaOnly AdaOnlyInAllegraEra mempty +instance Default (TxOutValue MaryEra) where + def = TxOutValue MultiAssetInMaryEra mempty +instance Default (TxOutValue AlonzoEra) where + def = TxOutValue MultiAssetInAlonzoEra mempty +instance Default (TxOutValue BabbageEra) where + def = TxOutValue MultiAssetInBabbageEra mempty instance ToJSON (TxOutValue era) where toJSON (TxOutAdaOnly _ ll) = toJSON ll @@ -1333,8 +1333,8 @@ data TxReturnCollateral ctx era where deriving instance Eq (TxReturnCollateral ctx era) deriving instance Show (TxReturnCollateral ctx era) -instance DefaultValue (TxReturnCollateral ctx era) where - defaultValue = TxReturnCollateralNone +instance Default (TxReturnCollateral ctx era) where + def = TxReturnCollateralNone data TxTotalCollateral era where @@ -1347,8 +1347,8 @@ data TxTotalCollateral era where deriving instance Eq (TxTotalCollateral era) deriving instance Show (TxTotalCollateral era) -instance DefaultValue (TxTotalCollateral era) where - defaultValue = TxTotalCollateralNone +instance Default (TxTotalCollateral era) where + def = TxTotalCollateralNone data TxTotalAndReturnCollateralSupportedInEra era where @@ -1451,8 +1451,8 @@ data TxFee era where deriving instance Eq (TxFee era) deriving instance Show (TxFee era) -instance IsCardanoEra era => DefaultValue (TxFee era) where - defaultValue = case cardanoEra @era of +instance IsCardanoEra era => Default (TxFee era) where + def = case cardanoEra @era of ByronEra -> TxFeeImplicit TxFeesImplicitInByronEra ShelleyEra -> TxFeeExplicit TxFeesExplicitInShelleyEra mempty AllegraEra -> TxFeeExplicit TxFeesExplicitInAllegraEra mempty @@ -1479,8 +1479,8 @@ data TxValidityUpperBound era where deriving instance Eq (TxValidityUpperBound era) deriving instance Show (TxValidityUpperBound era) -instance IsCardanoEra era => DefaultValue (TxValidityUpperBound era) where - defaultValue = case cardanoEra @era of +instance IsCardanoEra era => Default (TxValidityUpperBound era) where + def = case cardanoEra @era of ByronEra -> TxValidityNoUpperBound ValidityNoUpperBoundInByronEra ShelleyEra -> TxValidityUpperBound ValidityUpperBoundInShelleyEra maxBound AllegraEra -> TxValidityNoUpperBound ValidityNoUpperBoundInAllegraEra @@ -1499,8 +1499,8 @@ data TxValidityLowerBound era where deriving instance Eq (TxValidityLowerBound era) deriving instance Show (TxValidityLowerBound era) -instance DefaultValue (TxValidityLowerBound era) where - defaultValue = TxValidityNoLowerBound +instance Default (TxValidityLowerBound era) where + def = TxValidityNoLowerBound -- ---------------------------------------------------------------------------- -- Transaction metadata (era-dependent) @@ -1517,8 +1517,8 @@ data TxMetadataInEra era where deriving instance Eq (TxMetadataInEra era) deriving instance Show (TxMetadataInEra era) -instance DefaultValue (TxMetadataInEra era) where - defaultValue = TxMetadataNone +instance Default (TxMetadataInEra era) where + def = TxMetadataNone -- ---------------------------------------------------------------------------- -- Auxiliary scripts (era-dependent) @@ -1535,8 +1535,8 @@ data TxAuxScripts era where deriving instance Eq (TxAuxScripts era) deriving instance Show (TxAuxScripts era) -instance DefaultValue (TxAuxScripts era) where - defaultValue = TxAuxScriptsNone +instance Default (TxAuxScripts era) where + def = TxAuxScriptsNone -- ---------------------------------------------------------------------------- -- Optionally required signatures (era-dependent) @@ -1553,8 +1553,8 @@ data TxExtraKeyWitnesses era where deriving instance Eq (TxExtraKeyWitnesses era) deriving instance Show (TxExtraKeyWitnesses era) -instance DefaultValue (TxExtraKeyWitnesses era) where - defaultValue = TxExtraKeyWitnessesNone +instance Default (TxExtraKeyWitnesses era) where + def = TxExtraKeyWitnessesNone -- ---------------------------------------------------------------------------- -- Withdrawals within transactions (era-dependent) @@ -1572,8 +1572,8 @@ data TxWithdrawals build era where deriving instance Eq (TxWithdrawals build era) deriving instance Show (TxWithdrawals build era) -instance DefaultValue (TxWithdrawals build era) where - defaultValue = TxWithdrawalsNone +instance Default (TxWithdrawals build era) where + def = TxWithdrawalsNone -- ---------------------------------------------------------------------------- -- Certificates within transactions (era-dependent) @@ -1592,8 +1592,8 @@ data TxCertificates build era where deriving instance Eq (TxCertificates build era) deriving instance Show (TxCertificates build era) -instance DefaultValue (TxCertificates build era) where - defaultValue = TxCertificatesNone +instance Default (TxCertificates build era) where + def = TxCertificatesNone -- ---------------------------------------------------------------------------- -- Transaction update proposal (era-dependent) @@ -1610,8 +1610,8 @@ data TxUpdateProposal era where deriving instance Eq (TxUpdateProposal era) deriving instance Show (TxUpdateProposal era) -instance DefaultValue (TxUpdateProposal era) where - defaultValue = TxUpdateProposalNone +instance Default (TxUpdateProposal era) where + def = TxUpdateProposalNone -- ---------------------------------------------------------------------------- -- Value minting within transactions (era-dependent) @@ -1630,8 +1630,8 @@ data TxMintValue build era where deriving instance Eq (TxMintValue build era) deriving instance Show (TxMintValue build era) -instance DefaultValue (TxMintValue build era) where - defaultValue = TxMintNone +instance Default (TxMintValue build era) where + def = TxMintNone -- ---------------------------------------------------------------------------- -- Transaction body content @@ -1661,34 +1661,34 @@ data TxBodyContent build era = deriving (Eq, Show) instance - ( DefaultValue (BuildTxWith build (Maybe ProtocolParameters)) + ( Default (BuildTxWith build (Maybe ProtocolParameters)) , IsCardanoEra era - ) => DefaultValue (TxBodyContent build era) where - defaultValue = TxBodyContent + ) => Default (TxBodyContent build era) where + def = TxBodyContent { txIns = mempty - , txInsCollateral = defaultValue - , txInsReference = defaultValue + , txInsCollateral = def + , txInsReference = def , txOuts = mempty - , txTotalCollateral = defaultValue - , txReturnCollateral = defaultValue - , txFee = defaultValue - , txValidityRange = (defaultValue, defaultValue) - , txMetadata = defaultValue - , txAuxScripts = defaultValue - , txExtraKeyWits = defaultValue - , txProtocolParams = defaultValue - , txWithdrawals = defaultValue - , txCertificates = defaultValue + , txTotalCollateral = def + , txReturnCollateral = def + , txFee = def + , txValidityRange = (def, def) + , txMetadata = def + , txAuxScripts = def + , txExtraKeyWits = def + , txProtocolParams = def + , txWithdrawals = def + , txCertificates = def , txUpdateProposal = TxUpdateProposalNone - , txMintValue = defaultValue - , txScriptValidity = defaultValue + , txMintValue = def + , txScriptValidity = def } defaultTxBodyContent :: forall build era. () - => DefaultValue (BuildTxWith build (Maybe ProtocolParameters)) + => Default (BuildTxWith build (Maybe ProtocolParameters)) => IsCardanoEra era => TxBodyContent build era -defaultTxBodyContent = defaultValue +defaultTxBodyContent = def -- ---------------------------------------------------------------------------- @@ -3110,25 +3110,11 @@ makeByronTransactionBody TxBodyContent { txIns, txOuts } = do getByronTxBodyContent :: Annotated Byron.Tx ByteString -> TxBodyContent ViewTx ByronEra getByronTxBodyContent (Annotated Byron.UnsafeTx{txInputs, txOutputs} _) = - (defaultTxBodyContent @ViewTx @ByronEra) - { txIns = [ (fromByronTxIn input, ViewTx) | input <- toList txInputs] - , txInsCollateral = TxInsCollateralNone - , txInsReference = TxInsReferenceNone - , txOuts = fromByronTxOut <$> toList txOutputs - , txReturnCollateral = TxReturnCollateralNone - , txTotalCollateral = TxTotalCollateralNone - , txFee = TxFeeImplicit TxFeesImplicitInByronEra - , txValidityRange = (TxValidityNoLowerBound, TxValidityNoUpperBound ValidityNoUpperBoundInByronEra) - , txMetadata = TxMetadataNone - , txAuxScripts = TxAuxScriptsNone - , txExtraKeyWits = TxExtraKeyWitnessesNone - , txProtocolParams = ViewTx - , txWithdrawals = TxWithdrawalsNone - , txCertificates = TxCertificatesNone - , txUpdateProposal = TxUpdateProposalNone - , txMintValue = TxMintNone - , txScriptValidity = TxScriptValidityNone - } + def + { txIns = [(fromByronTxIn input, ViewTx) | input <- toList txInputs] + , txOuts = fromByronTxOut <$> toList txOutputs + , txFee = TxFeeImplicit TxFeesImplicitInByronEra + } convTxIns :: TxIns BuildTx era -> Set (Shelley.TxIn StandardCrypto) convTxIns txIns = Set.fromList (map (toShelleyTxIn . fst) txIns)