Skip to main content

Mithril Team Update

· 3 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team completed the implementation of the SNARK-friendly genesis certificate and the type-consistency and naming-alignment refactoring for the SNARK recursive circuit. They continued work on the prover input and the SNARK proof verification of the recursive SNARK aggregation primitives, and on adapting the certificate chain to support the recursive SNARK.

Additionally, they completed support for DMQ ledger peers, enforcement of the DMQ message ID format, and a prototype for Cardano node ledger state certification. They also continued shipping the Mithril signer node binary in the Cardano node bundle and updating the ledger state snapshot selection in artifacts.

Finally, the team completed the upgrade of the DMQ node to 0.6.0.0, removed support for Mithril nodes in the devnet, and continued work on optimizing the end-to-end tests for SNARK.

Low level overview

Features

  • Completed the issue Implement SNARK-friendly genesis certificate #3145
  • Completed the issue Refactor SNARK recursive circuit - Type consistency #3128
  • Completed the issue Refactor SNARK recursive circuit - Naming alignment #3130
  • Completed the issue Prototype Cardano node ledger state certification #3269
  • Completed the issue Support for DMQ ledger peers #3303
  • Worked on the issue Recursive SNARK aggregation primitives: Prepare prover input #3138
  • Worked on the issue Recursive SNARK aggregation primitives: Verify SNARK proof #3140
  • Worked on the issue Adapt certificate chain to support recursive SNARK #3147

Protocol maintenance

  • Completed the issue Enforcement of DMQ message id format #3251
  • Completed the issue fails_with_empty_signatures flakes in CI due to concurrent SRS temp file collision #3292
  • Completed the issue Remove Mithril nodes support in mithril-devnet #3295
  • Completed the issue Update DMQ node to 0.6.0.0 #3302
  • Completed the issue Formatted list of de-registered signers in explorer misses aliases #3310
  • Worked on the issue Ship Mithril signer node binary in Cardano node bundle in GitHub #3011
  • Worked on the issue Optimize e2e tests for SNARK #3151
  • Worked on the issue Update ledger state snapshot selection in artifacts #3298
  • Worked on the issue Release 2624 distribution #3271
  • Worked on the issue Upgrade to Pallas 1.1.0 #3297

Hydra Team Update

· 3 min read
Noon van der Silk
Software Engineering Lead

High-level Summary

Big news is that we have merged the partial fanout work!. After many months of design and review, heads with large UTxO sets can now be fanned out in multiple steps, each verified on-chain via a BLS accumulator membership proof, with the chunk size determined dynamically by a binary search so each step packs in as many outputs as will fit. This removes the long-standing limit on UTxOs per head. Alongside that, the hydra-tui got a significant refactor, the test suite moved to tasty, and a handful of correctness fixes landed around cross-head event contamination and recovered deposits leaking back into L2.

What did the team achieve?

  • Merged partial fanout, including the on-chain validators, BLS accumulator membership proofs, and the PartialFanoutTx / FinalPartialFanoutTx transactions #2324
  • Made the fanout chunk size fully dynamic via binary search over fitting tx size, replacing the hardcoded threshold #2617
  • Significantly revised hydra-tui: pending-deposit recovery from Open and Closed/Final, dark/light theme toggle persisted to disk, event-history filter, tab navigation, and a per-tab rendering refactor #2590
  • Switched the test suite from hspec to tasty #2620
  • Validated headId in the aggregate function to prevent replayed events from a previous head corrupting the state of a newly opened one #2618
  • Fixed a bug where a recovered incremental-commit deposit could reappear in the L2 UTxO after sideloading a snapshot, making the same UTxO spendable on both L1 and L2 #2630, #2629
  • Made etcd writes more resilient to resolve a pumba-style network-partition test failure #2627
  • Bumped rust-accumulator to fix musl build issues #2622
  • Disabled nix store optimisation on CI to work around a macOS dyld issue #2626
  • Sped up repeated linting and normal building, and added a small CLAUDE.md #2625
  • Updated docs and changelog to reflect the partial fanout implementation, and documented the remaining large-UTxO limitation #2631

What's next?

  • Get a new release out!
  • Add a test that probes how large a UTxO set we can actually (partially) fan out #2616
  • Continue the still-open node-observing-unrelated-Heads deposit issue #2606
  • Land the user-friendly hydra-node configuration file #2581
  • Accept PaymentExtendedKey (HD wallet keys) #2583

Mithril Team Update

· 3 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team completed caching of circuit keys for the SNARK circuit in the STM library and removed the helpers module for the SNARK recursive circuit. They continued work on the type consistency and naming alignment refactoring of the SNARK recursive circuit, the prover input of the recursive SNARK aggregation primitives, and the implementation of the SNARK-friendly genesis certificate.

