Skip to main content

ledger

· 3 min read

title: Ledger Team Update slug: 2026-08-19-ledger authors: lehins tags: [ledger] hide_table_of_contents: false

High level summary

Leios support continued: following the addition of a real BlsKey in the pool parameters, the pool distribution now carries the corresponding LeiosKey and a per-pool BLS-attributed stake, so that BLS-related pool information is available wherever the rest of the pool distribution is consumed.

Groundwork was laid for a broader refactor of predicate failures toward standalone, reusable units that can be shared across rules and eras. The first such predicate failure landed as a template for the transition, with sub-transactions in Dijkstra as the initial target. Ord instances were also added uniformly across the predicate-failure hierarchy so that failures can be collected into sets, which fits the same push toward standalone, composable predicate failures.

A number of CBOR decoders in the ledger were relaxed to accept indefinite-length encodings in addition to the definite-length ones they previously required. This makes the decoders tolerant of structurally equivalent CBOR variants.

Test infrastructure received substantial attention. On the Imp side, sub-transaction fixup was implemented (Plutus scripts aside), directly addressing the sub-transaction testing gap flagged last cycle. On the conformance side, several test suites were re-enabled after fixes to the underlying constrained generators. Twiddling tests were also enabled in Dijkstra, providing more robust serialization tests.

Low level summary

Features

  • PR-5988 - Leios: add LeiosKey to PoolDistr
  • PR-5992 - Add individualPoolStakeBls to PoolDistr
  • PR-5850 - Add Ord instances for predicate failures
  • PR-5979 - Make GenerateCBOR exit with nonzero when generation fails, retry failed attempts
  • PR-5772 - Adding first standalone AccountAlreadyRegistered predicate failure
  • PR-5862 - Enable Dijkstra Twiddling tests, relax some decoders in PV12

Testing

  • PR-5964 - Enable UTXOW/UTXO/UTXOS tests from all eras in conformance
  • PR-5990 - Fix infinite loop in initialLedgerState test generator, re-enable UTXO/UTXOW/LEDGER/LEDGERS conformance tests
  • PR-5980 - Implement subtransaction-fixup in Imp framework (except Plutus scripts)
  • PR-6008 - Enact state constrained generator fix

Infrastructure and releasing

  • PR-6000 - Bump HLS to 2.14.0.0
  • PR-5838 - Post test failures summary to a PR comment as well as to CI
  • PR-5998 - CHaP flake optimization
  • PR-6005 - Bump actions/checkout from 6 to 7 in the actions group

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team continued optimizing the SNARK test suite by caching the recursive circuit test fixtures on disk and by consolidating the halo2_snark slow proof tests around shared and golden proofs.

They continued creating the new chain adapter that reads the on-chain configuration parameters, adapting the infrastructure and writing the runbook for these parameters, and worked on the deterministic immutable compressed archives.

Finally, the team anticipated the clippy warnings of the upcoming Rust 1.98 release, and worked on the update of the ed25519-dalek dependency.

Low level overview

Features

  • Worked on the issue Extend the on-disk test cache to the recursive circuit test fixtures #3462
  • Worked on the issue Consolidate the halo2_snark slow proof tests around shared and golden proofs #3463
  • Worked on the issue Add missing IVC off-circuit checks #3381
  • Worked on the issue Create new chain adapter to read on-chain configuration parameters #3393
  • Worked on the issue Create deterministic immutable compressed archives #3435

Protocol maintenance

  • Completed the issue Upgrade Rust to version 1.98 #3484
  • Worked on the issue Adapt infrastructure for on-chain configuration parameters #3397
  • Worked on the issue Create runbook for on-chain configuration parameters #3399
  • Worked on the issue Update ed25519-dalek dependency #3471

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team completed the aggregator CLI commands for the on-chain configuration parameters, the combination of the dual MSM and accumulator pairing checks in the IVC proof verification, and the reuse of the cached unsafe SRS in the SNARK test setups.

They continued creating the new chain adapter that reads the on-chain configuration parameters, implementing the missing IVC off-circuit checks, and creating deterministic immutable compressed archives in the aggregator.

Finally, the team completed fixing the flakiness of the end-to-end tests in the CI, deployed the on-chain configuration parameters reader on the test infrastructure, and continued working on the runbook documenting these parameters.

Low level overview

