Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions blog/2026-07-22-ledger.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: Ledger Team Update
slug: 2026-07-22-ledger
authors: lehins
tags: [ledger]
hide_table_of_contents: false
---

## High level summary

Leios support in the ledger continued to take shape this cycle. Building on the block body work from the previous updates, a `Leios.BlockHeader` was added along with an `EraBlockHeader` instance for Praos that consensus needs for its 11.1 integration, which together move the block header behind a common era-parametric abstraction. On the `leios-prototype` branch we also backported the addition of a `LeiosKey` (a BLS12381 public key together with a possession proof) to `StakePoolParams` and `StakePoolState`, with the Dijkstra CDDL updated to carry the Leios key as an optional field in the pool registration certificate.

A good deal of governance and rules work landed as well. Following the introduction of the `ENTITIES` rule in the previous cycle, we implemented CIP-181 by removing the DRep-delegation requirement for reward withdrawals, which dropped the corresponding predicate failures from the entities and sub-entities rules. On the Plutus cost model side we followed up on the earlier argument-ordering bug fix with a more permanent safeguard: a new `CostModelsUpdate` newtype now wraps the update argument so the old and new cost models can no longer be swapped by accident, and the symmetric `Semigroup`/`Monoid` instances for `CostModels` that made that mistake possible were removed. We also adjusted the `consumed`/`produced` interface and fixed `getProducedValue` for the Dijkstra era, added an `AccountBalanceExact` constructor to `AccountBalanceInterval`, and switched the minor protocol version to `Word32`. We also fixed `NoThunks` instances in the Alonzo and Conway genesis types.

Several changes continued the ongoing push toward more era-parametric, abstract interfaces. `SnapShots` was made era parametric, and `ToJSON`/`FromJSON` instances were added for `EraTxAuxData`, extending the JSON serialisation coverage started last cycle for scripts. On the Canonical Ledger State front, export and import modules were introduced for handling canonical state, giving a first pass at reading and writing it through the CLS interface. On the testing side the Conway conformance tests were updated to protocol version 11 and tests were added for the newly introduced top-level guard requirement.

On the tooling and infrastructure side, the hackage index-state was bumped to pick up the latest `cuddle` release, which now validates that CBOR maps contain no duplicate keys per RFC 8949 and required a couple of generators to be adjusted accordingly, and the usual GitHub Actions bumps were applied.

## Low level summary

### Features

* [PR-5905] - Introduce `CostModelsUpdate`
* [PR-5853] - Add ToJSON/FromJSON instances for EraTxAuxData
* [PR-5869] - Add export/import modules for canonical ledger state
* [PR-5915] - Add EraBlockHeader instance for Praos
* [PR-5918] - Fix `getProducedValue` for Dijkstra
* [PR-5916] - Remove DRep requirement for reward withdrawals
* [PR-5919] - Adjust `consumed` and `produced` interface
* [PR-5935] - Switch minor protocol version to `Word32`
* [PR-5940] - [Backport] Add LeiosKey to StakePoolParams in leios-prototype branch
* [PR-5927] - Add `Leios.BlockHeader`
* [PR-5933] - Add `AccountBalanceExact` constructor to `AccountBalanceInterval`
* [PR-5944] - Make `SnapShots` era parametric
* [PR-5926] - Fix/allow thunks in Alonzo/Conway geneses

### Testing

* [PR-5900] - Update Conway conformance tests to PV 11
* [PR-5914] - Add tests for RequiredTopLevelGuards

### Infrastructure and releasing

* [PR-5917] - Bump slackapi/slack-github-action from 3.0.3 to 3.0.4 in the actions group
* [PR-5928] - Update hackage index-state version to get latest cuddle release
* [PR-5934] - Bump slackapi/slack-github-action from 3.0.4 to 4.0.0 in the actions group

[PR-5900]: https://github.com/IntersectMBO/cardano-ledger/pull/5900
[PR-5905]: https://github.com/IntersectMBO/cardano-ledger/pull/5905
[PR-5853]: https://github.com/IntersectMBO/cardano-ledger/pull/5853
[PR-5869]: https://github.com/IntersectMBO/cardano-ledger/pull/5869
[PR-5914]: https://github.com/IntersectMBO/cardano-ledger/pull/5914
[PR-5917]: https://github.com/IntersectMBO/cardano-ledger/pull/5917
[PR-5915]: https://github.com/IntersectMBO/cardano-ledger/pull/5915
[PR-5918]: https://github.com/IntersectMBO/cardano-ledger/pull/5918
[PR-5916]: https://github.com/IntersectMBO/cardano-ledger/pull/5916
[PR-5928]: https://github.com/IntersectMBO/cardano-ledger/pull/5928
[PR-5934]: https://github.com/IntersectMBO/cardano-ledger/pull/5934
[PR-5919]: https://github.com/IntersectMBO/cardano-ledger/pull/5919
[PR-5935]: https://github.com/IntersectMBO/cardano-ledger/pull/5935
[PR-5926]: https://github.com/IntersectMBO/cardano-ledger/pull/5926
[PR-5940]: https://github.com/IntersectMBO/cardano-ledger/pull/5940
[PR-5927]: https://github.com/IntersectMBO/cardano-ledger/pull/5927
[PR-5933]: https://github.com/IntersectMBO/cardano-ledger/pull/5933
[PR-5944]: https://github.com/IntersectMBO/cardano-ledger/pull/5944
Loading