Skip to content

Commit

Permalink
Revert to using unsafeFromBuiltinData in wrapValidator
Browse files Browse the repository at this point in the history
This results in SUBSTANTIAL performance improvement (again)
  • Loading branch information
ch1bo committed May 23, 2022
1 parent c69d2e8 commit 264da9a
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions hydra-plutus/src/Plutus/Extras.hs
Expand Up @@ -11,9 +11,9 @@ import Hydra.Cardano.Api (
hashScript,
pattern PlutusScript,
)
import Plutus.V1.Ledger.Api (FromData (fromBuiltinData), Script, ValidatorHash (ValidatorHash))
import Plutus.V1.Ledger.Api (Script, UnsafeFromData (unsafeFromBuiltinData), ValidatorHash (ValidatorHash))
import PlutusTx (BuiltinData)
import PlutusTx.Prelude (check, fromMaybe, toBuiltin, traceError)
import PlutusTx.Prelude (check, toBuiltin)

-- * Vendored from plutus-ledger

Expand All @@ -24,15 +24,15 @@ type ValidatorType = BuiltinData -> BuiltinData -> BuiltinData -> ()
-- be passed to `PlutusTx.compile`.
-- REVIEW: There might be better ways to name this than "wrap"
wrapValidator ::
(FromData datum, FromData redeemer, FromData context) =>
(UnsafeFromData datum, UnsafeFromData redeemer, UnsafeFromData context) =>
(datum -> redeemer -> context -> Bool) ->
ValidatorType
wrapValidator f d r c =
check $ f datum redeemer context
where
datum = fromMaybe (traceError "wrapValidator: converting datum") $ fromBuiltinData d
redeemer = fromMaybe (traceError "wrapValidator: converting redeemer") $ fromBuiltinData r
context = fromMaybe (traceError "wrapValidator: converting context") $ fromBuiltinData c
datum = unsafeFromBuiltinData d
redeemer = unsafeFromBuiltinData r
context = unsafeFromBuiltinData c
{-# INLINEABLE wrapValidator #-}

-- | Signature of an untyped minting policy script.
Expand All @@ -41,14 +41,14 @@ type MintingPolicyType = BuiltinData -> BuiltinData -> ()
-- | Wrap a typed minting policy to get the basic `MintingPolicyType` signature
-- which can be passed to `PlutusTx.compile`.
wrapMintingPolicy ::
(FromData redeemer, FromData context) =>
(UnsafeFromData redeemer, UnsafeFromData context) =>
(redeemer -> context -> Bool) ->
MintingPolicyType
wrapMintingPolicy f r c =
check $ f redeemer context
where
redeemer = fromMaybe (traceError "wrapMintingPolicy: converting redeemer") $ fromBuiltinData r
context = fromMaybe (traceError "wrapMintingPolicy: converting context") $ fromBuiltinData c
redeemer = unsafeFromBuiltinData r
context = unsafeFromBuiltinData c
{-# INLINEABLE wrapMintingPolicy #-}

-- * Similar utilities as plutus-ledger
Expand Down

0 comments on commit 264da9a

Please sign in to comment.