Skip to main content

· 2 min read
Ziyang Liu

High level summary

Over the past two weeks, the Plutus Core team made a range of improvements across Plutus, Plinth, and supporting documentation.

On the Plutus side, we completed conformance tests for the modular exponentiation primitive and added builtin arrays to the Plutus Core specification. We also enhanced error reporting in the CEK machine, making evaluation failures easier to diagnose.

On the Plinth side, we added support for integer equality using (==) from base, which allows for more idiomatic pattern matching on integer literals, such as f 5 = ....

We also made several documentation updates. The Haddock documentation for builtin functions was expanded in PlutusTx.Builtins.Internal. We contributed a new landing page for Plutus to the Cardano Blueprint site to help external teams get started. Lastly, we updated the Builtins Overview to reflect recent changes.

Low level summary

Key Pull Requests Merged

Issues and Pull Requests In Progress

· 4 min read
Michael Karg

High level summary

  • Benchmarking: Feature benchmarks for ledger metrics tracer and InboundGovernor optimizations.
  • Development: Ledger metrics merged; 2 hotfixes for old tracing.
  • Infrastructure: Migration plan for on-disk benchmarks (LMDB, LSM-tree); initial Leios impact analysis.
  • New Tracing: Tracer service now independent of Node; new feature enabling forwarding over TCP.

Low level overview

Benchmarking

We've completed two distinct feature benchmarks: The new periodic ledger metrics tracer and InboundGovernor optimizations on the network layer. Both features have shown a positive performance impact; the former improves CPU usage and block production metrics, the latter slightly improves diffusion metrics.

Development

Having finalized and benchmarked the periodic ledger metrics tracer feature, it was merged to master and will be part of the upcoming 10.5 release. The feature decorrelates obtaining several metrics from the beginning of the forging loop. This avoids competition for synchronization primitives during the "hot phase" of block production. Furthermore, by decoupling those metrics from a forging tracer, we enable exposing those metrics from a relay as well. cardano-node PR#6180

Additionally, we've been vital in creating two hotfixes for the old tracing system:

  1. The old tracing system metric utxoSize was missing due to using the pre-UTxO-HD variant of querying the set size. The fix ports the correct solution from the new tracing system to the old one: cardano-node PR#6217
  2. On the upcoming Node 10.5 integration branch only, the old tracing system could leak file descriptors. Again, the fix was ported from the new tracing system to the old one - kudos to Karl Knutsson: iohk-monitoring PR#654

Infrastructure

We've discussed and set up a migration plan for our benchmarking cluster hardware. For fair and representative performance measurements of on-disk backing stores of UTxO-HD, we require direct SSD storage on the machine instance in the cloud; running disk I/O through additional layers to and from some shared SSD device, even in the same data center, would introduce significant confounding factors. The plan includes invalidating as little of our existing performance baselines as possible when migrating to the new hardware. We're looking forward to benchmark the current on-disk backend (LMDB) for block producers - as well as the futuere LSM-tree based one.

We've also discussed an initial Leios impact analysis. To fairly and reliably benchmark a future Leios implementation, our infrastructure and tooling will need to be extended significantly. Several metrics won't have the same weight they currently carry for Praos, due to Leios' later finality; other metrics will need to be introduced for different new Leios block types, adding appropriate observability to the implementation. Finally, creating and submitting a saturation workload for a system which is built for extremely high throughput will be a challenge in itself.

New Tracing

We've been working on a medium-sized refactoring that eliminates the cardano-node dependency from cardano-tracer. This means, the tracer service can now be built independently of the Node; all shared data types have been moved to some more basic packages of the new tracing system. This also enables us to issue releases of the tracer service independently of the Node's release cycle. cardano-node PR#6125

Last not least, we've kicked off development for a new feature that's been motivated by community feedback: Forwarding observables (trace messages, metrics) over TCP. Forwarding to different hosts currently assumes a UNIX domain socket that connects the Node and the tracer service through an SSH tunnel. This is a portable, versatile, and probably one of the most secure ways to transmit sensitive data. However, in an environment where an operator controls all network port mapping and firewalls, one can argue that forwarding over TCP/IP is equally viable, as it can be properly isolated - and it is much more convenient to set up and configure. The feature aims, when it's completed, to offer both forwarding routes, and let the end user decide.

· 2 min read
John Lotoski

High level summary

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

Some notable recent changes, updates or improvements include:

  • Cardano-node and cardano-cli release versions are now set to 10.4.1 and 10.8.0.0, respectively, in cardano-parts release v2025-05-22.

  • The upcoming node 10.5 [pre-]release is being configured to use genesis mode by default on preview and preprod environments.

  • SRE is collaborating with IT Sec team to further harden our infra and clusters.

Repository Work -- Merged

Cardano-parts

  • Sets node release to 10.4.1, cardano-cli release to 10.8.0.0 and mithril to v2517.1. Adds mithril ancillary key support for signed volatile and ledger state. Switches to a blockPerf fork which can be used without publishing metrics to CF, ex: for testnet usage. Includes additional misc fixes and improvements described in the PR/release header. cardano-parts-release-v2025-05-22

