Skip to content

Commit 2cdb15a

Browse files
Read params from file, update examples
1 parent ef4416f commit 2cdb15a

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

examples/plutus-game/app/Main.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ main = do
6767
, pcDryRun = True
6868
, pcLogLevel = Debug
6969
, pcProtocolParamsFile = "./protocol.json"
70+
, pcForceBudget = Just (1000, 1000)
7071
, pcEnableTxEndpoint = True
7172
}
7273
BotPlutusInterface.runPAB @GameContracts pabConf

examples/plutus-nft/app/Main.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ main = do
6767
, pcDryRun = True
6868
, pcLogLevel = Debug
6969
, pcProtocolParamsFile = "./protocol.json"
70+
, pcForceBudget = Just (1000, 1000)
7071
, pcEnableTxEndpoint = True
7172
}
7273
BotPlutusInterface.runPAB @MintNFTContracts pabConf

examples/plutus-transfer/app/Main.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ main = do
6666
, pcDryRun = True
6767
, pcLogLevel = Debug
6868
, pcProtocolParamsFile = "./protocol.json"
69+
, pcForceBudget = Nothing
6970
, pcEnableTxEndpoint = True
7071
}
7172
BotPlutusInterface.runPAB @TransferContracts pabConf

src/BotPlutusInterface/CardanoCLI.hs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{-# LANGUAGE AllowAmbiguousTypes #-}
22
{-# LANGUAGE NamedFieldPuns #-}
3-
{-# OPTIONS_GHC -w #-}
43

54
module BotPlutusInterface.CardanoCLI (
65
submitTx,
@@ -27,7 +26,8 @@ import BotPlutusInterface.Files (
2726
)
2827
import BotPlutusInterface.Types (PABConfig (pcSlotConfig), Tip)
2928
import BotPlutusInterface.UtxoParser qualified as UtxoParser
30-
import Cardano.Api.Shelley (NetworkId (Mainnet, Testnet), NetworkMagic (..), serialiseAddress)
29+
import Cardano.Api (AnyPlutusScriptVersion (AnyPlutusScriptVersion), CostModel (CostModel), PlutusScriptVersion (PlutusScriptV1))
30+
import Cardano.Api.Shelley (NetworkId (Mainnet, Testnet), NetworkMagic (..), ProtocolParameters (protocolParamCostModels), serialiseAddress)
3131
import Codec.Serialise qualified as Codec
3232
import Control.Monad (join)
3333
import Control.Monad.Freer (Eff, Member)
@@ -367,6 +367,7 @@ txInOpts pabConf txInfo =
367367
budgetFromConfig pabConf $
368368
fromRight mempty $
369369
calculateExBudget
370+
pabConf
370371
(Scripts.unValidatorScript validator)
371372
[Plutus.getRedeemer redeemer, Plutus.getDatum datum, Plutus.toBuiltinData scriptContext]
372373
in (,exBudget) $
@@ -410,6 +411,7 @@ mintOpts pabConf txInfo mintingPolicies redeemers mintValue =
410411
budgetFromConfig pabConf $
411412
fromRight mempty $
412413
calculateExBudget
414+
pabConf
413415
(Scripts.unMintingPolicyScript policy)
414416
[Plutus.getRedeemer r, Plutus.toBuiltinData scriptContext]
415417
toOpts r =
@@ -497,20 +499,22 @@ unsafeSerialiseAddress network address =
497499
Right a -> a
498500
Left _ -> error "Couldn't create address"
499501

500-
calculateExBudget :: Script -> [BuiltinData] -> Either Text ExBudget
501-
calculateExBudget script builtinData = do
502-
-- TODO, pull this from the protocol, they're the same for now but may not always be
503-
modelParams <- maybeToRight "Cost model params invalid." Plutus.defaultCostModelParams
502+
extractCostModel :: PABConfig -> Maybe Plutus.CostModelParams
503+
extractCostModel pabConf =
504+
unCostModel <$> Map.lookup (AnyPlutusScriptVersion PlutusScriptV1) (protocolParamCostModels pabConf.pcProtocolParams)
505+
where
506+
unCostModel :: CostModel -> Map Text Integer
507+
unCostModel (CostModel m) = m
508+
509+
calculateExBudget :: PABConfig -> Script -> [BuiltinData] -> Either Text ExBudget
510+
calculateExBudget pabConf script builtinData = do
511+
modelParams <- maybeToRight "Cost model params invalid." $ extractCostModel pabConf
504512
let serialisedScript = ShortByteString.toShort $ LazyByteString.toStrict $ Codec.serialise script
505513
pData = map Plutus.builtinDataToData builtinData
506514
mapLeft showText $
507515
snd $
508516
Plutus.evaluateScriptCounting Plutus.Verbose modelParams serialisedScript pData
509517

510-
-- calculateExBudget :: Script -> [BuiltinData] -> Either Text ExBudget
511-
-- calculateExBudget script builtinData = do
512-
-- mapLeft showText $ fst <$> Scripts.evaluateScript (Scripts.applyArguments script $ Plutus.builtinDataToData <$> builtinData)
513-
514518
exBudgetToCliArg :: ExBudget -> Text
515519
exBudgetToCliArg (ExBudget (ExCPU steps) (ExMemory memory)) =
516520
"(" <> showText steps <> "," <> showText memory <> ")"

0 commit comments

Comments
 (0)