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
Summary
On
bloxbean/yaci-cli:0.12.0-beta5(and0.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'sYaciCardanoContainerruns:Container log:
(The message text suggests a NullPointerException inside
LocalNodeService.updateCostModels.)Afterwards
GET /api/v1/epochs/parametersreportsprotocol_major_ver: 11but 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
caseon built-in values) fails with: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-beta5and0.12.0-beta5-b1, arm64, Docker Desktop on macOSyaci-cardano-test0.1.0 (Testcontainers) and plaindocker runas above