Features

  • Completed the issue Implement aggregator CLI commands for configuration parameters #3392
  • Completed the issue Reuse the cached unsafe SRS in the SNARK test setups #3433
  • Completed the issue Combine the dual MSM and accumulator pairing checks in IVC proof verification #3420
  • Worked on the issue Create new chain adapter to read on-chain configuration parameters #3393
  • Worked on the issue Add missing IVC off-circuit checks #3381
  • Worked on the issue Create deterministic immutable compressed archives #3435

Protocol maintenance

  • Completed the issue Fix flakiness of e2e tests in the CI #3452
  • Worked on the issue Adapt infrastructure for on-chain configuration parameters #3397
  • Worked on the issue Create runbook for on-chain configuration parameters #3399
  • Worked on the issue Update ed25519-dalek dependency #3471

Plutus Core Team Update

· 2 min read
Ziyang Liu
Software Engineering Lead

High level summary

The Plutus team has recently opened two CIPs and one CPS for review. We encourage everyone to read them and leave comments - we would like as much feedback as possible.

  • CIP-0194 adds a Match node to UPLC for matching on builtin constants (primarily Data). This will make consuming script contexts in validators much cheaper than the status quo.
  • CIP-0195 specifies the Data encoding of the Plutus V4 ledger types.
  • A new CPS aims to build community consensus on how to expose our property tests, and tests for older protocol and language versions, to alternative node and UPLC evaluator implementers with minimal integration effort.

Other than these, we've merged the CollapseCase pass, which rewrites list casing into dropList whenever applicable; the uplc tool now deduces input and output formats from file extensions; and the Plutus V4 ledger API types have been released in 1.67.0.0.

Key Pull Requests Merged

Pull Requests In Progress

Consensus Team Update

· 4 min read
Damian Nadales
Consensus Team Lead

High level summary

  • Leios prototype and testnet (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Added endorser-block announcements to the node. The node now generates them and sends them to its peers. An announcement tells a peer that an endorser block exists, before the block itself arrives. The other Leios components do not use the announcements yet. This change is the first step (#2132, for ouroboros-leios#772).
    • Added announcements to the proto-devnet demo, with a new graph of the announcement age on arrival. The demo can now run a line topology. In that topology the first and third nodes have no direct link. This makes the announcement behaviour easier to watch (#1002).
    • Made the node reject malformed Dijkstra blocks. A block body must not carry both a Leios certificate and transactions. The header flag must also agree with the body content (#2178, for ouroboros-leios#932).
    • Released a new prototype, prototype-2026w32 (#6636).
    • Fixed the testnet visualizer. It lost events and reported send and receive counts that did not match. It now reads the log store with range queries instead of a live stream (#1000).
    • Corrected the units on the throughput dashboard. The certification graph now covers every node, not only the first (#1001).
  • Node performance (Treasury Funding Initiative 17: Maintenance and Support):
    • Removed the allocations from the comparison of transaction identifiers. The old code rebuilt a 32-byte hash on each comparison. The mempool and local queries use that code path heavily. Comparisons now run about five times faster and allocate nothing (#2125, for #2003).
    • Cut the allocations in the mempool snapshot code (#2195).
    • Simplified how the mempool moves a transaction into a newer era. The mempool now decodes the transaction straight into the target era. It no longer steps through each era in between (#2134).
  • Releases and the next hard fork (Treasury Funding Initiative 17: Maintenance and Support):
    • Released ouroboros-consensus 4.0.0.0 and 4.1 (#2161, #2189).
    • Allowed the node to hard fork into Dijkstra, the next Cardano era (#2167).
  • Storage and snapshots (Treasury Funding Initiative 10: LSM including UTXO-HD):
    • Changed the default snapshot policy. The node now takes a snapshot every 40*k slots, with no offset. On mainnet that is one snapshot a day. One snapshot in five lands on an epoch boundary. This keeps the node aligned with Mithril (#2194).
  • Documentation and tooling (Treasury Funding Initiative 17: Maintenance and Support):
    • Wrote a new page on hard forks and node-to-node versioning. A hard fork does not need a new node-to-node protocol version. Each block carries its own era tag. The protocol version holds back an era that is not yet active, not the wire format (#2117).
    • Corrected the db-analyser timing documentation and added two columns to its CSV output. A script that reads the CSV by column position needs an update (#2186).