Skip to content

Commit e4affa1

Browse files
committed
Propagate HashableScriptData in bench folder
1 parent 3d3a68b commit e4affa1

File tree

6 files changed

+23
-23
lines changed

6 files changed

+23
-23
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

+8-8
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,10 @@ makePlutusContext ScriptSpec{..} = do
402402

403403
(scriptData, scriptRedeemer, executionUnits) <- case scriptSpecBudget of
404404
StaticScriptBudget sDataFile redeemerFile units withCheck -> do
405-
sData <- liftIOSafe $ readScriptData sDataFile
406-
redeemer <-liftIOSafe $ readScriptData redeemerFile
405+
sData <- liftIOSafe (readScriptData sDataFile)
406+
redeemer <- liftIOSafe (readScriptData redeemerFile)
407407
when withCheck $ do
408-
unitsPreRun <- preExecuteScriptAction protocolParameters script sData redeemer
408+
unitsPreRun <- preExecuteScriptAction protocolParameters script (getScriptData sData) (getScriptData redeemer)
409409
unless (units == unitsPreRun) $
410410
throwE $ WalletError $ concat [
411411
" Stated execution Units do not match result of pre execution. "
@@ -428,16 +428,16 @@ makePlutusContext ScriptSpec{..} = do
428428
autoBudget = PlutusAutoBudget
429429
{ autoBudgetUnits = budget
430430
, autoBudgetDatum = ScriptDataNumber 0
431-
, autoBudgetRedeemer = scriptDataModifyNumber (const 1_000_000) redeemer
431+
, autoBudgetRedeemer = unsafeHashableScriptData $ scriptDataModifyNumber (const 1_000_000) (getScriptData redeemer)
432432
}
433433
traceDebug $ "Plutus auto mode : Available budget per Tx input / script run: " ++ show budget
434434
++ " -- fraction of protocolParamMaxTxExUnits budget: 1/" ++ show budgetFraction
435435

436436
case plutusAutoBudgetMaxOut protocolParameters script autoBudget of
437437
Left err -> liftTxGenError err
438438
Right PlutusAutoBudget{..} -> do
439-
preRun <- preExecuteScriptAction protocolParameters script autoBudgetDatum autoBudgetRedeemer
440-
return (autoBudgetDatum, autoBudgetRedeemer, preRun)
439+
preRun <- preExecuteScriptAction protocolParameters script autoBudgetDatum (getScriptData autoBudgetRedeemer)
440+
return (unsafeHashableScriptData autoBudgetDatum, autoBudgetRedeemer, preRun)
441441

442442
let msg = mconcat [ "Plutus Benchmark :"
443443
, " Script: ", scriptSpecFile
@@ -470,7 +470,7 @@ makePlutusContext ScriptSpec{..} = do
470470
(ScriptDatumForTxIn scriptData)
471471
scriptRedeemer
472472
executionUnits
473-
in return (ScriptWitness ScriptWitnessForSpending scriptWitness, script, scriptData, scriptFee)
473+
in return (ScriptWitness ScriptWitnessForSpending scriptWitness, script, getScriptData scriptData, scriptFee)
474474
_ ->
475475
liftTxGenError $ TxGenError "runPlutusBenchmark: only Plutus scripts supported"
476476

@@ -481,7 +481,7 @@ preExecuteScriptAction ::
481481
-> ScriptData
482482
-> ActionM ExecutionUnits
483483
preExecuteScriptAction protocolParameters script scriptData redeemer
484-
= case Plutus.preExecutePlutusScript protocolParameters script scriptData redeemer of
484+
= case Plutus.preExecutePlutusScript protocolParameters script scriptData (unsafeHashableScriptData redeemer) of
485485
Left err -> throwE $ WalletError ( "makePlutusContext preExecuteScript failed: " ++ show err )
486486
Right costs -> return costs
487487

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

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ import Cardano.TxGenerator.Types
2020

2121

2222
-- | load serialized ScriptData, filling in an empty value if no .json file is given
23-
readScriptData :: FilePath -> IO (Either TxGenError ScriptData)
23+
readScriptData :: FilePath -> IO (Either TxGenError HashableScriptData)
2424
readScriptData ""
25-
= pure $ Right $ ScriptDataNumber 0 -- TODO: make sure this is an adequate empty value
25+
= pure $ Right $ unsafeHashableScriptData $ ScriptDataNumber 0 -- TODO: make sure this is an adequate empty value
2626
readScriptData jsonFilePath
2727
= runExceptT $ do
2828
sData :: Aeson.Value <-
@@ -41,16 +41,16 @@ plutusAutoBudgetMaxOut :: ProtocolParameters -> ScriptInAnyLang -> PlutusAutoBud
4141
plutusAutoBudgetMaxOut protocolParams script pab@PlutusAutoBudget{..}
4242
= do
4343
redeemer' <- toLoopArgument <$> binarySearch isInLimits 0 searchUpperBound
44-
pure $ pab {autoBudgetRedeemer = redeemer'}
44+
pure $ pab {autoBudgetRedeemer = unsafeHashableScriptData redeemer'}
4545
where
4646
-- The highest loop counter that is tried - this is about 10 times the current mainnet limit.
4747
searchUpperBound = 20000
4848

49-
toLoopArgument n = scriptDataModifyNumber (+ n) autoBudgetRedeemer
49+
toLoopArgument n = scriptDataModifyNumber (+ n) $ getScriptData autoBudgetRedeemer
5050

5151
isInLimits :: Integer -> Either TxGenError Bool
5252
isInLimits n = do
53-
used <- preExecutePlutusScript protocolParams script autoBudgetDatum (toLoopArgument n)
53+
used <- preExecutePlutusScript protocolParams script autoBudgetDatum (unsafeHashableScriptData $ toLoopArgument n)
5454
pure $ executionSteps used <= executionSteps autoBudgetUnits && executionMemory used <= executionMemory autoBudgetUnits
5555

5656
-- modifies the first ScriptDataNumber encountered during traversal to the value provided

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ preExecutePlutusV1 protocolParameters (PlutusScript _ (PlutusScriptSerialised sc
8181
hoistEither $
8282
snd $ PlutusV1.evaluateScriptCounting protocolVersion PlutusV1.Verbose evaluationContext script
8383
[ toPlutusData datum
84-
, toPlutusData redeemer
84+
, toPlutusData (getScriptData redeemer)
8585
, PlutusV1.toData dummyContext
8686
]
8787

@@ -134,7 +134,7 @@ preExecutePlutusV2 protocolParameters (PlutusScript _ (PlutusScriptSerialised sc
134134
hoistEither $
135135
snd $ PlutusV2.evaluateScriptCounting protocolVersion PlutusV2.Verbose evaluationContext script
136136
[ toPlutusData datum
137-
, toPlutusData redeemer
137+
, toPlutusData (getScriptData redeemer)
138138
, PlutusV2.toData dummyContext
139139
]
140140

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
@@ -127,11 +127,11 @@ checkPlutusBuiltin
127127

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

166-
case preExecutePlutusScript protocolParameters script (ScriptDataNumber 0) redeemer of
166+
case preExecutePlutusScript protocolParameters script (ScriptDataNumber 0) (unsafeHashableScriptData redeemer) of
167167
Left err -> putStrLn $ "--> execution failed: " ++ show err
168168
Right units -> putStrLn $ "--> execution successful; got budget: " ++ show units
169169

@@ -174,7 +174,7 @@ checkPlutusLoop (Just PlutusOn{..})
174174
autoBudget = PlutusAutoBudget
175175
{ autoBudgetUnits = budget
176176
, autoBudgetDatum = ScriptDataNumber 0
177-
, autoBudgetRedeemer = scriptDataModifyNumber (const 1_000_000) redeemer
177+
, autoBudgetRedeemer = unsafeHashableScriptData $ scriptDataModifyNumber (const 1_000_000) redeemer
178178
}
179179
putStrLn $ "--> " ++ show (plutusAutoBudgetMaxOut protocolParameters script autoBudget)
180180

0 commit comments

Comments
 (0)