Ledger Team Update
High level summary
Leios remained the main focus and moved further toward its concrete block and certificate structure. We added the LEIOSCERT rule together with the Leios-certificate-related BBODY failures, defined the EbReferences CDDL and an Annotator decoder for it, and started tracking the last tick slot number in the new epoch state and the last endorser block announcement in the ledger state. We also prevented duplicate BLS keys from being used, improved how Leios committee seats are rendered (hex keys and decimal weights), integrated the week 42 ledger changes on the prototype branch, and backed the work with Leios certificate golden tests and better example parameters.
A significant milestone was the Dijkstra era gaining its economic machinery: we implemented the minFee calculation for Dijkstra, adopted the CIP-23 effective cost and margin in the rewards calculations, and fixed the block body size computation. There was also a cluster of serialisation and decoder fixes, covering the PlutusData decoder, redeemers for protocol version 12, NonEmpty set and map decoders, and the IPv4 encoding order (now network order rather than swapped), with property tests added for Plutus data conversion.
Work on sub-transactions continued, with min-ada validation switched to a non-static check and submitTx in the ImpTests now randomly exercising top-level and sub-level transactions, alongside new Imp tests for SUBDELEG, SUBPOOL and SUBGOVCERT. On the rules side we added LEDGER rule limits and stopped inverting predicate failures in the small-steps framework, and we simplified transaction hashing by removing hashTx and the DijkstraEraTx type class in favour of the existing HashAnnotated. We also added a queryStakePoolState ledger state query.
On the testing and releasing side we enabled ExUnits tests and fixed the bootstrap witness in conformance, made the Plutus tests run with arbitrary Plutus versions, added tests for transValidityInterval and for the ValidityInterval/VotingProcedures semigroup and monoid instances, tested voting stake computation for pools with zero delegations, updated the formal ledger specification, and filled in a few missing predicate-check ImpTests. Infrastructure changes were limited to a cleret bump to 0.5.2.1 and a dependency update.
Low level summary
Features
- PR-6162 - Add
queryStakePoolState - PR-6188 - Switch sub-transaction min-ada validation to be a non-static check
- PR-6189 - Fix decoder for
PlutusData - PR-6187 - Fix IPv4 encoding order to use network order instead of swapped
- PR-6193 - Leios prototype: Integrate ledger changes for w42
- PR-6165 - Prevent duplicate BlsKey from being used
- PR-6195 - Remove hashTx and DijkstraEraTx in favor of HashAnnotated
- PR-6184 - Add last tick slot number to NES and last EB announcement to LS
- PR-6202 - Add Leios certificate related BBODY failures
- PR-6210 - EbReferences CDDL
- PR-6190 - Implement minFee calculation for Dijkstra
- PR-6197 - Use CIP-23 effective cost and margin in rewards calculations
- PR-6208 - Stop inverting predicate failures in small-steps
- PR-6201 - Render Leios committee seats as hex keys and decimal weights
- PR-6219 - Add an Annotator decoder for EbReferences
- PR-6224 - Fix redeemers for PV12
- PR-6225 - Fix block body size computation in Dijkstra
- PR-6209 - Add
LEIOSCERT - PR-6221 - LEDGER rule limits
- PR-6230 - Some decoder fixes for NonEmpty Sets and Maps
Testing
- PR-6160 - Make
submitTxrandomly submit top-level and sub-level transactions inImpTests - PR-6192 - Fix bootstrap witness in conformance
- PR-6169 - Make plutus tests run with arbitrary Plutus versions
- PR-6163 - Tests for Semigroup and Monoid instances for ValidityInterval and VotingProcedures
- PR-6200 - Enable exunits tests in conformance
- PR-6183 - Add tests for
transValidityInterval - PR-6011 - Add leios cert golden tests
- PR-6194 - Set better Leios example parameters
- PR-6103 - Test voting stake computation for pools with zero delegations
- PR-6218 - Add property tests for Plutus Data conversion
- PR-6223 - Fix generator for script hash integrity tests
- PR-6059 - Add Imp tests for
SUBDELEG,SUBPOOLandSUBGOVCERT - PR-6228 - Update formal ledger specification
- PR-6232 - Add missing ImpTests for some predicate checks
