diff --git a/cardano-api/src/Cardano/Api/ProtocolParameters.hs b/cardano-api/src/Cardano/Api/ProtocolParameters.hs index cc3bba495a8..87f75fc0a96 100644 --- a/cardano-api/src/Cardano/Api/ProtocolParameters.hs +++ b/cardano-api/src/Cardano/Api/ProtocolParameters.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE BangPatterns #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} @@ -64,6 +65,7 @@ module Cardano.Api.ProtocolParameters ( import Prelude +import Control.Applicative ((<|>)) import Control.Monad import Data.Aeson (FromJSON (..), ToJSON (..), object, withObject, (.!=), (.:), (.:?), (.=)) @@ -106,8 +108,8 @@ import Text.PrettyBy.Default (display) import Cardano.Api.Address import Cardano.Api.Eras import Cardano.Api.Error -import Cardano.Api.HasTypeProxy import Cardano.Api.Hash +import Cardano.Api.HasTypeProxy import Cardano.Api.KeysByron import Cardano.Api.KeysShelley import Cardano.Api.Script @@ -120,7 +122,6 @@ import Cardano.Api.TxMetadata import Cardano.Api.Utils import Cardano.Api.Value - -- | The values of the set of /updatable/ protocol parameters. At any -- particular point on the chain there is a current set of parameters in use. -- @@ -1436,15 +1437,20 @@ toAlonzoPParams ProtocolParameters { protocolParamPoolPledgeInfluence, protocolParamMonetaryExpansion, protocolParamTreasuryCut, - protocolParamUTxOCostPerWord = Just utxoCostPerWord, + protocolParamUTxOCostPerWord, protocolParamCostModels, protocolParamPrices = Just prices, protocolParamMaxTxExUnits = Just maxTxExUnits, protocolParamMaxBlockExUnits = Just maxBlockExUnits, protocolParamMaxValueSize = Just maxValueSize, protocolParamCollateralPercent = Just collateralPercentage, - protocolParamMaxCollateralInputs = Just maxCollateralInputs + protocolParamMaxCollateralInputs = Just maxCollateralInputs, + protocolParamUTxOCostPerByte } = + let !coinsPerUTxOWord = fromMaybe + (error "toAlonzoPParams: must specify protocolParamUTxOCostPerWord or protocolParamUTxOCostPerByte") $ + protocolParamUTxOCostPerWord <|> ((* 8) <$> protocolParamUTxOCostPerByte) + in Alonzo.PParams { Alonzo._protocolVersion = let (maj, minor) = protocolParamProtocolVersion @@ -1483,7 +1489,7 @@ toAlonzoPParams ProtocolParameters { (Ledger.boundRational protocolParamTreasuryCut) -- New params in Alonzo: - , Alonzo._coinsPerUTxOWord = toShelleyLovelace utxoCostPerWord + , Alonzo._coinsPerUTxOWord = toShelleyLovelace coinsPerUTxOWord , Alonzo._costmdls = either (\e -> error $ "toAlonzoPParams: invalid cost models, error: " <> e) id