Skip to main content

· 4 min read
Michael Karg

High level summary

  • Benchmarking: 10.3.1 release benchmarks.
  • Development: Plutus script calibration tool and profile maintenance updates about to be merged.
  • Infrastructure: Workbench simplification about to be merged.
  • New Tracing: System dependencies untangled; preparing 'Periodic tracer' feature for production.
  • Node Diversity: Participation in Conformance Testing workshop in Paris.

Low level overview

Benchmarking

We're currently running release benchmarks for the upcoming Node 10.3.1 version - a candidate for Mainnet release. Having taken previous measurements on the release integration branch, we expect the results to be closely aligned with these.

Node 10.3.1 will support two compiler versions, namely GHC8.10.7 and GHC9.6.5. As a consequence, we benchmark both Node builds and compare against the previous performance baseline 10.2. So far, the release benchmarks confirm performance improvements in both resource usage and block production metrics seen on the integration branch - for both compiler versions. A final report will be published on Cardano Updates.

Development

The first version of our new tool calibrate-script is about to be merged. It is part of the tx-generator project, and calibrates Plutus benchmarking scripts according to a range of constraints on the expected workload. The tool documents the result and all intermediate steps in a developer-friendly way. A CSV report is generated which shows all properties of some calibration at a glance: How much execution budget was given, and how much of each execution budget was used, was memory or CPU steps the limiting factor for the script, how large will the resulting transaction be and what will it cost and more. Apart from greatly speeding up development of Plutus benchmarks for our team, this tool can also be used to assess changes to Plutus cost models, or efficiency of different Plutus compiler outputs - without running a full benchmark.

Furthermore, the benchmarking profiles defined in cardano-profile have undergone a large maintenance cycle. Besides a cleanup, several profiles were fixed wrt. transaction fees or duration, others now run on a more appropriate performance baseline. There era-dependency of a profile requiring a minimum protocol version has been solved such that it's now impossible to construct incompatible profiles by definition - e.g. a PlutusV3 benchmark in any era prior to Conway. The correspondig PR is about to be merged shortly.

Infrastructure

A large PR simplifying the build of our performance workbench has been finalized and passed testing. The nix code has been greatly optimized to avoid redundant derivations and creating an abundance of nix store paths. This not only makes the workbench better maintainable, it greatly reduces time and size requirements for CI jobs. In testing, we could observe a speedup of 40% - 50% for CI. Additionally, this PR prepares for the future removal of GHC8.10 as a release compiler - which will reduce CI cost even more. The PR is currently under review and to be merged soon.

New Tracing

The work on untangling dependencies in the new tracing system has entered testing phase. The cardano-tracer service no longer depends on the Node - with common data types and typeclass instances having been refactored to a more basic package of the tracing system. Once merged, this will allow for the service to be built, released and operated independently of cardano-node, widening its range of use cases.

On Node 10.1, we've built a prototype of the 'Periodic tracer' feature. It decorrelates tracing ledger metrics from the start of a block producer's forging loop, thus removing competition on certain synchronization primitives. We've already shown in past benchmarks it had a positive impact on block production performance. This prototype is now being developed for production release, complete with configuration options, and we aim to land it in Node 10.4.

Node Diversity

We've contributed to the recent Conformance Testing workshop in Paris. The topic was how to approach detection and documentation of system behaviour across diverse Cardano Node implementations: Where is the behaviour conforming to some blueprint, where does it deviate - intentionally or accidentally. Our tracing system is the prime provider of observability - and all evidence of program execution could in theory be checked against a machine-readable model of the blueprint. This of course assumes observables are implemented uniformly across diverse Node projects, i.e. without changing semantics. Thankfully, our tracing system lead engineer Jürgen Nicklisch was able to join that workshop and add to the discussions around that approach.

· 3 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, cardano-cli, and db-sync versions are now set to 10.2.1 and 10.4.0.0, 13.6.0.5, respectively, in cardano-parts release v2025-04-03.

  • The blockfrost-platform is now in capkgs and cardano-parts default devShell, pkgs and cluster flakeModules.

  • ConsensusMode cardano-node configuration and supporting files were added to the baseline node configurations in iohk-nix and integrated into cardano-node for the 10.3.x [pre-]release. This will make experimenting with GenesisMode easier. Relevant files and info will be published to the Cardano Book soon.

Repository Work -- Merged

Capkgs:

  • Adds the blockfrost platform to capkgs capkgs-pr-4

  • Refactors and expands ci to support fork PRs gracefully. Adds a manual workflow dispatch option with pr_number input for maintainers to authorize a privileged ci run on a forked PR. Utilizes composite actions for easy re-use elsewhere. capkgs-pr-6

Cardano-parts

  • Sets node release to 10.2.1, cardano-cli release to 10.4.0.0, cardano-db-sync to 13.6.0.5 and mithril-cli to v2513.0. Adds profile-cardano-node-topology SRV record support for cardano-node producers. Fixes a process-compose node health check broken in newer versions of cardano-cli and adds node binary to the nixosCfgs system path. cardano-parts-release-v2025-04-03

  • Adds the blockfrost platform to shell, pkgs, and cluster cardano-parts flakeModules. Futures PRs will extend that to a blockfrost process-compose nix run job as well as dashboard for blockfrost deployments. cardano-parts-pr-62

  • Refactors and expands ci to support fork PRs gracefully. Adds a manual workflow dispatch option with pr_number input for maintainers to authorize a privileged ci run on a forked PR. Utilizes composite actions for easy re-use elsewhere. cardano-parts-pr-63

