Skip to content

Commit 5457bd9

Browse files
committed
Propagate HashableScriptData in bench folder
1 parent dfa1ec8 commit 5457bd9

File tree

6 files changed

+24
-24
lines changed

6 files changed

+24
-24
lines changed

Diff for: bench/tx-generator/src/Cardano/Benchmarking/Script/Aeson.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ instance FromJSON ProtocolParametersSource where
7979

8080
-- Orphan instance used in the tx-generator
8181
instance ToJSON ScriptData where
82-
toJSON = scriptDataToJson ScriptDataJsonNoSchema
82+
toJSON = scriptDataToJson ScriptDataJsonNoSchema . unsafeHashableScriptData
8383
instance FromJSON ScriptData where
8484
parseJSON v = case scriptDataFromJson ScriptDataJsonNoSchema v of
85-
Right r -> return r
85+
Right r -> return $ getScriptData r
8686
Left err -> fail $ show err
8787

8888
instance ToJSON Generator where

Diff for: bench/tx-generator/src/Cardano/Benchmarking/Script/Core.hs

+7-7
Original file line numberDiff line numberDiff line change
@@ -425,10 +425,10 @@ makePlutusContext ScriptSpec{..} = do
425425

426426
(scriptData, scriptRedeemer, executionUnits) <- case scriptSpecBudget of
427427
StaticScriptBudget sDataFile redeemerFile units withCheck -> do
428-
sData <- liftIOSafe $ readScriptData sDataFile
429-
redeemer <-liftIOSafe $ readScriptData redeemerFile
428+
sData <- liftIOSafe (readScriptData sDataFile)
429+
redeemer <- liftIOSafe (readScriptData redeemerFile)
430430
when withCheck $ do
431-
unitsPreRun <- preExecuteScriptAction protocolParameters script sData redeemer
431+
unitsPreRun <- preExecuteScriptAction protocolParameters script (getScriptData sData) (getScriptData redeemer)
432432
unless (units == unitsPreRun) $
433433
throwE $ WalletError $ concat [
434434
" Stated execution Units do not match result of pre execution. "
@@ -451,7 +451,7 @@ makePlutusContext ScriptSpec{..} = do
451451
autoBudget = PlutusAutoBudget
452452
{ autoBudgetUnits = perTxBudget
453453
, autoBudgetDatum = ScriptDataNumber 0
454-
, autoBudgetRedeemer = scriptDataModifyNumber (const 1_000_000) redeemer
454+
, autoBudgetRedeemer = unsafeHashableScriptData $ scriptDataModifyNumber (const 1_000_000) (getScriptData redeemer)
455455
}
456456
traceDebug $ "Plutus auto mode : Available budget per Tx: " ++ show perTxBudget
457457
++ " -- split between inputs per Tx: " ++ show txInputs
@@ -461,7 +461,7 @@ makePlutusContext ScriptSpec{..} = do
461461
Right (summary, PlutusAutoBudget{..}, preRun) -> do
462462
setEnvSummary summary
463463
dumpBudgetSummaryIfExisting
464-
return (autoBudgetDatum, autoBudgetRedeemer, preRun)
464+
return (unsafeHashableScriptData autoBudgetDatum, autoBudgetRedeemer, preRun)
465465

466466
let msg = mconcat [ "Plutus Benchmark :"
467467
, " Script: ", scriptSpecFile
@@ -494,7 +494,7 @@ makePlutusContext ScriptSpec{..} = do
494494
(ScriptDatumForTxIn scriptData)
495495
scriptRedeemer
496496
executionUnits
497-
in return (ScriptWitness ScriptWitnessForSpending scriptWitness, script, scriptData, scriptFee)
497+
in return (ScriptWitness ScriptWitnessForSpending scriptWitness, script, getScriptData scriptData, scriptFee)
498498
_ ->
499499
liftTxGenError $ TxGenError "runPlutusBenchmark: only Plutus scripts supported"
500500

@@ -505,7 +505,7 @@ preExecuteScriptAction ::
505505
-> ScriptData
506506
-> ActionM ExecutionUnits
507507
preExecuteScriptAction protocolParameters script scriptData redeemer
508-
= case Plutus.preExecutePlutusScript protocolParameters script scriptData redeemer of
508+
= case Plutus.preExecutePlutusScript protocolParameters script scriptData (unsafeHashableScriptData redeemer) of
509509
Left err -> throwE $ WalletError ( "makePlutusContext preExecuteScript failed: " ++ show err )
510510
Right costs -> return costs
511511

Diff for: bench/tx-generator/src/Cardano/TxGenerator/PlutusContext.hs

+7-7
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ data PlutusBudgetFittingStrategy
7070
deriving (Generic, Eq, Show, ToJSON)
7171

7272
instance ToJSON ScriptData where
73-
toJSON = scriptDataToJson ScriptDataJsonDetailedSchema
73+
toJSON = scriptDataToJson ScriptDataJsonDetailedSchema . unsafeHashableScriptData
7474

7575

7676
-- | load serialized ScriptData, filling in an empty value if no .json file is given
77-
readScriptData :: FilePath -> IO (Either TxGenError ScriptData)
77+
readScriptData :: FilePath -> IO (Either TxGenError HashableScriptData)
7878
readScriptData ""
79-
= pure $ Right $ ScriptDataNumber 0 -- TODO: make sure this is an adequate empty value
79+
= pure $ Right $ unsafeHashableScriptData $ ScriptDataNumber 0 -- TODO: make sure this is an adequate empty value
8080
readScriptData jsonFilePath
8181
= runExceptT $ do
8282
sData :: Aeson.Value <-
@@ -154,7 +154,7 @@ plutusAutoBudgetMaxOut
154154
txInputs
155155
= do
156156
(n, limitFactors) <- binarySearch isInLimits 0 searchUpperBound
157-
let pab' = pab {autoBudgetUnits = targetBudget, autoBudgetRedeemer = toLoopArgument n}
157+
let pab' = pab {autoBudgetUnits = targetBudget, autoBudgetRedeemer = unsafeHashableScriptData $ toLoopArgument n}
158158
pure (pab', fromIntegral n, limitFactors)
159159
where
160160
-- The highest loop counter that is tried - this is about 10 times the current mainnet limit.
@@ -173,12 +173,12 @@ plutusAutoBudgetMaxOut
173173
TargetBlockExpenditure (Just s) -> calc budgetPerBlock div (targetTxPerBlock s * txInputs)
174174
TargetBlockExpenditure Nothing -> error "plutusAutoBudgetMaxOut : TargetBlockExpenditure Nothing should be unreachable. This is an implementation error in tx-generator."
175175

176-
toLoopArgument n = scriptDataModifyNumber (+ n) autoBudgetRedeemer
176+
toLoopArgument n = scriptDataModifyNumber (+ n) $ getScriptData autoBudgetRedeemer
177177

178178
-- the execution is considered within limits when there's no limiting factor, i.e. the list is empty
179179
isInLimits :: Integer -> Either TxGenError [PlutusAutoLimitingFactor]
180180
isInLimits n = do
181-
used <- preExecutePlutusScript protocolParams script autoBudgetDatum (toLoopArgument n)
181+
used <- preExecutePlutusScript protocolParams script autoBudgetDatum (unsafeHashableScriptData $ toLoopArgument n)
182182
pure $ [ExceededStepLimit | executionSteps used > executionSteps targetBudget]
183183
++ [ExceededMemoryLimit | executionMemory used > executionMemory targetBudget]
184184

@@ -208,7 +208,7 @@ plutusBudgetSummary
208208
projectedTxSize = Nothing -- we defer this value until after splitting phase
209209
strategyMessage = Nothing
210210
scriptArgDatum = autoBudgetDatum
211-
scriptArgRedeemer = autoBudgetRedeemer
211+
scriptArgRedeemer = getScriptData autoBudgetRedeemer
212212
budgetPerTxInput = calc budgetPerTx div txInputs
213213
budgetTarget = autoBudgetUnits
214214
projectedTxPerBlock = fromIntegral $ min

Diff for: bench/tx-generator/src/Cardano/TxGenerator/Setup/Plutus.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ preExecutePlutusV1 protocolVersion_ (PlutusScript _ (PlutusScriptSerialised scri
9292
hoistEither $
9393
snd $ PlutusV1.evaluateScriptCounting protocolVersion PlutusV1.Verbose evaluationContext script
9494
[ toPlutusData datum
95-
, toPlutusData redeemer
95+
, toPlutusData (getScriptData redeemer)
9696
, PlutusV1.toData dummyContext
9797
]
9898

@@ -140,7 +140,7 @@ preExecutePlutusV2 protocolVersion_ (PlutusScript _ (PlutusScriptSerialised scri
140140
hoistEither $
141141
snd $ PlutusV2.evaluateScriptCounting protocolVersion PlutusV2.Verbose evaluationContext script
142142
[ toPlutusData datum
143-
, toPlutusData redeemer
143+
, toPlutusData (getScriptData redeemer)
144144
, PlutusV2.toData dummyContext
145145
]
146146

Diff for: bench/tx-generator/src/Cardano/TxGenerator/UTxO.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ mkUTxOScript networkId (script, txOutDatum) witness value
7070
Just tag -> TxOut
7171
plutusScriptAddr
7272
(lovelaceToTxOutValue v)
73-
(TxOutDatumHash tag $ hashScriptData txOutDatum)
73+
(TxOutDatumHash tag $ hashScriptDataBytes $ unsafeHashableScriptData txOutDatum)
7474
ReferenceScriptNone
7575

7676
mkNewFund :: Lovelace -> TxIx -> TxId -> Fund

Diff for: bench/tx-generator/test/ApiTest.hs

+5-5
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,11 @@ checkPlutusBuiltin
131131

132132
protocolParameters <- readProtocolParametersOrDie
133133
forM_ bArgs $ \bArg -> do
134-
let apiData = toApiData bArg
134+
let apiData = unsafeHashableScriptData $ toApiData bArg
135135
putStrLn $ "* executing with mode: " ++ show (fst bArg)
136136
putStrLn "* custom script data in Cardano API format:"
137137
BSL.putStrLn $ encode $ scriptDataToJson ScriptDataJsonDetailedSchema apiData
138-
case preExecutePlutusScript protocolParameters script apiData apiData of
138+
case preExecutePlutusScript protocolParameters script (getScriptData apiData) apiData of
139139
Left err -> putStrLn $ "--> execution failed: " ++ show err
140140
Right units -> putStrLn $ "--> execution successful; got budget: " ++ show units
141141
where
@@ -165,9 +165,9 @@ checkPlutusLoop (Just PlutusOn{..})
165165
Left err -> die (show err)
166166
Right redeemer -> do
167167
putStrLn $ "--> read redeemer: " ++ redeemerFile
168-
return $ scriptDataModifyNumber (+ count) redeemer
168+
return $ scriptDataModifyNumber (+ count) $ getScriptData redeemer
169169

170-
case preExecutePlutusScript protocolParameters script (ScriptDataNumber 0) redeemer of
170+
case preExecutePlutusScript protocolParameters script (ScriptDataNumber 0) (unsafeHashableScriptData redeemer) of
171171
Left err -> putStrLn $ "--> execution failed: " ++ show err
172172
Right units -> putStrLn $ "--> execution successful; got budget: " ++ show units
173173

@@ -178,7 +178,7 @@ checkPlutusLoop (Just PlutusOn{..})
178178
autoBudget = PlutusAutoBudget
179179
{ autoBudgetUnits = budget
180180
, autoBudgetDatum = ScriptDataNumber 0
181-
, autoBudgetRedeemer = scriptDataModifyNumber (const 1_000_000) redeemer
181+
, autoBudgetRedeemer = unsafeHashableScriptData $ scriptDataModifyNumber (const 1_000_000) redeemer
182182
}
183183

184184
pparamsStepFraction d = case protocolParamMaxBlockExUnits protocolParameters of

0 commit comments

Comments
 (0)