Skip to main content

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team made several impactful updates. They addressed misleading errors regarding collect com transactions, resolved a security advisory (CVE-2023-42806), and simplified the Hydra Head protocol by using inline datums. The team also tackled minor inconsistencies in specifications and implementation, documented reasons for potentially dropped close transactions by the cardano-node, and collaborated with SundaeLabs on an offline mode for hydra-node. Additionally, they engaged in discussions with researchers about incremental de-/commits.

What did the team achieve this week

  • Removed misleading errors about collect com transactions #839
  • Addressed security advisory CVE-2023-42806 in PR #1161
  • Changed the head protocol to use inline datums, simplifying things in the hydra-node #1162
  • Addressed minor inconsistencies in spec and implementation #1104
  • Documented why close transacations might be dropped by the cardano-node (cant fix) #1039
  • Tidy up a few things here and there
  • Worked with SundaeLabs on the offline mode for hydra-node
  • Discussed incremental de-/commits with researchers

What are the goals of next week

  • Start work on incremental decommits protocol specification #1057
  • Provide support to Hypix
  • Address all open bugs
  • Release version 0.14.0 with this scope
  • Update dependencies to prepare for Conway #1114
  • Shepherd off-line mode PR over the finish line
  • Complete tidying up chain layer via stateless observation changes in hydra-node #1096

· 3 min read
Michael Karg

High level summary

  • Benchmarking: Release benchmarking for node 8.6.0 as well as benchmarks scrutinizing GHC versions and the new tracing system.
  • Development: PlutusV3 capability of our workload generator has been implemented.
  • Tracing: First round of optimization of the cardano-tracer service has completed, awaiting validation.
  • Nomad backend: A significant PR has landed addressing automation features and debugging capabilites.
  • Workbench: Configurable remote environments and improvements to run documentation have been merged to master.

Low level overview

Benchmarking

We've performed and analyzed a full set of benchmarks for node 8.6.0, both in comparison to recent release tags and mainnet version 8.1.2. A lot of development work has entered the system since then, so it is crucial we can rule out any potential performance risks for the next mainnet release.

Additionally, we've been benchmarking GHC9.6.3 builds of cardano-node. Overall, we've observed reliable optimization behaviour by that compiler version - which is much more in line with expectations than what we've seen on GHC9.2.7. Getting evidence on how predictable (and malleable, by code annotations) performance is when building with a certain compiler version is essential for settling on a version as supported release platform.

A last set of benchmarks was dedicated to the new tracing system with node 8.6.0. We were able to show that there is no performance risk to enabling the new system, even when forwarding all trace messages to a cardano-tracer service on the receiving end. Key metrics for block forging, as well as block diffusion, did not exhibit any regression.

Development

For future benchmarks to be built around PlutusV3, we've equipped our transaction generator with basic integration and tests for the upcoming Plutus version. This enables us to target the new cost model and potential changes to the execution budgets by developing specialized workloads.

Tracing

The cardano-tracer service has received its first batch of optimizations. Profiling output is promising; to measure performance for a long service run time, we're currently equipping the service binary with the same capability to emit regular resource traces as cardano-node. Analysis of those will be the basis for validating this and possible future optimization efforts.

Nomad backend

Many improvements for the nomad backend have been implemented and merged to master. This encompasses a unified naming schema for all nomad profiles, improved internal management of cluster topology, a more fine-grained healthcheck service, more detailed automated documentation of underlying hardware, as well as lazy resource release. The latter enables our team to investigate and debug interrupted runs for the exact moment and in the exact cluster state a potential failure occurred.

Workbench

Our performance workbench has seen upgrades in documenting and reporting cardano-node builds. This ranges from capturing package versions and commit ids of key dependencies, to querying a deployed node for its build compiler. When alternating between compiler versions and benchmarking custom built branches, automating such documentation is essential.

Furthermore, the workbench is now able to access several remote deployments on all active clusters. This allows for fetching data, analyzing, comparing and reporting on all benchmarks from just one centralized workbench instance.

· One min read
Marcin Szamotulski

High-level overview of sprint 48

Bootstrap Peers

We continued reviewing bootstrap peers, ouroboros-network#4555.

IOClasses / IOSim

We prepared slides for a Haskell meetup were we presented a talk on IOSimPOR. The recording will be availble on YouTube.

We also used the opportunity to do some refactoring of the IOSim code base: io-sim#117. We released io-sim-1.3.0.0 on Hackage: io-sim#119.

We also added forkFinally to MonadFork (not included in 1.3.0.0 release): io-sim#123.

Tech debt

We refactored Resource used by the DNS subsystem: ouroboros-network#4707. We continued reviewing the ouroboros-network#4625 PR, which refactors RootPeersDNS module.

· 2 min read
Damian Nadales

High level summary

Over the last two weeks, we managed to run a UTxO-HD capable node in legacy mode, which maintains the baseline memory usage while keeping all the ledger state in memory (as the current node does). This legacy mode could provide an alternative for releasing a UTxO-HD capable node where people can choose whether to store the large part of the UTxO set on disk or not. However, legacy mode involves code duplication, requires several weeks of work before it is production ready (more integration and testing). Moreover, we will not release UTxO-HD before Conway to avoid the risk of delaying the latter. On the other hand, to integrate the LSM-tree backend for UTxO-HD we need to redesign the Consensus storage layer, and this new design might enable us to implement an alternative in-memory backing store that will have a very similar performance and resource requirements as the current Cardano node. Therefore, during the coming months we will focus our efforts on the redesign of the storage layer and the LSM-tree backend.

On the Genesis front, we reviewed the peer simulator for Genesis tests, which was implemented by Tweag and was signed-off by the Consensus team.

We also continued our work on improving the handling of blocks from the future. We presented possible approaches to handling blocks from the future in the Chief Scientist Meeting at IOG, which was very well-received. The discussion with the IOG scientists touched upon the relationship of this approach to Ouroboros Chronos.

Javier Sagredo continues his cycle as release engineer, and he is working on version 8.7 of Cardano node.

· One min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team completed the adaptation of the Mithril client as a library. They progressed in decentralizing the Mithril networks with the peer-to-peer (P2P) networking proof-of-concept, achieving the implementation of P2P signatures broadcast with the relay in the end-to-end tests. Additionally, the team completed the proof-of-concept for the deterministic computation of the UTXO/transactions set from the immutable files.

Finally, they continued addressing some performance issue associated with the 'release-mainnet' aggregator, and fixed a bug with the tool used to process batch certificate hash re-computation.

Low level overview

  • Worked on the issue Prototype a P2P relay with libp2p #1300
  • Completed the issue Light Wallet: Release mithril-client library #1311
  • Completed the issue Light Wallet: Compute deterministic Cardano UTxO/transactions set PoC #1283
  • Completed the issue release-mainnet aggregator is unreachable #1310
  • Completed the issue Fix certificate hashes re-computation in aggregator #1343
  • Completed the issue Remove unstable tag in unstable release #1235
  • Worked on the issue Enhance aggregator REST API performances #1327
  • Worked on the issue Signer runtime is stuck for some SPO #1312