Skip to main content

· One min read
Alexey Kuleshevich

High level summary

Ledger team started preparation for an intra-era hard fork, by bumping support for major protocol version 11 in Conway era. Besides that we've continued addressing tech debt, improving safety of the codebase and enhancing our constraint based testing framework.

Low level summary

Features

  • pull-5001 - Remove heapwords from cardano-ledger-core
  • pull-5013 - Move orphan ToPlutusData instances with their types
  • pull-5005 - Made TxBody a data family
  • pull-5004 - Remove delegators field from conway-genesis JSON
  • pull-5023 - Bumped Conway protocol version max to 11
  • pull-5021 - Add SupportedLanguage

Testing

  • pull-5010 - constrained-generators: Use csongor's trick to make type errors nicer
  • pull-5002 - Add EraTest classes
  • pull-5020 - Update and fix ledger-state benchmarks

Infrastructure and releasing

  • pull-5025 - cardano-ledger-byron: remove Cabal-syntax dependency

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released the new distribution 2517.1, which addresses a client security issue discussed in this developer blog post. This version supports Cardano node v.10.3.1 and allows for signing ancillary files in the Cardano database snapshots using an IOG key. It also includes various bug fixes and improvements.

The team continued progressing on the DMQ node implementation by adjusting the cadence of the signer and aggregator state machines and developing the delayer and retrier decorators to support multiple signature publishers in the signer.

Finally, they worked on fixing some bugs in the infrastructure and kept refactoring the STM cryptographic library for improved clarity.

Low level overview

  • Released the new distribution 2517.1
  • Published the security advisory Mithril snapshots for Cardano database could be compromised by an adversary #GHSA-qv97-5qr8-2266
  • Published a dev blog post about the Mithril client security advisory
  • Published a dev blog post about the Breaking changes in client library and CLI
  • Published a dev blog post about the Distribution 2517 availability
  • Completed the issue Release 2517 distribution #2410
  • Completed the issue Upgrade to Cardano 10.3 #2446
  • Completed the issue Missing protocolMagicId file in client restoration for Cardano Database #2464
  • Completed the issue Terraform deployment should fail if the era adapter parameters computation fails #2451
  • Completed the issue Optimize run intervals handling in signer and aggregator state machines #2428
  • Completed the issue Add signed ancillary files verification in manual Client Multi Platform Test workflow #2458
  • Completed the issue Fix aggregator commands automatic documentation #2450
  • Worked on the issue Implement delayer and retrier decorators of the signature publisher in signer #2461
  • Worked on the issue Add warning in client when not downloading ancillary files #2459
  • Worked on the issue Rollout Cardano Database v2 feature #2409
  • Worked on the issue Re-organize STM library structure #2369
  • Worked on the issue Signer fails to access Cardano node after it has rebooted #2426

· 3 min read
Michael Karg

High level summary

  • Benchmarking: 10.4.1 release benchmarks; UTxO-HD, GC settings and socket I/O feature benchmarks.
  • Development: Abstracting over quick queries and trace queries; enabling query processing on remote hosts.
  • Infrastructure: Workbench simplification merged; GHC8.10 tech debt removed.
  • New Tracing: Provided hotfix for several metrics.

Low level overview

Benchmarking

We've completed release benchmarks for Node 10.4.1. It is the first mainline release of an UTxO-HD node featuring LedgerDB. Leading up to the release, we previously performed and analysed UTxO-HD benchmarks. We were able to document a regression in RAM usage, and assisted in pinpointing its origin, leading to it being fixed swiftly for the 10.4 release.

Additionally, we ran feature benchmarks for a potential socket I/O optimization in the network layer, and GC setting changes catering to the now-default GHC9.6 compiler. Both benchmarks have shown moderate improvements in various performance metrics. This might enable the network team to pick up the optimization for 10.5. Also, we might be able to update the recommended GC settings for block producers, and add them to our own nix service configs for deployment.

The 10.4.1 performance report has been published on Cardano Updates.

Development