Cardano-mainnet

  • Rotates KES, adds bootstrap and stakepool resource specific tags for cost analysis, improves the demo recipes to dynamic waits to avoid brittle time delay failures. Includes the version bumps from cardano-parts release v2025-04-03. cardano-mainnet-pr-32

Cardano-node

  • Node 10.3.x release branch preparation: SRE contribution for iohk-nix PR#596 integration, CI tests fixup and docker cli arg bug fixup. cardano-node-pr-6143

Iohk-nix

  • Adds support for genesis mode in node with: node config for genesis mode and related options, checkpoint file for mainnet and updated peer snapshot files for all envs, checkpoint and peer snapshot files are now included in mkConfigHtml output iohk-nix-pr-596

Repository Work In Progress -- PRs and Branches

· 2 min read
Alexey Kuleshevich

High level summary

Major technical debt items have been taken care of during this period:

  • We've finalized the adjustment of mechanism of how we retain the original bytes of a transaction during deserialization, which will have positive impact on performance as well as correctness of our transaction deserializers. This was an especially necessary task to handle for the upcoming work on Nested Transactions
  • We finished adjusting the representation of CertState, which is the part of the ledger state responsible for managing the state of entities that are manipulated with transaction certificates. This representation now more accurately reflects the difference between pre vs post-Conway eras.
  • We did a minor performance improvement of transaction size calculation
  • Improved the MemoBytes interface to disallow unsafe construction and improved the consistency of transaction related modules.
  • Did AccountState type rename as preparation for potential promotion of reward accounts to full blown accounts, which might be needed for Leios later down the road.

We've also accomplished a very nice simplification to our constraint based generation framework. Fixed our example Plutus scripts that we use for testing. Got rid of a couple of redundant Byron test packages, which were causing rebuilds of the same code twice and caused unnecessary maintenance overhead. Besides that we also did some other minor quality of life improvements to the Ledger codebase.

Low level summary

Features

Testing

  • pull-4954 - Add expectTxSuccess to ShelleyEraImp and use it in trySubmitTx
  • pull-4958 - Update spec's code location
  • pull-4921 - Refactor the constrained generators to get rid of the Fn stuff
  • pull-4972 - Fix and bump cardano-ledger-executable-spec
  • pull-4923 - Update V3 scripts in plutus-preprocessor to use the new Data api

Infrastructure and releasing

  • pull-4956 - Convert byron test packages to sublibraries
  • pull-4957 - Add script for bumping CHANGELOGS post-release
  • pull-4965 - Expose Byron CDDLs in Test.Cardano.Chain.Binary.Cddl

· One min read
Jean-Philippe Raynaud

High level overview

This week, some members of the Mithril team attended a workshop on the Cardano node diversity in Paris.

They continued adapting the infrastructure to support the aggregator’s prototype ‘follower’ mode and focused on signing ancillary files in the Cardano database snapshots with an IOG key. They also completed the implementation for recording the origin of requests made to the aggregator API.

Finally, the team continued refactoring the STM cryptographic library to improve clarity and maintainability and started implementing a proof of concept for the Mithril/ALBA aggregation proof system.

Low level overview

  • Worked on the issue Sign ancillary files with IOG key #2362
  • Worked on the issue Adapt infrastructure for multiple aggregators with leader/follower signer registration #2391
  • Worked on the issue Re-organize STM library structure #2369
  • Worked on the issue Mithril/ALBA aggregation proof system PoC #2403
  • Worked on the issue Rollout Cardano Database v2 feature #2409
  • Worked on the issue DMQ signature diffusion prototype #2402

· 2 min read
Damian Nadales

High level summary

  • Well-Typed has presented the penultimate milestone for the lsm-tree library. Table unions are now fully supported, tests include IO-error injection, and compatibility across Linux, Windows, and macOS has been demonstrated.
    • The next milestone will finalize the library's development, enabling its integration as a persistent backend for storing ledger state.
  • Several Consensus team members attended the Peras workshop. There is a brief presentation that can be accessed by following this link (password is GDdL*6M%). A design and implementation plan has been drafted. The next steps for Peras involve a decision by relevant stakeholders (Intersect Technical Steering Committee, involving SPOs and users) regarding the tradeoffs inherent to the protocol, such as additional operational costs, rewards and protocol parameterization regarding settlement times.
  • We held our technical working group meeting (recording), where we discussed:
    • The possibility of incorporating batch VRF support into ouroboros-consensus.
    • CDDL definition for Consensus: draft PR and next steps.
    • Should we support for NTC for older eras? (#1429).
  • Exposed a function that asks Consensus for the versions in which a particular query is supported, offloading this logic from cardano-api (#1437).
  • Exposed Byron cddls to be used from Consensus (#4965).
  • Added QueryStakePoolDefaultVote for 10.3 ([#1434](https://github.com/IntersectMBO/ouroboros-consensus/pull/1434 release consensus for node 10.3)).