IntersectMBO / cardano-ledger

The ledger implementation and specifications of the Cardano blockchain.
Apache License 2.0
250 stars 157 forks source link

`transaction build` no longer checks datum for PlutusV1 and PlutusV2 spending scripts #4444

Open mkoura opened 2 weeks ago

mkoura commented 2 weeks ago

Description

With integration of CIP-69, the datum is optional for PlutusV3 spending scripts. However datum is still required for PlutusV1 and PlutusV2 spending scripts.

The transaction build command used to check datum, and failed to build a tx when datum was missing on the txin ("txin does not have a script datum") or when the provided datum was wrong ("The Plutus script witness has the wrong datum (according to the UTxO)."). Now the transaction build doesn't check the datum provided for PlutusV1 and PlutusV2 scripts.

Submitting the tx still fails as expected.

Steps to Reproduce

  1. Try do build a Tx that contains a spending PlutusV1 or PlutusV2 script, while providing wrong datum, or no datum on the "locked" txin.
  2. Observe that transaction build builds the transaction without reporting an error.

Additional Context

cardano-cli 8.24.0.0 - linux-x86_64 - ghc-8.10
git rev ae8bc933ee6b6366c04854c1e127fd8dfb29b556

cardano-node 8.12.0 - linux-x86_64 - ghc-8.10
git rev ae8bc933ee6b6366c04854c1e127fd8dfb29b556
mkoura commented 1 week ago

The error ultimately comes from evalTxExUnitsWithLogs which lives in the cardano-ledger, so I'm moving it there.