Skip to content

PV11 cost-model governance bootstrap fails with "Plutus cost models update failed: null" (yaci-cli 0.12.0-beta5, -b1) #184

Description

@nau

Summary

On bloxbean/yaci-cli:0.12.0-beta5 (and 0.12.0-beta5-b1) the devnet node runs protocol version 11, but the automatic Plutus cost-model governance update fails on first run, so the chain keeps the pre-PV11 (251-entry) PlutusV3 cost model. The node then costs the missing PV11 entries (batch6 builtins, case on non-constructor values) as maxBound, so any PV11-compiled PlutusV3 script fails on-chain with a huge budget overspend, while off-chain evaluators that use proper PV11 costs consider the same transaction valid.

Reproduction

Equivalent to what yaci-cardano-test's YaciCardanoContainer runs:

docker run -d --name yaci-pv11 \
  -e yaci_cli_mode=native -e yaci_store_mode=native \
  -e conwayHardForkAtEpoch=1 -e shiftStartTimeBehind=true \
  -e yaci_store_enabled=true -e ogmios_enabled=true \
  --entrypoint /app/yaci-cli -p 8080:8080 \
  bloxbean/yaci-cli:0.12.0-beta5 \
  create-node -o --slot-length 1 --block-time 1 --start

Container log:

Submitting Plutus cost models governance proposal...
Using Plutus cost models file: plutus-costmodels-v11.json
Plutus cost models update failed: null
Plutus cost models governance proposal failed. Extended builtins may not be available.

(The message text suggests a NullPointerException inside LocalNodeService.updateCostModels.)

Afterwards GET /api/v1/epochs/parameters reports protocol_major_ver: 11 but the PlutusV3 cost model still has only 251 entries (the correct 350-entry model is present in the image at /app/config/plutus-costmodels-v11.json).

Effect

Submitting a transaction with a PV11-compiled PlutusV3 script (e.g. one using case on built-in values) fails with:

ConwayUtxowFailure (UtxoFailure (UtxosFailure (ValidationTagMismatch (IsValid True)
  (FailedUnexpectedly (PlutusFailure ...
The machine terminated part way through evaluation due to overspending the budget.
The budget when the machine terminated was:
({cpu: -9223372036842497312 | mem: -9223372036854734533})
The protocol version is: Version 11

So the devnet cannot execute scripts that target the van Rossem protocol version even though the node itself is PV11.

Environment

  • bloxbean/yaci-cli:0.12.0-beta5 and 0.12.0-beta5-b1, arm64, Docker Desktop on macOS
  • Observed both via yaci-cardano-test 0.1.0 (Testcontainers) and plain docker run as above

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions