You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Ensure Plutus V4 scripts can be deserialised by cardano-cli #1448
cardano-api 11.7.0.0 and the ledger define Plutus V4. The CLI needs to be able to read a PlutusScriptV4 text envelope and use it as a witness everywhere the transaction commands accept a Plutus script.
Acceptance criteria
A PlutusScriptV4 text envelope is accepted by every --*-script-file option in the transaction commands: spending, minting, withdrawal, certificate, vote and proposal witnesses.
--*-plutus-script-v4 flags exist for all reference script witness kinds, alongside the existing v2 and v3 flags.
Golden tests cover a V4 text envelope through transaction build-raw in the Dijkstra era, and help.cli is regenerated for the new flags.
The cardano-cli part is straightforward.
Since cardano-api 11.7.0.0 the script readers are version agnostic, so every --*-script-file option already accepts a PlutusScriptV4 text envelope.
The --*-plutus-script-v4 flags for the six reference script witness kinds (spending, minting, withdrawal, certificate, vote, proposal) come with golden coverage for a Dijkstra transaction build-raw that uses them and for hashing a V4 envelope:
The ledger blocker is gone.
cardano-ledger-dijkstra 0.4.0.0 on CHaP carries the Plutus V4 field of the Dijkstra transaction witness set, and cardano-api master builds against it since index-state 2026-10-06:
One ledger gap remains.
cardano-ledger-dijkstra 0.4.0.0 reads auxiliary scripts back only up to Plutus V3, so a V4 auxiliary script is dropped on read-back until a release with:
Cost model: the ledger seeds a Plutus V4 cost model at the Dijkstra upgrade with the same parameter names as V3, and cardano-api's Dijkstra genesis defaults include it, so transaction build is not blocked by it.
Fixtures: an always-succeeds validator compiled against PlutusLedgerApi.V4 produces the same bytes as the relabelled V3 fixture, so the golden fixture is a genuine V4 build.
The acceptance criteria stay as written.
The direct-witness golden through transaction build-raw in Dijkstra is no longer deferred and goes into #1452 once #1359 lands.
Activity
carbolymer commentedon Sep 25, 2026
The cardano-cli part is straightforward.
Since cardano-api 11.7.0.0 the script readers are version agnostic, so every
--*-script-fileoption already accepts aPlutusScriptV4text envelope.The
--*-plutus-script-v4flags for the six reference script witness kinds (spending, minting, withdrawal, certificate, vote, proposal) come with golden coverage for a Dijkstratransaction build-rawthat uses them and for hashing a V4 envelope:Update, 9 October.
The ledger blocker is gone.
cardano-ledger-dijkstra 0.4.0.0 on CHaP carries the Plutus V4 field of the Dijkstra transaction witness set, and cardano-api master builds against it since index-state 2026-10-06:
PlutusV4scripts totransaction_witness_setCDDL cardano-ledger#5403cardano-api now fails instead of silently dropping a script the era does not support:
Plutus V4 in the legacy transaction API for Dijkstra, which
--tx-out-reference-script-fileand auxiliary scripts go through, is pending in:One ledger gap remains.
cardano-ledger-dijkstra 0.4.0.0 reads auxiliary scripts back only up to Plutus V3, so a V4 auxiliary script is dropped on read-back until a release with:
eraMaxLanguagetoPlutusV4, fix tests cardano-ledger#6109Cost model: the ledger seeds a Plutus V4 cost model at the Dijkstra upgrade with the same parameter names as V3, and cardano-api's Dijkstra genesis defaults include it, so
transaction buildis not blocked by it.Fixtures: an always-succeeds validator compiled against PlutusLedgerApi.V4 produces the same bytes as the relabelled V3 fixture, so the golden fixture is a genuine V4 build.
The acceptance criteria stay as written.
The direct-witness golden through
transaction build-rawin Dijkstra is no longer deferred and goes into #1452 once #1359 lands.