We've further evolved the (still experimental) quick query feature of our analysis tool locli. Parametrizable quick queries allow for arbitrary queries into raw benchmarking data, uncovering correlations not part of standard analysis. They are implemented using composable definitions inside a filter-reduce framework. With locli's DB storage backend, we can leverage the DB engine to do much of the work. Now, we're integrating a precursor to quick queries - so called trace queries - into the framework. Those can process raw trace data from archived log files. Currently, we're adding an abstraction layer such that it is opaque to the framework whether the data was retrieved (and possibly pre-processed) from a DB or from raw traces.

Furthermore, we added a custom (CBOR-based) serialization for intermediate results so a query can be evaluated on a remote machine - like the system archiving all benchmarking runs - but triggered, and its results visualized, on your localhost.

Infrastructure

The workbench nix code optimization has finally been merged. Redundant derivations and recursions have been replaced; many nix store entries have been consolidated. Among other things, the new code also aims to maximize nix cache hits. Furthermore, as GHC8.10 has now been officially retired from all build pipelines, we were able to clean up all tech debt in our automations that we had to keep around due to supporting the old compiler version.

Exactly as we had hoped, this has brought down CI time for the Node by orders of magnitude; first, from over an hour to around 15 min, then to under 10 min. Also, all workbench shell invocations are significantly faster, and clutter in the nix store is greatly reduced.

New Tracing

We've been hurrying to provide hotfixes for connectionManager_* and slotsMissed metrics that were faulty on Node 10.3. They have been successfully integrated into the Node 10.4 release.

· One min read
Damian Nadales

High level summary

  • Updated the centralized chain-sync-jumping model to allow using it as a substitute for the real model, which will make it easier to troubleshot potential test failures found in our property tests (#1466).
  • Engaged with Cardano Foundation on the Antithesis workstream, which will help us widen the test coverage and robustness of the Cardano node.
  • Enriched db-immutaliser to inspect a VolatileDB (1482).
  • Released Node 10.4.1, which incorporates the UTXO-HD feature. The default backend will be the in memory one. The LMDB backed is not recommended for block producers, but we encourage users to experiment with it and report their experience.
    • Our benchmarks show no significant performance degradation, rating it production ready.
      • A small 2% / 5% (169MiB / 389MiB) increase in heap size could be expected.
      • However, this is mitigated by the fact that going from 10.2 to 10.3, we saw a significant reduction in heap size - namely 6% / 14% (579MiB / 1267MiB).
      • 10.4 reduces CPU usage slightly again
      • There is no impact on network performance.

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released the pre-release version of the 2517.0-pre distribution. This version supports Cardano node v.10.3.1 and allows for signing ancillary files in the Cardano database snapshots using an IOG key. It also includes various bug fixes and improvements. The team continued implementing incremental certification for the Cardano database, also known as Cardano node database v2, which has been activated on the release-preprod test network.

The team has completed the proof of concept for the Mithril/ALBA aggregation proof system. They also simplified the configuration of the aggregator's commands and improved the dependency injection process. In addition, they implemented a publisher abstraction to facilitate the publication of signatures in the signer.

Finally, the team focused on speeding up the compilation time of Rust nodes and libraries, while continuing to refactor the STM cryptographic library for improved clarity.

Low level overview

  • Pre-released the new distribution 2517.0-pre
  • Completed the issue Sign ancillary files with IOG key #2362
  • Completed the issue Mithril/ALBA aggregation proof system PoC #2403
  • Completed the issue Implement a publisher abstraction for publication of signatures in signer #2427
  • Completed the issue Simplify dependency injection container structure in aggregator #2366
  • Completed the issue Simplify the configuration of commands in aggregator #2384
  • Completed the issue Accelerate Rust compilation time with workspace dependencies #2430
  • Completed the issue Hydra CI is flaky #2436
  • Worked on the issue Release 2517 distribution #2410
  • Worked on the issue Rollout Cardano Database v2 feature #2409
  • Worked on the issue Upgrade to Cardano 10.3 #2446
  • Worked on the issue Re-organize STM library structure #2369
  • Worked on the issue Signer fails to access Cardano node after it has rebooted #2426
  • Worked on the issue Fix aggregator commands automatic documentation #2450