The team also completed enhancements to support the genesis verification key in the explorer. They continued work on shipping the Mithril signer node binary in the Cardano node bundle, enforcing the DMQ message ID format, prototyping the Cardano node ledger state certification, and removing Mithril node support in mithril-devnet.

Finally, the team worked on optimizing the end-to-end tests for SNARK and fixing flakiness in the CI.

Low level overview

Features

  • Completed the issue Circuit keys caching for SNARK circuit in STM #3043
  • Completed the issue Refactor SNARK recursive circuit - Remove helpers module #3132
  • Worked on the issue Refactor SNARK recursive circuit - Type consistency #3128
  • Worked on the issue Refactor SNARK recursive circuit - Naming alignment #3130
  • Worked on the issue Recursive SNARK aggregation primitives: Prepare prover input #3138
  • Worked on the issue Implement SNARK-friendly genesis certificate #3145
  • Worked on the issue Prototype Cardano node ledger state certification #3269

Protocol maintenance

  • Completed the issue Enhance support of genesis verification key in explorer #3270
  • Worked on the issue Ship Mithril signer node binary in Cardano node bundle in GitHub #3011
  • Worked on the issue Optimize e2e tests for SNARK #3151
  • Worked on the issue Enforcement of DMQ message id format #3251
  • Worked on the issue fails_with_empty_signatures flakes in CI due to concurrent SRS temp file collision #3292
  • Worked on the issue Remove Mithril nodes support in mithril-devnet #3295
  • Worked on the issue Update DMQ node to 0.5.0.0 #3302

Consensus Team Update

· 3 min read
Damian Nadales
Consensus Team Lead

High level summary

