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 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).

Hydra Team Update

· 4 min read
Noon van der Silk
Software Engineering Lead

High-level Summary

The user-friendly hydra-node configuration file has been merged, letting operators run a head from a single YAML file and diff configs against peers at a glance. The rest of the period was mostly hardening: deposit and recovery chain observations are now scoped to the head that produced them (closing a long-standing cross-head contamination issue), the Blockfrost backend retries on HTTP errors instead of crashing and no longer chokes on some inline datums, and the event store's rotation logic got two fixes - a race between VACUUM and streaming client history, and a deadlock in the network layer's outbound message queue that could silently halt broadcasting.

What did the team achieve?

  • Merged the user-friendly hydra-node configuration file: nodes can now be configured via YAML, making it easy to spot differences between peers' setups #2581, #2296
  • Scoped deposit and recover chain observations to the current head: Open/Closed states only record OnDepositTx events for their own headId and Idle silently drops the rest, while recovery of a deposit from a previous head keeps working in every state, including mid-fanout and while a new head is running #2743, #2606
  • Made the Blockfrost chain backend more resilient: HTTP errors are now retried instead of crashing the node #2729, #2477, and a follow-up fixed inline datum decoding that could throw on some UTxOs #2754, #2751
  • Fixed a race between the event log's VACUUM-based rotation and the API server streaming client history over the same SQLite connection, which could take a node down on reconnect #2755
  • Fixed a deadlock in the network layer's PersistentQueue: a false Eq result in popPersistentQueue could leave the broadcast queue stuck at capacity with no log output; it now pops unconditionally by index and emits PersistentQueueFull / PersistentQueueLoadFailed for visibility, and a failed file delete no longer crashes the network component #2742
  • Event log rotation now archives the outgoing database to a numbered old-state/hydra-<logId>.db file instead of deleting it, restoring the old file-based persistence's pre-rotation backup behaviour #2748, #2747
  • Added a fuel verification key option to hydra-tui so the funds tab can show both the head's ada and a separate fuel UTxO #2731
  • Moved the spec back into the hydra repo, dropping the separate flake input #2733

What's next?

  • Merge some in-progress performance work: computing accumulator commitments via the rust-accumulator FFI instead of off-chain PlutusTx, batching etcd broadcasts onto shared connections, and raising the per-snapshot transaction cap - early results show sustained throughput roughly doubling on a 1k-UTxO head #2752
  • Make hydra-chain-observer version-aware by detecting script hashes, so a single process can watch heads from any historical Hydra version instead of running one per version #2740
  • Enforce --deposit-period consistency across head nodes by embedding it in the on-chain OpenDatum #2734
  • Accept PaymentExtendedKey (HD wallet keys) #2583
  • Work on the updated version of the spec (typst+Agda)

Mithril Team Update

· 2 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team refactored the unsafe SNARK setup, prepared the prover input for the recursive SNARK aggregation primitives, decoupled the Midnight library in the SNARK recursive circuit, and tested that the degree of the SNARK circuits remains unchanged. They continued improving the modularity of the SNARK recursive circuit using gadgets.

The team also worked on enhancing the aggregator state machine to support the Blocked state and on capturing end-to-end execution logs in artifacts.

Finally, they continued work on shipping the Mithril signer node binary in the Cardano node bundle, releasing the 2628 distribution, upgrading the Cardano node to 11.1, updating the DMQ node to 0.7.0.0, and upgrading the midnight-zk library to 2.3.3.

Low level overview

Features

  • Completed the issue Refactor unsafe SNARK setup #3300
  • Completed the issue Recursive SNARK aggregation primitives: Refactor preparation of prover input #3319
  • Completed the issue Refactor SNARK recursive circuit - Midnight library decoupling #3129
  • Completed the issue Test that SNARK circuits degree are unchanged #3330
  • Worked on the issue Refactor SNARK recursive circuit - Modularity enhancement with gadgets #3131

Protocol maintenance

  • 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 Enhance aggregator state machine to support Blocked state #3333
  • 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 Capture e2e execution logs in artifacts #3362
  • Worked on the issue Upgrade midnight-zk to 2.3.3 #3375

Plutus Core Team Update

· 2 min read
Ziyang Liu
Software Engineering Lead

High level summary

In the past weeks, the Plutus team has continued to make improvements across performance, tooling, and assurance.

Performance and compiler improvements. We improved several parts of the Plutus optimization pipeline and ledger API implementation. This includes making common Value operations more efficient, adding a new compiler optimization for certain recursive functions, and fixing an optimization pass so that it preserves program behavior correctly.

Better benchmarking and tooling. We added lightweight benchmarking support to the uplc executable, making it easier to sanity-check execution-time measurements for UPLC scripts and compare results against existing benchmark infrastructure.

Specs and formal methods. We continued strengthening the foundations of Plutus by updating the UPLC specification for the built-in value type and related functions, and by improving the metatheory and certification infrastructure used to reason about compiler transformations. These changes make the formal-assurance workflow easier to maintain, debug, and scale to larger programs.

Key Pull Requests Merged