Skip to content

Ensure Plutus V4 scripts can be deserialised by cardano-cli #1448

Closed

Description

@Jimbo4350

Summary

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.

Versions

  • cardano-cli master at 94c0bf1ed
  • cardano-api 11.7.0.0

Activity

  1. carbolymer commented on Sep 25, 2026

    @carbolymer
    Contributor

    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:

    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:

    cardano-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-file and 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:

    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.

  2. added
    enhancementFor improvements or extensions to existing functionality.
    on Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementFor improvements or extensions to existing functionality.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions