Skip to content

Commit f129b23

Browse files
Add clamp to scaler with error
1 parent 5b56aaf commit f129b23

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/BotPlutusInterface/ExBudget.hs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,18 @@ estimateBudget pabConf txFile = do
5656
pparams <- left toBudgetError pparamsRes
5757
maxUnits <- maybeToEither (BudgetEstimationError "Missing max units in parameters") $ protocolParamMaxTxExUnits pparams
5858

59-
let scaledBudget = getScaledBudget maxUnits pabConf.pcBudgetMultiplier budget
59+
scaledBudget <- getScaledBudget maxUnits pabConf.pcBudgetMultiplier budget
6060

6161
(spendingBudgets, policyBudgets) <- mkBudgetMaps scaledBudget body
6262

6363
Right $ TxBudget spendingBudgets policyBudgets
6464

6565
-- | Scale the budget clamping the total to the parameter limits
66-
getScaledBudget :: CAPI.ExecutionUnits -> Rational -> ExUnitsMap -> ExUnitsMap
67-
getScaledBudget maxUnits scaler budget = fmap (fmap $ scaleBudget scalers) budget
66+
getScaledBudget :: CAPI.ExecutionUnits -> Rational -> ExUnitsMap -> Either BudgetEstimationError ExUnitsMap
67+
getScaledBudget maxUnits scaler budget =
68+
if fst scalers >= 1 && snd scalers >= 1
69+
then Right $ fmap (fmap $ scaleBudget scalers) budget
70+
else Left $ BudgetEstimationError "Exceeded global transaction budget"
6871
where
6972
budgetSum = foldr addBudgets (CAPI.ExecutionUnits 0 0) $ rights $ Map.elems budget
7073
scalers =

0 commit comments

Comments
 (0)