The Leios monthly demo and review took place on 2026-05-27. Several of the items below were presented or discussed during that meeting.

  • Leios prototype development (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Started migrating the prototype to the Dijkstra era of the Cardano node, which enables Stake Pool Operator key registration and brings the prototype in line with the audited BLS cryptography.
    • Working on EB application and mempool partitioning (#2047).
    • Working on wiring the mempool transaction-load events into the throughput dashboard (ouroboros-leios#929).
  • Leios fetch and network design (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Continued investigating multi-peer Endorser Block fetch strategies. The current proposal is a single large request to a high-latency peer (for example Europe to Australia), capped at roughly 30 MB in flight per EB, with neighbourhood diffusion taking over once the data arrives. Simulation results show this approach meets the 7 to 14 second budget. Slow-loris impact is still being assessed.
    • Refined the safety argument for linear Leios and flagged that the Rust simulator currently assumes peer reliability, which is not a safe assumption on mainnet.
    • Proposed EB precursors (proto-EBs) as a way to raise confidence without raising the voting time threshold.
    • Concluded that erasure coding is unlikely to pay off at this stage, given the estimated 60 ms latency cost and added complexity.
    • Working on the Mininet LeiosFetch logic test bed and the linear Leios tuner (ouroboros-leios#880, ouroboros-leios#891).
    • Committee selection scheme change was merged into the Leios SIP, cutting the certificate size from around 8 KB to 200 B.
  • Mempool design for Leios (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Started a discussion on mempool goals for the Leios protocol. Revalidating entire transaction sequences against multiple ledger states is wasteful, and certifying an Endorser Block produces a new ledger state that can render the basic mempool state irrelevant. Designs under consideration include two distinct mempools and a Directed Acyclic Graph for the ledger.
  • LSM-trees and UTxO-HD (Treasury Funding Initiative 10: LSM including UTXO-HD):
    • Updated the LSM-trees package dependencies (#2021).
    • Working on the UTxO-HD redesign (#2049).
    • Working on adding LSM snapshot export when an export path is configured (#2053).
  • Ledger-HD (Treasury Funding Initiative 11: Ledger-HD):
    • Working on an example PR that moves InstantStake onto the redesigned UTxO-HD, demonstrating the pattern that the remaining Ledger-HD datasets will follow (#2055).
  • Maintenance and tooling (Treasury Funding Initiative 17: Maintenance and Support):
    • Working on predictable ledger state snapshots in cardano-node (cardano-node#6526).
    • Working on enabling search on the consensus documentation site (#2059).

Performance & Tracing Update

· 5 min read
Michael Karg
Performance and Tracing Team Lead

High level summary

  • Benchmarking: Release benchmarks for 11.0.1; Feature benchmarks for: TxSubmissionLogicV2; Compiler version.
  • Development: Removal of legacy tracing completed - not yet merged.
  • Infrastructure: Genesis caching and post-processing completed - not yet merged.
  • Tracing: cardano-tracer HTTP API for metrics timeseries queries and Grafana datasource - not yet merged.
  • Leios: Leios/Mempool benchmarks using tx-centrifuge.
  • Node Diversity: Formal trace schema definition merged; Conformance framework to be presented at Porto workshop.

Low level overview

Benchmarking

We've performed, analysed and published relase benchmarks for Node version 11.0.1 - the release shows no performance regressions compared to 10.7.1. These benchmarks ran under Protocol Version 11, and were required to ensure there's no performance risk in using this version.

Furthermore, we've run feature benchmarks for a new incarnation of v2 of the tx submission logic. The new logic is an optimization and aims, among other things, to reduce redundancy in tx diffusion. While the feature is experimental, the benchmarks provided valuable measurements and data for the network team to move it forward.

Additionally, we've re-run benchmarks using the GHC9.12 compiler version on the new 11.0.1 baseline; since 10.6.2, there have been many changes in Ledger which impact generated code and compiler optimizations. While there's no fundamental performance blocker to use this more recent compiler on our code base, there are still a few unknowns. The data is currently still under review and discussion.

Development

With the upcoming 11.1 release, the legacy tracing system 'iohk-monitoring-framework' will finally be removed from the Node. The change extensive, as it involves large differences in project dependencies, in code, in configuration and in test suites. Old and new tracing system have been part of the Node build side-by-side for roughly two years now, with the new tracing system gaining wider adoption the last half year. Removing the need to stay backwards compatible with the legacy system within the same build unblocks several planned features for the new system, as well as finally moving it out into its own self-contained Hermod Tracing System project repository.

While the implemention is complete, the PR cardano-node PR#6580 is currently still in draft state, awaiting full verification and testing.

Infrastructure

The modularization of our automation's genesis cache is completed. In addition to quickly stitching together a custom genesis with a huge amount of injected staking data, it allows for all protocol-relevant fields of genesis to be freshly generated by cardano-cli - and not taken from the cache. This means, the post-processing has now been reduced to a minimum; that improves confidence in the benchmarking profiles insofar as it eliminates testing of workbench changes still being correctly patched onto potentially very long-lived cache entries on a variety of hosts.

Moreover, this change includes a proper profile overlay for Protocol Version 11, which includes changes to Plutus cost models and execution budgets that have already been submitted as a gov action on Mainnet. The (quite extensive) PR is currently in draft state and under testing: cardano-node PR#6544.

Tracing

The new version of cardano-tracer will come with an (opt-in via config) HTTP REST API to query metrics timeseries directly. As cardano-tracer can now store metrics of all connected Nodes, it's able to evaulate PromQL-like queries directly. This can be used as an alternative to having Prometheus scrape all of those processes. With the new release, we made the (previously experimental) API as much aligned to what users are accustomed to from Prometheus, so that it has reached reasonable stability.

Moreover, we built - from scratch - a Grafana datasource using that API. This datasource contains a dashboard to replace the deprecated 'RTView' component of cardano-tracer, and is intended to serve as a reference for the community to define their own dashboards and queries according to their monitoring needs.

This PR, too, is fairly extensive, and also contains several improvements and fixes of the underlying cardano-timeseries-io package: cardano-node PR#6562, currently in testing phase.

Leios

We've created, and performed, full cluster benchmarks for Leios - using our new high-pressure submission tool tx-centrifuge. The point of interest of these benchmarks was observing Mempool behaviour, under various levels of fragmentation, and various configurations as to its capacity. These benchmarks are meant close a gap to the Leios simulations providing evidence, by measuring concrete timings of a concrete Mempool implementation. The benchmarks have shown that a standard Mempool tuned to Praos will likely throttle maximum throughput for Leios. With this benchmark at hand, and Mempool identified as a potential bottleneck, the necessary adjustments or optimizations can always be confirmed and backed up by evidence.

Node Diversity

The comprehensive formal schema definition of the Node's existing trace messages has been merged (cardano-node PR#6527). This encodes the syntax and semantics of all the observable events that the Haskell Node implementation provides. Thus, it can serve as a reference to what diverse clients may implement - to gain comparability in protocol conformance, network performance, and the reuse of existing tooling relying on those observables.

That being said, the cardano-recon-framework is one such example. We've continuosly improved our Linear Temporal Logic based trace verifier for system behaviour; we've set several interesting properties that can be checked continuously from Node logs. One of our team will attend the Node Diversity workshop in Porto beginning of June, and contribute a presentation and a demo of this framework.