tx-generator-2.11: A transaction workload generator for Cardano clusters
Safe HaskellSafe-Inferred
LanguageHaskell2010

Cardano.TxGenerator.PlutusContext

Synopsis

Documentation

data PlutusAutoLimitingFactor Source #

Nothing references this type's name or uses its constructors outside this module.

Instances

Instances details
ToJSON PlutusAutoLimitingFactor Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Generic PlutusAutoLimitingFactor Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Associated Types

type Rep PlutusAutoLimitingFactor :: Type -> Type Source #

Show PlutusAutoLimitingFactor Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Eq PlutusAutoLimitingFactor Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

type Rep PlutusAutoLimitingFactor Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

type Rep PlutusAutoLimitingFactor = D1 ('MetaData "PlutusAutoLimitingFactor" "Cardano.TxGenerator.PlutusContext" "tx-generator-2.11-inplace" 'False) (C1 ('MetaCons "ExceededMemoryLimit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExceededStepLimit" 'PrefixI 'False) (U1 :: Type -> Type))

data PlutusBudgetFittingStrategy Source #

This type specifies the end to which a script's loop counter is calibrated

Constructors

TargetTxExpenditure

calibrate for maximum expenditure of per-tx-budget

TargetBlockExpenditure (Maybe Double)

calibrate for maximum expenditure of per-block-budget, with a scaling factor of [1.0, 2.0]

TargetTxsPerBlock Int

calibrate for stable tx count per block

Instances

Instances details
ToJSON PlutusBudgetFittingStrategy Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Generic PlutusBudgetFittingStrategy Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Associated Types

type Rep PlutusBudgetFittingStrategy :: Type -> Type Source #

Show PlutusBudgetFittingStrategy Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Eq PlutusBudgetFittingStrategy Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

type Rep PlutusBudgetFittingStrategy Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

type Rep PlutusBudgetFittingStrategy = D1 ('MetaData "PlutusBudgetFittingStrategy" "Cardano.TxGenerator.PlutusContext" "tx-generator-2.11-inplace" 'False) (C1 ('MetaCons "TargetTxExpenditure" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TargetBlockExpenditure" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Double))) :+: C1 ('MetaCons "TargetTxsPerBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))

data PlutusBudgetSummary Source #

This collects information describing the budget. It's only directly referenced in Cardano.Benchmarking.Script.Env to supply accessors as the state in an ActionM (RWST) monad and Cardano.Benchmarking.Script.Core where the only field touched is projectedTxSize.

Instances

Instances details
ToJSON PlutusBudgetSummary Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Generic PlutusBudgetSummary Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

Associated Types

type Rep PlutusBudgetSummary :: Type -> Type Source #

Show PlutusBudgetSummary Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

type Rep PlutusBudgetSummary Source # 
Instance details

Defined in Cardano.TxGenerator.PlutusContext

type Rep PlutusBudgetSummary = D1 ('MetaData "PlutusBudgetSummary" "Cardano.TxGenerator.PlutusContext" "tx-generator-2.11-inplace" 'False) (C1 ('MetaCons "PlutusBudgetSummary" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "budgetPerBlock") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExecutionUnits) :*: S1 ('MetaSel ('Just "budgetPerTx") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExecutionUnits)) :*: (S1 ('MetaSel ('Just "budgetPerTxInput") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExecutionUnits) :*: S1 ('MetaSel ('Just "budgetStrategy") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PlutusBudgetFittingStrategy))) :*: ((S1 ('MetaSel ('Just "budgetTarget") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExecutionUnits) :*: S1 ('MetaSel ('Just "scriptId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FilePath)) :*: (S1 ('MetaSel ('Just "scriptArgDatum") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ScriptData) :*: S1 ('MetaSel ('Just "scriptArgRedeemer") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ScriptData)))) :*: (((S1 ('MetaSel ('Just "loopCounter") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "loopLimitingFactors") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [PlutusAutoLimitingFactor])) :*: (S1 ('MetaSel ('Just "budgetUsedPerTxInput") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExecutionUnits) :*: S1 ('MetaSel ('Just "projectedBudgetUnusedPerBlock") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExecutionUnits))) :*: ((S1 ('MetaSel ('Just "projectedBudgetUnusedPerTx") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExecutionUnits) :*: S1 ('MetaSel ('Just "projectedTxPerBlock") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)) :*: (S1 ('MetaSel ('Just "projectedLoopsPerBlock") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "projectedTxSize") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Int)) :*: S1 ('MetaSel ('Just "strategyMessage") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe String))))))))

plutusAutoBudgetMaxOut :: ProtocolParameters -> ScriptInAnyLang -> PlutusAutoBudget -> PlutusBudgetFittingStrategy -> Int -> Either TxGenError (PlutusAutoBudget, Int, [PlutusAutoLimitingFactor]) Source #

Use a binary search to find a loop counter that maxes out the available script execution units. plutusAutoBudgetMaxOut makes two assumptions about the loop / PlutusAuto script: 1. The redeemer passed in is a valid one, and encodes i.a. the loop's termination value when counting down. 2. In the redeemer's argument structure, this value is the first numerical value that's encountered during traversal.

plutusAutoScaleBlockfit :: ProtocolParameters -> FilePath -> ScriptInAnyLang -> PlutusAutoBudget -> PlutusBudgetFittingStrategy -> Int -> Either TxGenError (PlutusBudgetSummary, PlutusAutoBudget, ExecutionUnits) Source #

Can find the optimal scaling factor for block expenditure, by aiming at highest loop count per block iff TargetBlockExpenditure Nothing is given; will calibrate loop for any fully specified fitting strategy otherwise

plutusBudgetSummary :: ProtocolParameters -> FilePath -> PlutusBudgetFittingStrategy -> (PlutusAutoBudget, Int, [PlutusAutoLimitingFactor]) -> ExecutionUnits -> Int -> PlutusBudgetSummary Source #

Only used in plutusAutoScaleBlockfit, this assembles a PlutusBudgetSummary from information about the how to budget. Some of the function arguments share names with the record fields mass imported with the Constr{..} notation, setting the field of the final result to that argument.

readScriptData :: FilePath -> IO (Either TxGenError HashableScriptData) Source #

Load serialized ScriptData, filling in an empty value if no .json file is given

scriptDataModifyNumber :: (Integer -> Integer) -> ScriptData -> ScriptData Source #

Modifies the first ScriptDataNumber encountered during traversal to the value provided

Orphan instances

ToJSON ScriptData Source # 
Instance details