Ledger Team Update
High level summary
We continued to focus on Leios this cycle, with the endorser block moving from a data definition to something the ledger can actually validate and apply. The EB and EBLEDGERS rules were implemented, a Leios certificate validation API was exposed from the ledger API, and endorser block application arrived through applyEndorserBlock. Endorser block references were made era-parametric, so they are no longer pinned to a single era. On the pool side, updates that only touch BLS keys no longer require owner witnesses, closing a gap that would have forced unnecessary signatures on key rotation.
Dijkstra gained a distinct mempool transaction representation, separating what the mempool carries from the transaction type used elsewhere. Plutus V4 scripts are now evaluated against the actual V4 API rather than borrowing the previous version's. The state-annotated transaction now also carries reference script size and execution units, so the rules no longer recompute them on every use.
The reference input cost parameter for multi-assets was renamed and retyped, moving from a per-policy to a per-byte cost. Per-policy pricing could not be made fair, since a single policy may carry arbitrarily many asset names, whereas the binary overhead of a multi-asset is straightforward to compute directly.
Testing concentrated on conformance and on the new endorser block machinery. Conformance now tracks which tests are expected to fail, so a disabled test that starts passing is no longer silently ignored, and the tests that already passed were re-enabled. A property test for top-level transaction info was added, comparing the aggregated result against a reference implementation built field by field across the nested transactions of a batch.
Low level summary
Features
- PR-6216 - Leios certificate validation API
- PR-6215 - Add EB and EBLEDGERS
- PR-6248 - Add DijkstraApplyBlock with applyEndorserBlock
- PR-6241 - Make EbReferences era parametric
- PR-6217 - Do not require owners to witness updates for BLS keys
- PR-6257 - Introduce
BlockEnvforApplyBlock - PR-6260 - Follow-up to #6257: export mkDijkstraBlockEnv, remove mkBbodyEnv
- PR-6222 - Add MempoolTx
- PR-6235 - Remove
certsTxfromSubCertsEnv - PR-6255 - Use Plutus v4 API for Plutus v4
- PR-6244 - Enhanced memoization in
StAnnTx - PR-6263 - Rename
ppRefInputsCostPerMultiAssetByte - PR-6251 - Expose
PParamsfrom Conway and Dijkstra API
Testing
- PR-6237 - Add
TopTxInfoproperty test which compares to reference implementations - PR-5984 - Check that disabled tests fail in conformance
- PR-6240 - Ensure
EbSpectest doesn't fail spuriously because of too small txout - PR-6256 - Update formal ledger specification
