@@ -46,7 +46,7 @@ import Cardano.Ledger.Conway.TxInfo (
4646 transTxInInfoV3 ,
4747 )
4848import qualified Cardano.Ledger.Conway.TxInfo as Conway
49- import Cardano.Ledger.Credential (StakeReference (.. ))
49+ import Cardano.Ledger.Credential (Credential ( .. ), StakeReference (.. ))
5050import Cardano.Ledger.Dijkstra.Core
5151import Cardano.Ledger.Dijkstra.Era (DijkstraEra )
5252import Cardano.Ledger.Dijkstra.Scripts (
@@ -104,8 +104,10 @@ data DijkstraContextError era
104104 DirectDepositsNotSupported DirectDeposits
105105 | -- | Attempt to use PlutusV1-V3 with non-empty account balance intervals will result in this failure
106106 AccountBalanceIntervalsNotSupported (AccountBalanceIntervals era )
107- | -- | Attempt to use sub-transactions with PlutusV1-V3 scripts at the top level
107+ | -- | Attempt to use sub-transactions with PlutusV1-V3 scripts at the top level will result in this failure
108108 SubTxsAreNotSupported (NonEmpty TxId )
109+ | -- | Attempt to use PlutusV1-V3 with script hashes in guards will result in this failure
110+ GuardScriptHashesNotSupported (NonEmpty ScriptHash )
109111 deriving (Generic )
110112
111113deriving instance
@@ -163,6 +165,8 @@ instance
163165 kindObject " AccountBalanceIntervalsNotSupported" [" account_balance_intervals" .= show abi]
164166 SubTxsAreNotSupported txIds ->
165167 kindObject " SubTxsAreNotSupported" [" txIds" .= toJSON txIds]
168+ GuardScriptHashesNotSupported scriptHashes ->
169+ kindObject " GuardScriptHashesNotSupported" [" script_hashes" .= toJSON scriptHashes]
166170
167171instance
168172 ( EraPParams era
@@ -182,6 +186,7 @@ instance
182186 20 -> SumD DirectDepositsNotSupported <! From
183187 21 -> SumD AccountBalanceIntervalsNotSupported <! From
184188 22 -> SumD SubTxsAreNotSupported <! From
189+ 23 -> SumD GuardScriptHashesNotSupported <! From
185190 k -> Invalid k
186191
187192instance
@@ -204,6 +209,8 @@ instance
204209 DirectDepositsNotSupported dd -> Sum DirectDepositsNotSupported 20 !> To dd
205210 AccountBalanceIntervalsNotSupported abi -> Sum AccountBalanceIntervalsNotSupported 21 !> To abi
206211 SubTxsAreNotSupported txIds -> Sum SubTxsAreNotSupported 22 !> To txIds
212+ GuardScriptHashesNotSupported scriptHashes ->
213+ Sum GuardScriptHashesNotSupported 23 !> To scriptHashes
207214
208215instance Inject (ConwayContextError era ) (DijkstraContextError era ) where
209216 inject = ConwayContextError
@@ -423,6 +430,7 @@ guardDijkstraFeaturesForPlutusV1toV3 tx = do
423430 directDeposits = txBody ^. directDepositsTxBodyL
424431 accountBalanceIntervals = txBody ^. accountBalanceIntervalsTxBodyL
425432 subTransactions = txBody ^. subTransactionsTxBodyL
433+ scriptHashes = [sh | ScriptHashObj sh <- toList (txBody ^. guardsTxBodyL)]
426434 unless (null $ unDirectDeposits directDeposits) $
427435 Left $
428436 inject $
@@ -437,6 +445,12 @@ guardDijkstraFeaturesForPlutusV1toV3 tx = do
437445 Left $
438446 inject $
439447 SubTxsAreNotSupported @ era subTxIds
448+ case NE. nonEmpty scriptHashes of
449+ Nothing -> Right ()
450+ Just neScriptHashes ->
451+ Left $
452+ inject $
453+ GuardScriptHashesNotSupported @ era neScriptHashes
440454
441455transFailUnsupportedScriptInSubTx ::
442456 forall l era .
0 commit comments