Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales
Consensus Team Lead

High level summary

  • Leios prototype and testnet (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Cut a new prototype release, prototype-2026w29, carrying this fortnight's work across the node and the Leios repository (#6621, #996).
    • Landed the change that lets the node certify and announce endorser blocks inside the forging loop, so it no longer misses chances to certify. This is expected to raise the certification rate and throughput (#2105).
    • Added CallTrace instrumentation to the Forge thread, making it easier to trace and profile block production in the prototype (#2126).
    • Taught the LeiosNotify mini protocol to accept but ignore the proper MsgLeiosBlockAnnouncement message, a step towards the full block-announcement flow (#2142, integrated into the node in #6624).
    • Enriched typed-protocols to give more precise back pressure for pipelined mini protocols, motivated by the new LeiosNotify protocol (#93).
    • Improved testnet stability by stopping the node from mangling some Dijkstra blocks, a quick workaround while a ledger issue is fixed (#2140, for cardano-ledger#5937).
    • Updated the prototype dashboards and added a graph of recent endorser-block events, making the testnet easier to observe (#990, #992).
  • Mempool design for Leios (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Wrote up Mempool design considerations for Leios (#997).
    • Took part in discussions on how the Mempool should work: its current requirements, a "high-throughput mempool", and a "tiered-pricing mempool" in which transactions that pay more can queue ahead of normal-paying ones when they do not conflict.
  • Storage and snapshots (Treasury Funding Initiative 10: LSM including UTXO-HD):
    • Set the node's default snapshot policy to match Mithril's snapshot policy, so the two stay aligned (#2149).
    • Added a new LSMExportPath configuration option, letting operators control where LSM data is exported (#6629).

Ledger Team Update

· 4 min read
Alexey Kuleshevich
Ledger Team Software Engineer

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

Mithril Team Update

· 3 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team completed the refactoring of the non-recursive SNARK proof to remove the circuit verification key, upgraded the midnight-zk library to 2.3.3, enabled the Plutus-friendly hash for IVC proving, and refactored the error handling in the Midnight library. They also continued analyzing and optimizing the testing strategy for the STM SNARK modules.

The team also continued implementing aggregator CLI commands for configuration parameters and creating a runbook for on-chain configuration parameters. They completed the simplification of the SignersRegistrationRetriever trait and continued work on shipping the Mithril signer node binary in the Cardano node bundle, the 2628 distribution release, the upgrade to Cardano node v.11.1, and the update of the DMQ node to 0.7.0.0.

Finally, the team completed the repository transfer to the Intersect MBO organization and continued preparing the documentation website for Docusaurus v4.

Low level overview

Features

  • Completed the issue Refactor the non-recursive SNARK proof to not carry the circuit verification key #3380
  • Completed the issue Upgrade midnight-zk to 2.3.3 #3375
  • Completed the issue Enable plutus friendly hash for IVC proving #3307
  • Completed the issue Refactor error handling from Midnight library #3382
  • Worked on the issue Implement aggregator CLI commands for configuration parameters #3392
  • Worked on the issue Analyze and optimize the testing strategy of the STM SNARK modules #3405

Protocol maintenance

  • Worked on the issue Transfer repository to IntersectMBO organization #3276
  • Completed the issue Simplify the SignersRegistrationRetriever trait #3410
  • Completed the issue Prepare documentation website to docusaurus v4 #3411
  • Worked on the issue Ship Mithril signer node binary in Cardano node bundle in GitHub #3011
  • Worked on the issue Release 2628 distribution #3271
  • Worked on the issue Upgrade to Cardano 11.1 #3346
  • Worked on the issue Update DMQ node to 0.7.0.0 #3358
  • Worked on the issue Create runbook for on-chain configuration parameters #3399
  • Worked on the issue Update documentation website to docusaurus stable version 3.10.2 #3413
  • Worked on the issue Update documentation website to tailwind v4 #3414

Mithril Team Update

· 3 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team completed the modularity enhancement of the SNARK recursive circuit with gadgets. They continued work on refactoring the non-recursive SNARK proof to avoid carrying the circuit verification key, analyzing and optimizing the testing strategy for the STM SNARK modules, and upgrading the midnight-zk library to 2.3.3.

The team also enhanced the aggregator state machine to support the Blocked state and continued implementing the aggregator CLI commands for decentralized configuration parameters. Additionally, they continued shipping the Mithril signer node binary in the Cardano node bundle, working on the release of the 2628 distribution, upgrading to Cardano 11.1, and updating the DMQ node to 0.7.0.0.

Finally, the team completed the Rust upgrade to version 1.97, fixed the Mithril install script failing on the unstable version, and captured the end-to-end execution logs as artifacts.

Low level overview

Features

  • Completed the issue Refactor SNARK recursive circuit - Modularity enhancement with gadgets #3131
  • Worked on the issue Refactor the non-recursive SNARK proof to not carry the circuit verification key #3380
  • Worked on the issue Implement aggregator CLI commands for configuration parameters #3392
  • Worked on the issue Analyze and optimize the testing strategy of the STM SNARK modules #3405
  • Worked on the issue Upgrade midnight-zk to 2.3.3 #3375

Protocol maintenance

  • Completed the issue Upgrade Rust to version 1.97 #3387
  • Completed the issue Enhance aggregator state machine to support Blocked state #3333
  • Completed the issue Mithril install script fails for unstable version #3386
  • Completed the issue Capture e2e execution logs in artifacts #3362
  • Completed the issue Remove docker-build: in make files #3406
  • Worked on the issue Ship Mithril signer node binary in Cardano node bundle in GitHub #3011
  • Worked on the issue Release 2628 distribution #3271
  • Worked on the issue Upgrade to Cardano 11.1 #3346
  • Worked on the issue Update DMQ node to 0.7.0.0 #3358

Consensus Team Update

· 3 min read
Damian Nadales
Consensus Team Lead

High level summary

  • Leios prototype and design (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Continued to harden the Leios testnet with a round of prototype fixes across consensus and the node (#2113, #6614), and cut two prototype releases carrying this work, prototype-2026w27a (#978) and prototype-2026w28 (#986).
    • Fixed two bugs found while running the testnet. The node no longer applies uncertified endorser blocks from the immutable database on startup, and the LeiosNotify pipelining depth was increased (#2114). A startup crash caused by a race condition on a node's first run was also resolved (#2115, fixing ouroboros-leios#983).
    • Added a voting dashboard to make Leios easier to observe, showing how endorser blocks are voted on and certified (ouroboros-leios#985).
    • Reviewed a change to how the node certifies and applies endorser blocks that is expected to roughly double the certification rate and raise throughput (#2105).
    • Drafted prose for the Leios high-level design document, describing how the pieces of the protocol fit together (commit 13e3908), and started negotiating the interface between Consensus and Ledger for Leios with the Ledger team (ouroboros-leios#977).
  • Node diversity and conformance (Treasury Funding Initiative 17: Maintenance and Support):
    • Took part in node diversity meetings on conformance testing with the Amaru team and others, including working through a conformance hurdle specific to the preview network.
    • Discussed how to specify the mempool and transaction submission precisely enough that other node implementations can follow the same rules.
  • UTXO-HD snapshot tooling (Treasury Funding Initiative 10: LSM including UTXO-HD):
    • Improved the snapshot-converter tool's --help and --version output, making it clearer how to convert ledger snapshots between the in-memory and on-disk (LSM) formats (#2098).
    • Added a temporary workaround so snapshot-converter reads the bloom-filter salt directly from exported files, until a proper fix lands on the LSM-trees side (#2097, pending lsm-tree#855).
  • Documentation (Treasury Funding Initiative 17: Maintenance and Support):
    • Added a reference document describing the metrics and tracing available for observing Ouroboros Genesis (#2103).