{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NumericUnderscores #-} {-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-deprecations #-} module Test.Cardano.Ledger.Examples.AlonzoAPI (tests, defaultPParams) where import Cardano.Ledger.Alonzo.Tx (alonzoMinFeeTx, hashData) import Cardano.Ledger.Alonzo.TxWits (AlonzoEraTxWits (..), TxDats (..), unTxDatsL) import Cardano.Ledger.BaseTypes (ProtVer (..), inject) import Cardano.Ledger.Coin (Coin (..)) import Cardano.Ledger.Conway.Core ( AlonzoEraPParams, AlonzoEraTxBody (..), AsIx (..), EraPParams (..), EraTxOut (..), PParams, emptyPParams, eraProtVerLow, ppCollateralPercentageL, ppCostModelsL, ppMaxBlockExUnitsL, ppMaxTxExUnitsL, ppMaxValSizeL, ppMinFeeAL, pattern SpendingPurpose, ) import Cardano.Ledger.Core (EraScript (..), EraTx (..), EraTxBody (..), EraTxWits (..), hashScript) import Cardano.Ledger.Hashes (hashAnnotated) import Cardano.Ledger.Plutus (ExUnits (..)) import Cardano.Ledger.Plutus.Data (Data (..)) import Cardano.Ledger.Plutus.Language (Language (..)) import Cardano.Ledger.Shelley.Scripts (pattern RequireAllOf) import Cardano.Ledger.Tools (estimateMinFeeTx) import qualified Data.Map.Strict as Map import qualified Data.Set as Set import Lens.Micro ((&), (.~)) import qualified PlutusLedgerApi.V1 as PV1 import Test.Cardano.Ledger.Common import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) import Test.Cardano.Ledger.Examples.STSTestUtils ( EraModel (..), mkGenesisTxIn, mkSingleRedeemer, mkTxDats, someAddr, someKeys, ) import Test.Cardano.Ledger.Generic.ApplyTx (defaultPPs) import Test.Cardano.Ledger.Generic.Instances () import Test.Cardano.Ledger.Generic.Proof (AlonzoEra, Reflect (..)) import Test.Cardano.Ledger.Generic.TxGen () import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) tests :: Spec tests :: Spec tests = String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Alonzo API" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do String -> Expectation -> SpecWith (Arg Expectation) forall a. (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) it String "estimateMinFee" (Expectation -> SpecWith (Arg Expectation)) -> Expectation -> SpecWith (Arg Expectation) forall a b. (a -> b) -> a -> b $ do forall era. (Reflect era, AlonzoEraTxWits era, AlonzoEraTxBody era, EraModel era) => Expectation testEstimateMinFee @AlonzoEra testEstimateMinFee :: forall era. ( Reflect era , AlonzoEraTxWits era , AlonzoEraTxBody era , EraModel era ) => Expectation testEstimateMinFee :: forall era. (Reflect era, AlonzoEraTxWits era, AlonzoEraTxBody era, EraModel era) => Expectation testEstimateMinFee = forall era. EraTx era => PParams era -> Tx TopTx era -> Int -> Int -> Int -> Coin estimateMinFeeTx @era PParams era pparams Tx TopTx era validatingTxNoWits Int 1 Int 0 Int 0 Coin -> Coin -> Expectation forall a. (HasCallStack, Show a, Eq a) => a -> a -> Expectation `shouldBe` PParams era -> Tx TopTx era -> Coin forall era (l :: TxLevel). (EraTx era, AlonzoEraTxWits era, AlonzoEraPParams era) => PParams era -> Tx l era -> Coin alonzoMinFeeTx PParams era pparams Tx TopTx era validatingTx where pparams :: PParams era pparams = PParams era -> PParams era forall era. AlonzoEraPParams era => PParams era -> PParams era defaultPPs PParams era forall era. EraPParams era => PParams era emptyPParams PParams era -> (PParams era -> PParams era) -> PParams era forall a b. a -> (a -> b) -> b & (Coin -> Identity Coin) -> PParams era -> Identity (PParams era) forall era. (EraPParams era, HasCallStack) => Lens' (PParams era) Coin Lens' (PParams era) Coin ppMinFeeAL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era)) -> Coin -> PParams era -> PParams era forall s t a b. ASetter s t a b -> b -> s -> t .~ Integer -> Coin Coin Integer 1 dat :: Data era dat = Data -> Data era forall era. Era era => Data -> Data era Data (Integer -> Data PV1.I Integer 123) dataMap :: Map DataHash (Data era) dataMap = DataHash -> Data era -> Map DataHash (Data era) forall k a. k -> a -> Map k a Map.singleton (Data era -> DataHash forall era. Data era -> DataHash hashData Data era dat) Data era dat script :: Script era script = NativeScript era -> Script era forall era. EraScript era => NativeScript era -> Script era fromNativeScript (NativeScript era -> Script era) -> NativeScript era -> Script era forall a b. (a -> b) -> a -> b $ StrictSeq (NativeScript era) -> NativeScript era forall era. ShelleyEraScript era => StrictSeq (NativeScript era) -> NativeScript era RequireAllOf StrictSeq (NativeScript era) forall a. Monoid a => a mempty scriptMap :: Map ScriptHash (Script era) scriptMap = ScriptHash -> Script era -> Map ScriptHash (Script era) forall k a. k -> a -> Map k a Map.singleton (Script era -> ScriptHash forall era. EraScript era => Script era -> ScriptHash hashScript Script era script) Script era script validatingTxNoWits :: Tx TopTx era validatingTxNoWits = TxBody TopTx era -> Tx TopTx era forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era forall (l :: TxLevel). TxBody l era -> Tx l era mkBasicTx TxBody TopTx era validatingBody Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era forall a b. a -> (a -> b) -> b & (TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall era (l :: TxLevel). EraTx era => Lens' (Tx l era) (TxWits era) forall (l :: TxLevel). Lens' (Tx l era) (TxWits era) witsTxL ((TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> ((Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> TxWits era -> Identity (TxWits era)) -> (Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> Tx TopTx era -> Identity (Tx TopTx era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> TxWits era -> Identity (TxWits era) forall era. EraTxWits era => Lens' (TxWits era) (Map ScriptHash (Script era)) Lens' (TxWits era) (Map ScriptHash (Script era)) scriptTxWitsL ((Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> Tx TopTx era -> Identity (Tx TopTx era)) -> Map ScriptHash (Script era) -> Tx TopTx era -> Tx TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ [(Script era -> ScriptHash forall era. EraScript era => Script era -> ScriptHash hashScript Script era script, Script era script)] Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era forall a b. a -> (a -> b) -> b & (TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall era (l :: TxLevel). EraTx era => Lens' (Tx l era) (TxWits era) forall (l :: TxLevel). Lens' (Tx l era) (TxWits era) witsTxL ((TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> ((TxDats era -> Identity (TxDats era)) -> TxWits era -> Identity (TxWits era)) -> (TxDats era -> Identity (TxDats era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (TxDats era -> Identity (TxDats era)) -> TxWits era -> Identity (TxWits era) forall era. AlonzoEraTxWits era => Lens' (TxWits era) (TxDats era) Lens' (TxWits era) (TxDats era) datsTxWitsL ((TxDats era -> Identity (TxDats era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> TxDats era -> Tx TopTx era -> Tx TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ Map DataHash (Data era) -> TxDats era forall era. Era era => Map DataHash (Data era) -> TxDats era TxDats [(Data era -> DataHash forall era. Data era -> DataHash hashData Data era dat, Data era dat)] Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era forall a b. a -> (a -> b) -> b & (TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall era (l :: TxLevel). EraTx era => Lens' (Tx l era) (TxWits era) forall (l :: TxLevel). Lens' (Tx l era) (TxWits era) witsTxL ((TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> ((Redeemers era -> Identity (Redeemers era)) -> TxWits era -> Identity (TxWits era)) -> (Redeemers era -> Identity (Redeemers era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Redeemers era -> Identity (Redeemers era)) -> TxWits era -> Identity (TxWits era) forall era. AlonzoEraTxWits era => Lens' (TxWits era) (Redeemers era) Lens' (TxWits era) (Redeemers era) rdmrsTxWitsL ((Redeemers era -> Identity (Redeemers era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> Redeemers era -> Tx TopTx era -> Tx TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ Redeemers era redeemers validatingTx :: Tx TopTx era validatingTx = TxBody TopTx era -> Tx TopTx era forall era (l :: TxLevel). EraTx era => TxBody l era -> Tx l era forall (l :: TxLevel). TxBody l era -> Tx l era mkBasicTx TxBody TopTx era validatingBody Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era forall a b. a -> (a -> b) -> b & (TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall era (l :: TxLevel). EraTx era => Lens' (Tx l era) (TxWits era) forall (l :: TxLevel). Lens' (Tx l era) (TxWits era) witsTxL ((TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> ((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness))) -> TxWits era -> Identity (TxWits era)) -> (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness))) -> Tx TopTx era -> Identity (Tx TopTx era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Set (WitVKey Witness) -> Identity (Set (WitVKey Witness))) -> TxWits era -> Identity (TxWits era) forall era. EraTxWits era => Lens' (TxWits era) (Set (WitVKey Witness)) Lens' (TxWits era) (Set (WitVKey Witness)) addrTxWitsL ((Set (WitVKey Witness) -> Identity (Set (WitVKey Witness))) -> Tx TopTx era -> Identity (Tx TopTx era)) -> Set (WitVKey Witness) -> Tx TopTx era -> Tx TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ WitVKey Witness -> Set (WitVKey Witness) forall a. a -> Set a Set.singleton (SafeHash EraIndependentTxBody -> KeyPair Payment -> WitVKey Witness forall (kr :: KeyRole). SafeHash EraIndependentTxBody -> KeyPair kr -> WitVKey Witness mkWitnessVKey (TxBody TopTx era -> SafeHash EraIndependentTxBody forall x i. HashAnnotated x i => x -> SafeHash i hashAnnotated TxBody TopTx era validatingBody) KeyPair Payment someKeys) Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era forall a b. a -> (a -> b) -> b & (TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall era (l :: TxLevel). EraTx era => Lens' (Tx l era) (TxWits era) forall (l :: TxLevel). Lens' (Tx l era) (TxWits era) witsTxL ((TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> ((Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> TxWits era -> Identity (TxWits era)) -> (Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> Tx TopTx era -> Identity (Tx TopTx era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> TxWits era -> Identity (TxWits era) forall era. EraTxWits era => Lens' (TxWits era) (Map ScriptHash (Script era)) Lens' (TxWits era) (Map ScriptHash (Script era)) scriptTxWitsL ((Map ScriptHash (Script era) -> Identity (Map ScriptHash (Script era))) -> Tx TopTx era -> Identity (Tx TopTx era)) -> Map ScriptHash (Script era) -> Tx TopTx era -> Tx TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ Map ScriptHash (Script era) scriptMap Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era forall a b. a -> (a -> b) -> b & (TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall era (l :: TxLevel). EraTx era => Lens' (Tx l era) (TxWits era) forall (l :: TxLevel). Lens' (Tx l era) (TxWits era) witsTxL ((TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> ((Map DataHash (Data era) -> Identity (Map DataHash (Data era))) -> TxWits era -> Identity (TxWits era)) -> (Map DataHash (Data era) -> Identity (Map DataHash (Data era))) -> Tx TopTx era -> Identity (Tx TopTx era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (TxDats era -> Identity (TxDats era)) -> TxWits era -> Identity (TxWits era) forall era. AlonzoEraTxWits era => Lens' (TxWits era) (TxDats era) Lens' (TxWits era) (TxDats era) datsTxWitsL ((TxDats era -> Identity (TxDats era)) -> TxWits era -> Identity (TxWits era)) -> ((Map DataHash (Data era) -> Identity (Map DataHash (Data era))) -> TxDats era -> Identity (TxDats era)) -> (Map DataHash (Data era) -> Identity (Map DataHash (Data era))) -> TxWits era -> Identity (TxWits era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Map DataHash (Data era) -> Identity (Map DataHash (Data era))) -> TxDats era -> Identity (TxDats era) forall era. Era era => Lens' (TxDats era) (Map DataHash (Data era)) Lens' (TxDats era) (Map DataHash (Data era)) unTxDatsL ((Map DataHash (Data era) -> Identity (Map DataHash (Data era))) -> Tx TopTx era -> Identity (Tx TopTx era)) -> Map DataHash (Data era) -> Tx TopTx era -> Tx TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ Map DataHash (Data era) dataMap Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era forall a b. a -> (a -> b) -> b & (TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall era (l :: TxLevel). EraTx era => Lens' (Tx l era) (TxWits era) forall (l :: TxLevel). Lens' (Tx l era) (TxWits era) witsTxL ((TxWits era -> Identity (TxWits era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> ((Redeemers era -> Identity (Redeemers era)) -> TxWits era -> Identity (TxWits era)) -> (Redeemers era -> Identity (Redeemers era)) -> Tx TopTx era -> Identity (Tx TopTx era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Redeemers era -> Identity (Redeemers era)) -> TxWits era -> Identity (TxWits era) forall era. AlonzoEraTxWits era => Lens' (TxWits era) (Redeemers era) Lens' (TxWits era) (Redeemers era) rdmrsTxWitsL ((Redeemers era -> Identity (Redeemers era)) -> Tx TopTx era -> Identity (Tx TopTx era)) -> Redeemers era -> Tx TopTx era -> Tx TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ Redeemers era redeemers validatingBody :: TxBody TopTx era validatingBody = TxBody TopTx era forall era (l :: TxLevel). (EraTxBody era, Typeable l) => TxBody l era forall (l :: TxLevel). Typeable l => TxBody l era mkBasicTxBody TxBody TopTx era -> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era forall a b. a -> (a -> b) -> b & (Set TxIn -> Identity (Set TxIn)) -> TxBody TopTx era -> Identity (TxBody TopTx era) forall era (l :: TxLevel). EraTxBody era => Lens' (TxBody l era) (Set TxIn) forall (l :: TxLevel). Lens' (TxBody l era) (Set TxIn) inputsTxBodyL ((Set TxIn -> Identity (Set TxIn)) -> TxBody TopTx era -> Identity (TxBody TopTx era)) -> Set TxIn -> TxBody TopTx era -> TxBody TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ [HasCallStack => Integer -> TxIn Integer -> TxIn mkGenesisTxIn Integer 1] TxBody TopTx era -> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era forall a b. a -> (a -> b) -> b & (Set TxIn -> Identity (Set TxIn)) -> TxBody TopTx era -> Identity (TxBody TopTx era) forall era. AlonzoEraTxBody era => Lens' (TxBody TopTx era) (Set TxIn) Lens' (TxBody TopTx era) (Set TxIn) collateralInputsTxBodyL ((Set TxIn -> Identity (Set TxIn)) -> TxBody TopTx era -> Identity (TxBody TopTx era)) -> Set TxIn -> TxBody TopTx era -> TxBody TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ [HasCallStack => Integer -> TxIn Integer -> TxIn mkGenesisTxIn Integer 11] TxBody TopTx era -> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era forall a b. a -> (a -> b) -> b & (StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era))) -> TxBody TopTx era -> Identity (TxBody TopTx era) forall era (l :: TxLevel). EraTxBody era => Lens' (TxBody l era) (StrictSeq (TxOut era)) forall (l :: TxLevel). Lens' (TxBody l era) (StrictSeq (TxOut era)) outputsTxBodyL ((StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era))) -> TxBody TopTx era -> Identity (TxBody TopTx era)) -> StrictSeq (TxOut era) -> TxBody TopTx era -> TxBody TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ [forall era. (EraTxOut era, HasCallStack) => Addr -> Value era -> TxOut era mkBasicTxOut @era Addr someAddr (Coin -> Value era forall t s. Inject t s => t -> s inject (Coin -> Value era) -> Coin -> Value era forall a b. (a -> b) -> a -> b $ Integer -> Coin Coin Integer 4995)] TxBody TopTx era -> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era forall a b. a -> (a -> b) -> b & (Coin -> Identity Coin) -> TxBody TopTx era -> Identity (TxBody TopTx era) forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin Lens' (TxBody TopTx era) Coin feeTxBodyL ((Coin -> Identity Coin) -> TxBody TopTx era -> Identity (TxBody TopTx era)) -> Coin -> TxBody TopTx era -> TxBody TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ Integer -> Coin Coin Integer 316 TxBody TopTx era -> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era forall a b. a -> (a -> b) -> b & (StrictMaybe ScriptIntegrityHash -> Identity (StrictMaybe ScriptIntegrityHash)) -> TxBody TopTx era -> Identity (TxBody TopTx era) forall era (l :: TxLevel). AlonzoEraTxBody era => Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash) forall (l :: TxLevel). Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash) scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash -> Identity (StrictMaybe ScriptIntegrityHash)) -> TxBody TopTx era -> Identity (TxBody TopTx era)) -> StrictMaybe ScriptIntegrityHash -> TxBody TopTx era -> TxBody TopTx era forall s t a b. ASetter s t a b -> b -> s -> t .~ forall era. EraModel era => PParams era -> [Language] -> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash newScriptIntegrityHash @era PParams era forall era. AlonzoEraPParams era => PParams era defaultPParams [Item [Language] Language PlutusV1] Redeemers era redeemers (Data era -> TxDats era forall era. Era era => Data era -> TxDats era mkTxDats (Data -> Data era forall era. Era era => Data -> Data era Data (Integer -> Data PV1.I Integer 123))) redeemers :: Redeemers era redeemers = PlutusPurpose AsIx era -> Data era -> Redeemers era forall era. AlonzoEraScript era => PlutusPurpose AsIx era -> Data era -> Redeemers era mkSingleRedeemer (AsIx Word32 TxIn -> PlutusPurpose AsIx era forall era (f :: * -> * -> *). AlonzoEraScript era => f Word32 TxIn -> PlutusPurpose f era SpendingPurpose (AsIx Word32 TxIn -> PlutusPurpose AsIx era) -> AsIx Word32 TxIn -> PlutusPurpose AsIx era forall a b. (a -> b) -> a -> b $ Word32 -> AsIx Word32 TxIn forall ix it. ix -> AsIx ix it AsIx Word32 0) (Data -> Data era forall era. Era era => Data -> Data era Data (Integer -> Data PV1.I Integer 42)) defaultPParams :: forall era. AlonzoEraPParams era => PParams era defaultPParams :: forall era. AlonzoEraPParams era => PParams era defaultPParams = forall era. EraPParams era => PParams era emptyPParams @era PParams era -> (PParams era -> PParams era) -> PParams era forall a b. a -> (a -> b) -> b & (CostModels -> Identity CostModels) -> PParams era -> Identity (PParams era) forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels Lens' (PParams era) CostModels ppCostModelsL ((CostModels -> Identity CostModels) -> PParams era -> Identity (PParams era)) -> CostModels -> PParams era -> PParams era forall s t a b. ASetter s t a b -> b -> s -> t .~ HasCallStack => [Language] -> CostModels [Language] -> CostModels zeroTestingCostModels [Item [Language] Language PlutusV1] PParams era -> (PParams era -> PParams era) -> PParams era forall a b. a -> (a -> b) -> b & (Nat -> Identity Nat) -> PParams era -> Identity (PParams era) forall era. AlonzoEraPParams era => Lens' (PParams era) Nat Lens' (PParams era) Nat ppMaxValSizeL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era)) -> Nat -> PParams era -> PParams era forall s t a b. ASetter s t a b -> b -> s -> t .~ Nat 1_000_000_000 PParams era -> (PParams era -> PParams era) -> PParams era forall a b. a -> (a -> b) -> b & (ExUnits -> Identity ExUnits) -> PParams era -> Identity (PParams era) forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits Lens' (PParams era) ExUnits ppMaxTxExUnitsL ((ExUnits -> Identity ExUnits) -> PParams era -> Identity (PParams era)) -> ExUnits -> PParams era -> PParams era forall s t a b. ASetter s t a b -> b -> s -> t .~ Nat -> Nat -> ExUnits ExUnits Nat 1_000_000 Nat 1_000_000 PParams era -> (PParams era -> PParams era) -> PParams era forall a b. a -> (a -> b) -> b & (ExUnits -> Identity ExUnits) -> PParams era -> Identity (PParams era) forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits Lens' (PParams era) ExUnits ppMaxBlockExUnitsL ((ExUnits -> Identity ExUnits) -> PParams era -> Identity (PParams era)) -> ExUnits -> PParams era -> PParams era forall s t a b. ASetter s t a b -> b -> s -> t .~ Nat -> Nat -> ExUnits ExUnits Nat 1_000_000 Nat 1_000_000 PParams era -> (PParams era -> PParams era) -> PParams era forall a b. a -> (a -> b) -> b & (ProtVer -> Identity ProtVer) -> PParams era -> Identity (PParams era) forall era. EraPParams era => Lens' (PParams era) ProtVer Lens' (PParams era) ProtVer ppProtocolVersionL ((ProtVer -> Identity ProtVer) -> PParams era -> Identity (PParams era)) -> ProtVer -> PParams era -> PParams era forall s t a b. ASetter s t a b -> b -> s -> t .~ Version -> Nat -> ProtVer ProtVer (forall era. Era era => Version eraProtVerLow @era) Nat 0 PParams era -> (PParams era -> PParams era) -> PParams era forall a b. a -> (a -> b) -> b & (Nat -> Identity Nat) -> PParams era -> Identity (PParams era) forall era. AlonzoEraPParams era => Lens' (PParams era) Nat Lens' (PParams era) Nat ppCollateralPercentageL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era)) -> Nat -> PParams era -> PParams era forall s t a b. ASetter s t a b -> b -> s -> t .~ Nat 100