@@ -92,7 +92,7 @@ data PlutusScriptPurpose
9292 | -- | Witnesses a vote
9393 VotingScript
9494
95- data NoScriptDatum = NoScriptDatumAllowed deriving Show
95+ data NoScriptDatum = NoScriptDatumAllowed deriving ( Eq , Show )
9696
9797-- | The PlutusScriptDatum type family is used to determine if a script datum is allowed
9898-- for a given plutus script purpose and version. This change was proposed in CIP-69
@@ -130,6 +130,55 @@ data PlutusScriptDatum (lang :: L.Language) (purpose :: PlutusScriptPurpose) whe
130130 NoScriptDatum
131131 :: PlutusScriptDatum lang purpose
132132
133+ instance Eq (PlutusScriptDatum L. PlutusV1 SpendingScript ) where
134+ (==) (SpendingScriptDatum d1) (SpendingScriptDatum d2) = d1 == d2
135+ (==) InlineDatum InlineDatum = True
136+ (==) NoScriptDatum NoScriptDatum = True
137+ (==) _ _ = False
138+
139+ instance Eq (PlutusScriptDatum L. PlutusV2 SpendingScript ) where
140+ (==) (SpendingScriptDatum d1) (SpendingScriptDatum d2) = d1 == d2
141+ (==) InlineDatum InlineDatum = True
142+ (==) NoScriptDatum NoScriptDatum = True
143+ (==) _ _ = False
144+
145+ instance Eq (PlutusScriptDatum L. PlutusV3 SpendingScript ) where
146+ (==) (SpendingScriptDatum d1) (SpendingScriptDatum d2) = d1 == d2
147+ (==) InlineDatum InlineDatum = True
148+ (==) NoScriptDatum NoScriptDatum = True
149+ (==) _ _ = False
150+
151+ instance Eq (PlutusScriptDatum L. PlutusV4 SpendingScript ) where
152+ (==) (SpendingScriptDatum d1) (SpendingScriptDatum d2) = d1 == d2
153+ (==) InlineDatum InlineDatum = True
154+ (==) NoScriptDatum NoScriptDatum = True
155+ (==) _ _ = False
156+
157+ instance Eq (PlutusScriptDatum lang MintingScript ) where
158+ (==) InlineDatum InlineDatum = True
159+ (==) NoScriptDatum NoScriptDatum = True
160+ (==) _ _ = False
161+
162+ instance Eq (PlutusScriptDatum lang WithdrawingScript ) where
163+ (==) InlineDatum InlineDatum = True
164+ (==) NoScriptDatum NoScriptDatum = True
165+ (==) _ _ = False
166+
167+ instance Eq (PlutusScriptDatum lang CertifyingScript ) where
168+ (==) InlineDatum InlineDatum = True
169+ (==) NoScriptDatum NoScriptDatum = True
170+ (==) _ _ = False
171+
172+ instance Eq (PlutusScriptDatum lang ProposingScript ) where
173+ (==) InlineDatum InlineDatum = True
174+ (==) NoScriptDatum NoScriptDatum = True
175+ (==) _ _ = False
176+
177+ instance Eq (PlutusScriptDatum lang VotingScript ) where
178+ (==) InlineDatum InlineDatum = True
179+ (==) NoScriptDatum NoScriptDatum = True
180+ (==) _ _ = False
181+
133182instance Show (PlutusScriptDatum lang purpose ) where
134183 show = \ case
135184 SpendingScriptDatum _d -> " Datum"
0 commit comments