-
Notifications
You must be signed in to change notification settings - Fork 166
Description
There was a predicate check introduced in Conway era in #4024 that yielded some DApps unable to run their scripts. This was alluded in the #4007 (comment)
It is a bit confusing that the predicate check was introduced in Babbage era UTXO rule, despite being only enabled in Conway. I believe it was implemented in such a way to avoid introducing a whole new UTXO rule in Conway era.
Regardless of this fact the fix for this is pretty straightforward, but it will require an intra-era hard fork:
-
We need to add an upper bound on the major protocol version 11 in this check:
(pvMajor (pp ^. ppProtocolVersionL) > eraProtVerHigh @(BabbageEra (EraCrypto era)))
&& pvMajor (pp ^. ppProtocolVersionL) < natVersion @11
Effectively disabling this check entirely -
Add the same check into the plutus context script translation functionality starting with PlutusV3:
toPlutusTxInfo proxy LedgerTxInfo {ltiProtVer, ltiEpochInfo, ltiSystemStart, ltiUTxO, ltiTx} = do
Such fix, will convert this predicate failure from being a general ledger predicate check to plutus specific predicate check