@@ -15,27 +15,17 @@ module Cardano.Api.Experimental.Tx.Internal.AnyWitness
1515 )
1616where
1717
18- import Cardano.Api.Era.Internal.Eon.AlonzoEraOnwards
19- import Cardano.Api.Era.Internal.Eon.ShelleyBasedEra
20- ( ShelleyBasedEra (.. )
21- , ShelleyLedgerEra
22- , forShelleyBasedEraInEon
23- )
2418import Cardano.Api.Experimental.Plutus.Internal.Script
2519import Cardano.Api.Experimental.Plutus.Internal.ScriptWitness
2620import Cardano.Api.Experimental.Simple.Script
2721 ( SimpleScript (SimpleScript )
2822 , SimpleScriptOrReferenceInput (.. )
2923 )
3024import Cardano.Api.Internal.Orphans.Misc ()
31- import Cardano.Api.Ledger qualified as L
25+ import Cardano.Api.Ledger.Internal.Reexport qualified as L
3226import Cardano.Api.Plutus.Internal.ScriptData
3327
34- import Cardano.Ledger.Alonzo.Scripts qualified as L
35- import Cardano.Ledger.Babbage.Scripts qualified as L
36- import Cardano.Ledger.Conway.Scripts qualified as L
3728import Cardano.Ledger.Core qualified as L
38- import Cardano.Ledger.Dijkstra.Scripts qualified as Dijkstra
3929import Cardano.Ledger.Plutus.Data qualified as L
4030import Cardano.Ledger.Plutus.Language qualified as L
4131
@@ -91,124 +81,70 @@ getAnyWitnessPlutusLanguage (AnySimpleScriptWitness _) = Nothing
9181getAnyWitnessPlutusLanguage (AnyPlutusScriptWitness swit) = Just $ getPlutusScriptWitnessLanguage swit
9282
9383getAnyWitnessSimpleScript
94- :: AnyWitness ( ShelleyLedgerEra era ) -> Maybe (L. NativeScript ( ShelleyLedgerEra era ) )
84+ :: AnyWitness era -> Maybe (L. Script era )
9585getAnyWitnessSimpleScript AnyKeyWitnessPlaceholder = Nothing
9686getAnyWitnessSimpleScript (AnySimpleScriptWitness simpleScriptOrRefInput) =
9787 case simpleScriptOrRefInput of
98- SScript (SimpleScript simpleScript) -> Just simpleScript
88+ SScript (SimpleScript simpleScript) -> Just $ L. fromNativeScript simpleScript
9989 SReferenceScript {} -> Nothing
10090getAnyWitnessSimpleScript (AnyPlutusScriptWitness _) = Nothing
10191
10292getAnyWitnessPlutusScript
103- :: AlonzoEraOnwards era
104- - > AnyWitness ( ShelleyLedgerEra era )
105- -> Maybe (L. PlutusScript ( ShelleyLedgerEra era ) )
106- getAnyWitnessPlutusScript _ AnyKeyWitnessPlaceholder = Nothing
107- getAnyWitnessPlutusScript _ (AnySimpleScriptWitness _) = Nothing
93+ :: L. AlonzoEraScript era
94+ = > AnyWitness era
95+ -> Maybe (L. Script era )
96+ getAnyWitnessPlutusScript AnyKeyWitnessPlaceholder = Nothing
97+ getAnyWitnessPlutusScript (AnySimpleScriptWitness _) = Nothing
10898getAnyWitnessPlutusScript
109- eon
11099 ( AnyPlutusScriptWitness
111100 (PlutusScriptWitness l (PScript (PlutusScriptInEra plutusScriptRunnable)) _ _ _)
112- ) = fromPlutusRunnable l eon plutusScriptRunnable
113- getAnyWitnessPlutusScript _ (AnyPlutusScriptWitness (PlutusScriptWitness _ (PReferenceScript {}) _ _ _)) =
101+ ) = L. fromPlutusScript <$> fromPlutusRunnable l plutusScriptRunnable
102+ getAnyWitnessPlutusScript (AnyPlutusScriptWitness (PlutusScriptWitness _ (PReferenceScript {}) _ _ _)) =
114103 Nothing
115104
116105-- | NB this does not include datums from inline datums existing at tx outputs!
117106getAnyWitnessScriptData
118- :: AlonzoEraOnwards era -> AnyWitness (ShelleyLedgerEra era ) -> L. TxDats (ShelleyLedgerEra era )
119- getAnyWitnessScriptData eon AnyKeyWitnessPlaceholder = alonzoEraOnwardsConstraints eon mempty
120- getAnyWitnessScriptData eon AnySimpleScriptWitness {} = alonzoEraOnwardsConstraints eon mempty
121- getAnyWitnessScriptData eon (AnyPlutusScriptWitness (PlutusScriptWitness l _ scriptDatum _ _)) =
122- let alonzoSdat = toAlonzoDatum eon l scriptDatum
123- in alonzoEraOnwardsConstraints eon $
124- case alonzoSdat of
125- Nothing -> alonzoEraOnwardsConstraints eon mempty
126- Just d -> alonzoEraOnwardsConstraints eon $ L. TxDats $ fromList [(L. hashData d, d)]
107+ :: L. Era era => AnyWitness era -> L. TxDats era
108+ getAnyWitnessScriptData AnyKeyWitnessPlaceholder = mempty
109+ getAnyWitnessScriptData AnySimpleScriptWitness {} = mempty
110+ getAnyWitnessScriptData (AnyPlutusScriptWitness (PlutusScriptWitness l _ scriptDatum _ _)) =
111+ let alonzoSdat = toAlonzoDatum l scriptDatum
112+ in case alonzoSdat of
113+ Nothing -> mempty
114+ Just d -> L. TxDats $ fromList [(L. hashData d, d)]
127115
128116getAnyWitnessScript
129- :: ShelleyBasedEra era -> AnyWitness (ShelleyLedgerEra era ) -> Maybe (L. Script (ShelleyLedgerEra era ))
130- getAnyWitnessScript _ AnyKeyWitnessPlaceholder = Nothing
131- getAnyWitnessScript era ss@ (AnySimpleScriptWitness {}) =
132- case era of
133- ShelleyBasedEraShelley -> getAnyWitnessSimpleScript ss
134- ShelleyBasedEraAllegra -> getAnyWitnessSimpleScript ss
135- ShelleyBasedEraMary -> getAnyWitnessSimpleScript ss
136- ShelleyBasedEraAlonzo -> L. NativeScript <$> getAnyWitnessSimpleScript ss
137- ShelleyBasedEraBabbage -> L. NativeScript <$> getAnyWitnessSimpleScript ss
138- ShelleyBasedEraConway -> L. NativeScript <$> getAnyWitnessSimpleScript ss
139- ShelleyBasedEraDijkstra -> L. NativeScript <$> getAnyWitnessSimpleScript ss
140- getAnyWitnessScript era ps@ (AnyPlutusScriptWitness {}) =
141- forShelleyBasedEraInEon era Nothing $ \ aEon ->
142- case aEon of
143- AlonzoEraOnwardsAlonzo -> L. PlutusScript <$> getAnyWitnessPlutusScript aEon ps
144- AlonzoEraOnwardsBabbage -> L. PlutusScript <$> getAnyWitnessPlutusScript aEon ps
145- AlonzoEraOnwardsConway -> L. PlutusScript <$> getAnyWitnessPlutusScript aEon ps
146- AlonzoEraOnwardsDijkstra -> L. PlutusScript <$> getAnyWitnessPlutusScript aEon ps
117+ :: L. AlonzoEraScript era => AnyWitness era -> Maybe (L. Script era )
118+ getAnyWitnessScript AnyKeyWitnessPlaceholder = Nothing
119+ getAnyWitnessScript ss@ (AnySimpleScriptWitness {}) = getAnyWitnessSimpleScript ss
120+ getAnyWitnessScript ps@ (AnyPlutusScriptWitness {}) = getAnyWitnessPlutusScript ps
147121
148122-- It should be noted that 'PlutusRunnable' is constructed via deserialization. The deserialization
149123-- instance lives in ledger and will fail for an invalid script language/era pairing. Therefore
150124-- this function should never return 'Nothing'.
151125fromPlutusRunnable
152- :: L. SLanguage lang
153- -> AlonzoEraOnwards era
126+ :: L. AlonzoEraScript era
127+ => L. SLanguage lang
154128 -> L. PlutusRunnable lang
155- -> Maybe (L. PlutusScript (ShelleyLedgerEra era ))
156- fromPlutusRunnable L. SPlutusV1 eon runnable =
157- case eon of
158- AlonzoEraOnwardsAlonzo ->
159- let plutusScript = L. plutusFromRunnable runnable
160- in Just $ L. AlonzoPlutusV1 plutusScript
161- AlonzoEraOnwardsBabbage ->
162- let plutusScript = L. plutusFromRunnable runnable
163- in Just $ L. BabbagePlutusV1 plutusScript
164- AlonzoEraOnwardsConway ->
165- let plutusScript = L. plutusFromRunnable runnable
166- in Just $ L. ConwayPlutusV1 plutusScript
167- AlonzoEraOnwardsDijkstra ->
168- let plutusScript = L. plutusFromRunnable runnable
169- in Just $ Dijkstra. DijkstraPlutusV1 plutusScript
170- fromPlutusRunnable L. SPlutusV2 eon runnable =
171- case eon of
172- AlonzoEraOnwardsAlonzo -> Nothing
173- AlonzoEraOnwardsBabbage ->
174- let plutusScript = L. plutusFromRunnable runnable
175- in Just $ L. BabbagePlutusV2 plutusScript
176- AlonzoEraOnwardsConway ->
177- let plutusScript = L. plutusFromRunnable runnable
178- in Just $ L. ConwayPlutusV2 plutusScript
179- AlonzoEraOnwardsDijkstra ->
180- let plutusScript = L. plutusFromRunnable runnable
181- in Just $ Dijkstra. DijkstraPlutusV2 plutusScript
182- fromPlutusRunnable L. SPlutusV3 eon runnable =
183- case eon of
184- AlonzoEraOnwardsAlonzo -> Nothing
185- AlonzoEraOnwardsBabbage -> Nothing
186- AlonzoEraOnwardsConway ->
187- let plutusScript = L. plutusFromRunnable runnable
188- in Just $ L. ConwayPlutusV3 plutusScript
189- AlonzoEraOnwardsDijkstra ->
190- let plutusScript = L. plutusFromRunnable runnable
191- in Just $ Dijkstra. DijkstraPlutusV3 plutusScript
192- fromPlutusRunnable L. SPlutusV4 eon runnable =
193- case eon of
194- AlonzoEraOnwardsAlonzo -> Nothing
195- AlonzoEraOnwardsBabbage -> Nothing
196- AlonzoEraOnwardsConway ->
197- let plutusScript = L. plutusFromRunnable runnable
198- in Just $ error " fromPlutusRunnable: ConwayPlutusV4" plutusScript
199- AlonzoEraOnwardsDijkstra ->
200- let plutusScript = L. plutusFromRunnable runnable
201- in Just $ Dijkstra. DijkstraPlutusV4 plutusScript
129+ -> Maybe (L. PlutusScript era )
130+ fromPlutusRunnable L. SPlutusV1 runnable =
131+ L. mkPlutusScript $ L. plutusFromRunnable runnable
132+ fromPlutusRunnable L. SPlutusV2 runnable =
133+ L. mkPlutusScript $ L. plutusFromRunnable runnable
134+ fromPlutusRunnable L. SPlutusV3 runnable =
135+ L. mkPlutusScript $ L. plutusFromRunnable runnable
136+ fromPlutusRunnable L. SPlutusV4 runnable =
137+ L. mkPlutusScript $ L. plutusFromRunnable runnable
202138
203139toAlonzoDatum
204- :: AlonzoEraOnwards era
205- - > L. SLanguage lang
140+ :: L. Era era
141+ = > L. SLanguage lang
206142 -> PlutusScriptDatum lang purpose
207- -> Maybe (L. Data ( ShelleyLedgerEra era ) )
208- toAlonzoDatum eon l d =
143+ -> Maybe (L. Data era )
144+ toAlonzoDatum l d =
209145 let mHashableData = getPlutusDatum l d
210146 in case mHashableData of
211- Just h -> Just $ alonzoEraOnwardsConstraints eon $ toAlonzoData h
147+ Just h -> Just $ toAlonzoData h
212148 Nothing -> Nothing
213149
214150getPlutusDatum
0 commit comments