Skip to content

Revert predicate check BabbageNonDisjointRefInputs for PlutusV1/V2 #5009

@lehins

Description

@lehins

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:

  1. 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

  2. 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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingintra-era-hardforkA task that requires an intra-era hard fork

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions