Skip to main content

Consensus Team Update

· 2 min read
Damian Nadales
Consensus Team Lead

High level summary

  • Leios prototype development (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Completed the migration of endorser-block announcements and certification flags from the Ledger Block into the Praos Header, aligning the prototype with the original Leios design (#1978, ouroboros-leios#874, cardano-node#6537).
    • Fixed several bugs in the Leios prototype (#2017).
    • Helped the SRE team stand up a Leios testnet that is now running the prototype (ouroboros-leios#879).
    • Working on the voting prototype (#1963).
    • Continuing to investigate and fix in-memory LeiosDb performance issues observed during the March demo (ouroboros-leios#844, cardano-node#6554).
    • Working on applying Certified Endorser Blocks to the Mempool (ouroboros-leios#838).
  • Ledger-HD (Treasury Funding Initiative 11: Ledger-HD):
    • Refactored consensus type variables so that ledger tables, transaction inputs, and transaction outputs are indexed by the block type rather than the ledger-state shape, collapsing duplicate type-class instances and simplifying the codebase ahead of Ledger-HD integration (#2016, #2019).
  • Releases and integration (Treasury Funding Initiative 17: Maintenance and Support):
  • Documentation (Treasury Funding Initiative 17: Maintenance and Support):
    • Added an explanation page covering the Ticking mechanism used by the consensus layer (#2011).

Ledger Team Update

· 4 min read
Alexey Kuleshevich
Ledger Team Software Engineer

High level summary

Ledger team has made significant progress on Ledger rules for Nested Transactions as well as translation of newer features to Plutus context. We've also introduced a major change to how Plutus context is prepared for each transaction entering a mempool, which when fully integrated will result in significant performance improvements. On the efforts of expanding Ledger we have transferred all of the ledger state queries from Consensus component to the Ledger component, as well as introduced an initial stage of streaming injection functionality that we'll be needed for testing and benchmarking, especially for on disk storage where huge amount of data needs to be injected into ledger state without any impact on the operating memory.

Aside from features we have fixed a few more cddl bugs that we discovered with our new AntiGen and cuddle tools. Improved examples for golden tests and golden tests facilities.

Low level summary

Features

  • PR-5692 - Adjust Dijkstra UTXOW rule to subtransactions
  • PR-5684 - Remove unused FromCBOR/ToCBOR instances
  • PR-5572 - Add streaming interface to era transition for initial funds injection
  • PR-5737 - Fix treasury donations handling for SubTransactions
  • PR-5755 - Clean up CddlSpec, fix Datum and AccountBalanceIntervals generators
  • PR-5736 - Fix DecCBOR instances to reject ProtVer values exceeding the era maximum
  • PR-5636 - Memoize Plutus related parts of transaction validation
  • PR-5764 - Bring all remaining queries from consensus over to ledger
  • PR-5767 - [Leios Prototype] Backwards compat fix
  • PR-5757 - Remove allowLeftOver flag from binaryGetDecoder and simplify IP address decoders
  • PR-5754 - Fail PlutusV1-V3 translation for direct deposits and balance intervals
  • PR-5770 - Simplify Dijkstra constraints
  • PR-5751 - UTXO with subtransactions
  • PR-5747 - Add gov/proposals/roots/v0 namespace
  • PR-5742 - Add entities/stake_pools/v0 namespace

Testing

  • PR-5749 - Fix and re-enable BbodysSec
  • PR-5687 - Convert pool related CHAINExamples to ImpTests
  • PR-5732 - Expand transaction content in examples in Test.Cardano.Ledger.[era].Examples
  • PR-5753 - Use hspec-golden for Alonzo golden tests
  • PR-5760 - Golden testing facilities for JSON and CBOR
  • PR-5731 - Add negative tests for Metadatum int decoding range
  • PR-5765 - Add a custom generator to cost_models, create Huddle.Gen module

Infrastructure and releasing

  • PR-5750 - Run tests for ghc 9.6.7 only
  • PR-5756 - Bump actions/upload-pages-artifact from 4 to 5 in the actions group
  • PR-5766 - Drop x86_64-darwin from Hydra builds
  • PR-5768 - Bump slackapi/slack-github-action from 3.0.1 to 3.0.2 in the actions group
  • PR-5594 - Test failure summaries in CI
  • PR-5774 - Handle single failing suite case in CI test failure summaries

Mithril Team Update

· 3 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team released the 2617.0 distribution. This version bumps the Mithril signer to 1.0.0, marking it as production-ready on the release-mainnet network, adds support for Cardano node v.10.7.1, and includes statically built binaries as well as various bug fixes and improvements.

The team also completed the golden tests for the recursive SNARK circuit prototype and enhanced witness preparation for the non-recursive prover in the STM library. They continued work on implementing a SNARK-friendly protocol message, the data encoding and state-transition tests for the recursive SNARK circuit prototype, and detecting SNARK circuit modifications in the STM library. Additionally, they completed the extraction of the Merkle tree modules into a new crate.

Finally, the team implemented support for multiple tiers of tests in CI, refactored the crates publication, and investigated test flakiness.

Low level overview

Features

  • Completed the issue Add golden tests for recursive SNARK circuit prototype #3125
  • Completed the issue Enhance preparation of witness for the non-recursive prover in STM #3178
  • Completed the issue Extract Merkle tree modules in new crate #2897
  • Worked on the issue Implement SNARK-friendly protocol message #3146
  • Worked on the issue Add data encoding and state transition tests for recursive SNARK circuit prototype #3191
  • Worked on the issue Detect SNARK circuit modifications in STM #3216

Protocol maintenance

  • Released the new distribution 2617.0
  • Published a dev blog post Distribution 2617 is now available
  • Published a dev blog post Mithril signer 1.0.0 stable release
  • Published a dev blog post Statically built Mithril binaries
  • Completed the issue Upgrade to Cardano 10.7 #2894
  • Completed the issue Release 2617 distribution #2967
  • Completed the issue SNARK aggregator certification stopped on dev-follower-preview #3183
  • Completed the issue End to end tests are flaky #3205
  • Completed the issue Support multiple tiers for tests in CI #3206
  • Completed the issue Signer version is not recorded in the aggregator monitoring store #3227
  • Completed the issue Refactor the crates publication #3230
  • Worked on the issue Accelerate SNARK circuit tests in CI #3162
  • Worked on the issue Nightly tests are flaky #3210
  • Worked on the issue Test the ledger snapshot conversion in the e2e test #3213
  • Worked on the issue Circuit golden tests are flaky in STM #3231

Performance & Tracing Update

· 5 min read
Michael Karg
Performance and Tracing Team Lead

High level summary

  • Benchmarking: Release benchmarks for 10.7.1; LSM-trees benchmarks; Plutus interpreter benchmarks.
  • Development: tx-centrifuge - high-pressure tx submission service moved to testing.
  • Infrastructure: Optimizing benchmark genesis caching and post-processing to be highly modular.
  • Tracing: cardano-timeseries-io now integrated with cardano-tracer, offering HTTP query API.
  • Leios: Tx validation benchmarks with beacon; Arithmetic extension of cardano-recon-framework.
  • Node Diversity: Formal trace schema definition ready.

Low level overview

Benchmarking

The release benchmarks for 10.7.1 have been an iterative process. Various changes on 10.7 caused several performance regressions, which needed to be isolated from each other, located individually and addressed. This led to running and analyzing several full benchmarks, to confirm each change individually as well. Finally, the 10.7.1 release turned out to be a small, but consistent improvement as far as block production, diffusion and adoption metrics are concerned, and a huge improvement in CPU time and usage patterns.

With a healthy baseline in place, we were able to run benchmarks on the LSM-trees on-disk backing store. Initial performance results show the on-disk backend to be on par with the in-memory one given sufficient RAM. This is the optimal outcome, as using LSM-trees instead of in-memory without changing the underlying hardware does not incur a performance penalty. We're currently running benchmarks where the underlying hardware is indeed changed, and where multiple constraints on the Haskell heap and the OS's headroom for page caching force disk I/O under low RAM conditions. We'll then assess the effect on system and network metrics.

Last but not least, we confirmed a change to the Plutus interpreter - which impacts its performance characteristics - to be healthy and ready for integration.

Development

The new tx-centrifuge project has reached the MVP stage. It's built for massive tx submission pressure and seamless scaling, so it will be able to saturate a network running Leios over extended periods of time. To confirm all its intended properties, and iron out bumps in the pipeline, we're currently running tests on the benchmarking cluster - albeit on Praos nodes, as for those, we exactly know the expected outcome. For details on tx-centrifuge architecture and design, please see cardano-node PR#6494.

Infrastructure

Our benchmarks require very large genesis files, which are costly (hours, in the worst case) to create for each and every run. This is why our automation uses caching. We're currently reworking the caching mechanism so a genesis can be highly modular. This will lead to much more flexibility in applying a specific benchmarking profile to an existing cache entry, and widen the range of parameters a profile can modify without leading to a genesis cache miss.

Tracing

Our new Haskell library cardano-timeseries-io, which builds and stores timeseries of metrics from multiple sources, has been integrated with the cardano-tracer service. This now enables arbitrary queries over those timeseries to be submitted via an HTTP API. While this does not replace existing Prometheus endpoints, cardano-tracer can now answer PromQL-like queries directly without the need to run a separate scraper (cardano-node PR#6473).

This is currently an experimental feature; the API is not yet stable. We're working on aligning the the request and response schema closely with the Prometheus HTTP API, such that a Grafana integration, or any potential community-bulit frontend, can reuse much of the existing glue code out there.

Leios

We've created, and performed, transaction validation benchmarks for the current Cardano Ledger implementation. The benchmarks use beacon as a framework, which means looking at ledger operations only. Of those, anything besides block application using different validation strategies has been factored out. As input data, several synthetic workloads are used varying in tx content (script execution, or just moving ADA), block / tx batch size, or number of tx inputs. In the context of Leios, this allows for confirming protocol assumptions, or determining (and validating) potentially necessary optimizations in the ledger. For a full report and discussion, please see Leios issue#553. Next steps will be scaling different workload properties systematically, as well as forcing tx inputs to be read back from disk.

The cardano-recon-framework, a Linear Temporal Logic based verifier for observed system behaviour, now has better support for existential quantification in its propositions, as well as added support for Presburger arithmetic. This arithmetic extension allows for a wider range of properties to be evaluated, which are of particular interest to Leios. Those features, along with some quality-of-life improvements, are already released on CHaP; relevant PRs are cardano-node PR#6531 and cardano-node PR#6546. Current work is narrowing down the context in the framework's output; in case of a property not being satisfied, this will be highly specific as to which piece of evidence is the root cause for it.

Node Diversity

The comprehensive formal schema definition of the Node's existing trace messages is being merged (cardano-node PR#6527). Definitions are extracted directly from the actual implementation into a fully validated JSON schema. The extracted data is automatically verified, and can be compared to past data, to capture any changes. The schema can be amended manually with comments or refinement types, and these user-provided annotations will be merged with the extracted data - with a notification if any conflict is discovered. Future work will see hardened verification, as well as rendering a human-readable document, detailing the specification exhaustively.

SRE Team Update

· 4 min read
John Lotoski
Service Reliability Engineer

High level summary

The SRE team continues work on Cardano environment improvements and general maintenance.

Some notable recent changes, updates or improvements include:

  • Cardano-parts, cardano-playground and cardano-mainnet were updated with cardano-node 10.6.4, cardano-db-sync release 13.6.0.8, pre-release 13.7.0.2, and nix was patched for security vulnerabilities GHSA-g3g9-5vj6-r3gj / CVE-2026-39860.

  • The ZFS AMI module was enhanced with a configurable percentage-based ARC cache sizing option derived from the node RAM.

  • Buildkite infrastructure was updated to accommodate Daedalus Linux CI support.

  • A van Rossem PV11 cost model governance vote was cast on preview.

Repository Work -- Merged

Cardano-mainnet

cardano-mainnet PR#43:

  • Bumps cardano-node to 10.6.3, and then 10.6.4 with corresponding deployments
  • Bumps cardano-db-sync to 13.6.0.8 and deploys to dbsyncs
  • Adjusts alerts for the remaining block producer to reflect current stake levels
  • Migrates resources out of me-central-1 due to stability issues and into ap-southeast-6
  • Destroys retired block producer machines and secrets
  • Updates webserver and DNS resources to properly serve IOGP metadata for remaining pools that are unused and unfunded but not retired
  • Adds CPU/memory usage panels and totals to cardano-node.json and cardano-node-new-tracing.json Grafana dashboards
  • See the PR description for additional details

Cardano-parts

cardano-parts PR#81:

  • Bumps cardano-node release to 10.6.4, cardano-db-sync release to 13.6.0.8, and cardano-db-sync pre-release to 13.7.0.2
  • Bumps nix to address security vulnerabilities GHSA-g3g9-5vj6-r3gj and CVE-2026-39860
  • Extends the ZFS AMI ami.nix nixosModule with a configurable boot.zfs.zfsArcPct option for percentage-based ARC cache sizing
  • Updates the AWS EC2 spec to include new machine types missing in the existing spec
  • Fixes a race condition in profile-aws-ec2-ephemeral.nix where chown could fail on a disappeared ephemeral file
  • Fixes a tcpTxOpt colmena module breaking change introduced in nixpkgs 25.11
  • Adds CPU/memory usage panels and totals to cardano-node.json and cardano-node-new-tracing.json Grafana dashboards
  • Adds non-NixOS machine handling to consistency-checking and update-ips recipes
  • See the PR description for additional details

Cardano-playground

cardano-playground PR#56:

  • Bumps cardano-node to 10.6.4, cardano-db-sync to 13.6.0.8, and cardano-db-sync pre-release to 13.7.0.2 with deployments to release environments
  • Extends ami.nix with configurable boot.zfs.zfsArcPct option for percentage-based ZFS ARC cache sizing
  • Fixes buildkite NixOS container startup race condition with sops and repurposes a buildkite machine for a Daedalus queue
  • Adds CPU/memory usage panels and totals to Grafana dashboards
  • Updates cardano-book for 10.6.3 and 10.6.4 node releases
  • Casts a governance vote on preview for the van Rossem PV11 cost model update with signed rationale and vote transaction
  • See the PR description for additional details

Devx-ci

devx-ci PR#154:

  • This should bring hydra-tools back up to a sufficiently recent release (hydra-github-bridge to 0.2.1.0), which will make it possible to layer on other fixes on top of it (for example, recovering PostgreSQL hung connections and not crashing while reading build logs).

devx-ci PR#155:

  • Adds 3 types of Oakhost Darwin machines, each with 3 available hydra build slots initially, pending further tuning
  • These machines will likely be short-lived until a new hardware offering from Oakhost is available in a few months
  • Adjusts number of hydra eval worker threads to 3 as 4 tends to cause semi-regular OOMs w/ 4 concurrent large evals