Skip to content
This repository was archived by the owner on Jan 9, 2025. It is now read-only.

Commit ec86b35

Browse files
committedJul 13, 2022
Make typed hashes
1 parent d8cbbd8 commit ec86b35

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed
 

‎src/Plutus/Test/Model/Validator.hs

+25-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ module Plutus.Test.Model.Validator(
1212
toBuiltinPolicy,
1313
toBuiltinStake,
1414

15+
-- * Hashes
16+
validatorHash,
1517
scriptCurrencySymbol,
18+
stakeValidatorHash,
19+
mintingPolicyHash,
1620
) where
1721

1822
import Prelude
@@ -34,6 +38,11 @@ class (HasAddress script, ToData (DatumType script), FromData (DatumType script)
3438
type RedeemerType script :: Type
3539
toValidator :: script -> Validator
3640

41+
instance IsValidator Validator where
42+
type DatumType Validator = BuiltinData
43+
type RedeemerType Validator = BuiltinData
44+
toValidator = id
45+
3746
instance (ToData datum, FromData datum, ToData redeemer, FromData redeemer)
3847
=> IsValidator (TypedValidator datum redeemer) where
3948
type DatumType (TypedValidator datum redeemer) = datum
@@ -51,6 +60,9 @@ instance (ToData redeemer, FromData redeemer) => IsValidator (TypedPolicy redeem
5160
type RedeemerType (TypedPolicy redeemer) = redeemer
5261
toValidator (TypedPolicy (MintingPolicy script)) = Validator script
5362

63+
validatorHash :: IsValidator a => a -> ValidatorHash
64+
validatorHash = Fork.validatorHash . toValidator
65+
5466
-- | Phantom type to annotate types
5567
newtype TypedValidator datum redeemer = TypedValidator
5668
{ unTypedValidator :: Validator }
@@ -62,9 +74,6 @@ instance HasAddress (TypedValidator datum redeemer) where
6274
newtype TypedPolicy redeemer = TypedPolicy
6375
{ unTypedPolicy :: MintingPolicy }
6476

65-
scriptCurrencySymbol :: TypedPolicy a -> CurrencySymbol
66-
scriptCurrencySymbol (TypedPolicy script) = Fork.scriptCurrencySymbol script
67-
6877
instance (ToData redeemer, FromData redeemer) => HasAddress (TypedPolicy redeemer) where
6978
toAddress = toAddress . toValidator
7079

@@ -90,6 +99,19 @@ instance (ToData redeemer, FromData redeemer) => HasAddress (TypedStake redeemer
9099
instance HasStakingCredential (TypedStake redeemer) where
91100
toStakingCredential (TypedStake script) = toStakingCredential script
92101

102+
---------------------------------------------------------------------------------
103+
104+
scriptCurrencySymbol :: TypedPolicy a -> CurrencySymbol
105+
scriptCurrencySymbol = Fork.scriptCurrencySymbol . unTypedPolicy
106+
107+
mintingPolicyHash :: TypedPolicy a -> MintingPolicyHash
108+
mintingPolicyHash = Fork.mintingPolicyHash . unTypedPolicy
109+
110+
stakeValidatorHash :: TypedStake a -> StakeValidatorHash
111+
stakeValidatorHash = Fork.stakeValidatorHash . unTypedStake
112+
113+
---------------------------------------------------------------------------------
114+
93115
-- | Coverts to low-level validator representation
94116
{-# INLINABLE toBuiltinValidator #-}
95117
toBuiltinValidator :: (UnsafeFromData datum, UnsafeFromData redeemer)

0 commit comments

Comments
 (0)
This repository has been archived.