Cardano-mainnet

  • Sets node release to 10.4.1, cardano-cli release to 10.8.0.0 and mithril release v2517.1. Includes various improvements with cardano-parts release v2025-05-22. Deploys all machines to 10.4.1. cardano-mainnet-pr-34

Cardano-node

  • Bumps iohkNix for 10.5 network param changes, preview/preprod default GenesisMode consensus config, per env useLedgerAfter and peer-snapshot updates. Updates CI for the iohkNix config changes. In the cardano-node nixos service, sets preview and preprod environments to use peer-snapshots. Enables genesis mode to work OOTB for preview/preprod on: docker images, binary artifacts, nixos built machines. cardano-node-pr-6225

Cardano-playground

  • Sets node release to 10.4.1, cardano-cli release to 10.8.0.0 and mithril release v2517.1. Deploys blockPerf to all testnet machines without publishing metrics to CF. Includes various improvements with cardano-parts release v2025-05-22. Deploys all machines to 10.4.1. cardano-playground-pr-46

Iohk-nix

  • Adds mithril network ancillary verification keys: the ancillary verification keys are a breaking change required to pull ancillary mithril state (ie: ledger and volatile state) in addition to immutable state. In earlier mithril releases, the ancillary state was bundled together with the immutable state. iohk-nix-pr-598

  • Node 10.5 updates: set GenesisMode for ConsensusMode as default on preview and preprod; tunes TargetNumberOfEstablishedPeers, and SyncTargetNumberOfEstablishedBigLedgerPeers per network team request; updates peer-snapshots per environment; updates useLedgerAfterSlot per environment. iohk-nix-pr-599

Repository Work In Progress -- PRs and Branches

· 2 min read
Alexey Kuleshevich

High level summary

Last period we were finally able to drop support for older GHC versions. We also made some cleanup that was necessary as preparation work for further refactoring that is underway, which is necessary for both Leios and Nested Transactions. Refactoring definitions of protocol parameters is quite an accomplishment, since it drastically reduces complexity and eliminates unnecessary duplication for all eras. This refactoring not only reduced amount of code around protocol parameters for previous eras, but will also drastically simplify the process of adding new protocol parameters in the future eras.

Low level summary

Features

  • PR-5028 - Deprecate balance in favor of a better named sumUTxO
  • PR-5034 - Rename ppLens and ppuLens to make them more specific
  • PR-5027 - Refactor PParams CBOR, JSON and Plutus Data serialization for reuse across eras and serializers
  • PR-5007 - Remove ConwayNewEpochPredFailure
  • PR-5011 - Ensure BabbageNonDisjointRefInputs is only checked for PlutusV3 scripts
  • PR-5057 - Change Byron EBB stakeholderid to zero-or-more
  • PR-5066 - Fix occurrence of items in maps in byron.cddl
  • PR-5053 - Fix COMPLETE pragma for NativeScript ShelleyEra

Testing

  • PR-5016 - Bump formal-ledger-specifications
  • PR-5012 - constrained-generators: Split abstract syntax out of Base.hs
  • PR-5037 - Some hacking on improving error messages for lists
  • PR-5049 - Golden tests for PParamsUpdate JSON serialization

Infrastructure and releasing

  • PR-5029 - Remove GHC 8.10 from nix-flake and GHA
  • PR-5040 - Update to fourmolu-0.17.0.0
  • PR-5041 - Update ghc versions
  • PR-5039 - Bump base
  • PR-5051 - Update the haskellNix flake input
  • PR-5055 - Update the iohkNix flake input
  • PR-5060 - Move the shellcheck CI into the main workflow file

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team enabled incremental certification for the Cardano node database (version 2) on the release-mainnet network.

They continued work on the DMQ node implementation, completing the signature consumer and processor in the aggregator to support continuous signature handling, and added a mechanism to record the origin of each signature. The team also began adding support for UTXO-HD in the aggregator, signer, and client.

Finally, they addressed several bugs, improved CI workflows, and continued refactoring the STM cryptographic library.

Low level overview

  • Completed the issue Rollout Cardano Database v2 feature #2409
  • Completed the issue Implement a signature processor for DMQ node in aggregator #2470
  • Completed the issue Record signatures origin in the signature processor of aggregator #2478
  • Completed the issue Add a Cardano node startup check step in the manual client test workflow #2471
  • Completed the issue Some Cardano DB snapshots require full chain replay #2474
  • Completed the issue Run internal crates tests on MacOS/Windows in the CI #2486
  • Worked on the issue Add a Mithril client CLI command for UTxO-HD ledger state snapshot conversion #2492
  • Worked on the issue Add support for ancillary verification key in config files of client CLI #2491
  • Worked on the issue Upgrade to Cardano 10.4 #2487
  • Worked on the issue Cleanup unexpected immutable files in archive in client #2429
  • Worked on the issue Signer fails to access Cardano node after it has rebooted #2426
  • Worked on the issue Re-organize STM library structure #2369