Skip to main content

· 4 min read
Michael Karg

High level summary

  • Benchmarking: 10.6 benchmarks confirming heap size fix; First LSM-trees benchmarks.
  • Infrastructure: New typesetting tool for reporting pipeline.
  • Tracing: Increased robustness of the PrometheusSimple metrics backend; previous quality-of-life improvements released.
  • Leios: Linear temporal logic based trace verifier demo for Leios.

Low level overview

Benchmarking

The underlying cause for increase in RAM usage on Node 10.6.0 has been indentified and addressed. While heap size increase is still present outside of our benchmarking environment, its extent there is negligible. We've re-run cluster benchmarks to confirm the fix is successful.

Additionally, we've performed and analyzed benchmarks on several LSM-trees integration branches. This feature has as of now not been released in some Node version, so it is not yet fully configurable. The benchmarks have to be understood as a very early performance assessment. We've performed benchmarks for both in-memory and on-disk backing stores. Especially for the on-disk benchmarks, we could observe RAM usage decreasing clearly, with only small increases in CPU usage. While there is some extra cost to block adoption, cluster diffusion metrics still remain almost identical to the in-memory benchmarks - mostly due to header pipelining. As we didn't artificially constrain memory, the benchmarks are illustrative of LSM-trees behaviour when there's no pressure from the garbage collector: Given that, will on-disk LSM-trees use caching / buffering efficiently, or will it perform redundant disk I/O? The answer is - the former.

Infrastructure

For convenient creation of reporting documents, we're integrating a new typesetting tool: The brilliant, open-source Typst project promises fully typesettable and scriptable documents, while maintaining a syntax that is (almost) as easy to grasp as Markdown. Typst extensions even render our gnuplots inline - and fast. Easily scriptable styling enables us to deliver an often requested feature: Colorizing individual result metrics based on how risky (or beneficial) a deviation from the baseline is deemed to be. Up to now, our reporting pipeline depended on Emacs Org mode and a medium-sized LaTeX distro as part of the Performance Workbench; we might be able to drop these heavy dependencies in favor of something more modern soon.

Tracing

The Node's internal PrometheusSimple backend to expose metrics has received several robustness improvements. All those aim to mitigate factors in the host environment which can contribute to the backend becoming unreachable. It will now reap dangling socket connections more eagerly, preventing false positives in DoS protection. Furthermore, there now is a restart/retry wrapper in place, should the backend fail unexpectedly. All start and stop events are traced in the logs, exposing a potential error cause. Merged in cardano-node PR#6396.

The previous batch of quality-of-life improvements in cardano-node PR#6377 has also been merged and released. It includes Prometheus HTTP service discovery for cardano-tracer, more robust recovering and tracing of forwarding connection interruptions as well as stability improvements for engineers implementing tracers.

Leios

Our conformance testing framework which evaluates linear temporal logic propositions against trace output has matured. It has seen some performance and usability improvements, for instance a helpful human-readable output as to what minimal sequence of traces caused some proposition to be false - and the ability to consume traces from an arbitrary number of nodes instead of only one. We've already created several propositions targeting the well-behavedness of the block forging loop; diffusion related propositions for Praos and eventually Leios are logical next steps.

Even though this framework was built with Node Diversity in mind, we could showcase it at this month's Leios event, and demonstrate what it could deliver for this project as well - and we were very satisfied with the reception it got.

Performance & Tracing wishes you Happy Holidays...

...and a Joyful New Year!

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team focused on implementing the SNARK-friendly STM library. They also made progress on assessing constraints on Halo2 verification keys, designing a testing strategy for SNARK circuits, crafting SNARK-friendly protocol parameters, and prototyping the recursive SNARK solution.

Additionally, they kept testing the DMQ node and preparing its deployment, and enhanced the signer and signature registration metrics and logs.

Finally, they worked on improvements to the protocol security page and kept upgrading the Cardano node to v.10.6.

Low level overview

Features

  • Completed the issue Test Haskell DMQ node message authentication (Pool authentication) #2832
  • Worked on the issue DMQ testing with SPOs on preview #2833
  • Worked on the issue Simplify code of STM library #2794
  • Worked on the issue Document recursive SNARK solution #2767
  • Worked on the issue Assess constraints on Halo2 circuit verification #2799
  • Worked on the issue Support test mode for the Halo2 circuit #2798
  • Worked on the issue Update protocol parameters to SNARK friendly values #2813
  • Worked on the issue Proposals for Mithril/DMQ as optout feature of Cardano #2831

Protocol maintenance

  • Completed the issue Add Cardano start Docker command in the snapshot converter command of client CLI #2823
  • Completed the issue Enhance signer/signature registration error logs in aggregator #2825
  • Worked on the issue Enhance signer/signature registration metrics in aggregator #2855
  • Worked on the issue Upgrade to Cardano 10.6 #2790
  • Worked on the issue Enhance protocol security page on website #2703

· One min read
Damian Nadales

High level summary

  • Completed the LSM work in Consensus. Remaining LSM work is just integration in API, CLI, and Node which will be done as part of Node 10.7. In particular we:
    • Made forkers more observable (#1773).
    • Updated the code to reject legacy snapshots (#1774).
    • Updated to latest LSM-trees (#1776), including dependency updates to allow older filepath (#804) and older unix (#805).
  • Fixed a deadlock in the V1LMDB mempool implementation (#1787, #1798).
  • Resolved a memory leak in benchmarks for the 10.6.1 release (#1802).
  • Prepared a 10.6.1 node with LSM-trees for preliminary deployment on a relay to gather performance measurements.
  • Successfully compiled an untested prototype of a node using different tables per block, preparatory work for LedgerHD planned for Node 10.8.
  • Modified cardano-testnet to support running with kes-agent.
  • Made progress on migrating Leios demos to ouroboros-leios, including traffic control support for network delay and bandwidth configuration in Leios experiments (#651). The remaining work involves making sure CI passes and incorporating review feedback.
  • Continued work on Node 10.7 integration.

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team continued focusing on the SNARK-friendly STM library, simplifying its code and implementing some wrappers for the Jubjub backend. They also made progress by specifying the non-recursive SNARK circuit, assessing constraints on Halo2 verification keys, designing a testing strategy for SNARK circuits, prototyping the recursive SNARK solution, and completing a prototype of the Bitcoin DeFi prover with RISC Zero.

Additionally, they completed the simple aggregator discovery mechanism, worked on improvements to the protocol security page, and completed the second phase of the common aggregator client implementation.

Finally, they worked on CI enhancements by implementing dependency license enforcement and fixing bugs in crate publication, and kept upgrading the Cardano node to v.10.6.

Low level overview

Features

  • Completed the issue Implement a simple aggregator discovery mechanism #2726
  • Completed the issue Prepare specifications for the Mithril circuit #2797
  • Completed the issue Prototype Bitcoin Defi Groth16 proof generation with Risc Zero #2835
  • Completed the issue Prepare new Lagrange Mithril era for SNARK support #2809
  • Completed the issue Full review of SNARK circuit prototype #2769
  • Completed the issue Trusted setup for Mithril Halo2 SNARKs #2800
  • Completed the issue Compute the IVC state with SHA256 in the recursive circuit #2806
  • Worked on the issue Document recursive SNARK solution #2767
  • Worked on the issue Experimental blst-Jubjub #2772
  • Worked on the issue Implement Jubjub/Poseidon backends wrappers in Schnorr signature scheme #2817
  • Worked on the issue Assess constraints on Halo2 circuit verification #2799
  • Worked on the issue Update protocol parameters to SNARK friendly values #2813
  • Worked on the issue Proposals for Mithril/DMQ as optout feature of Cardano #2831

Protocol maintenance

  • Completed the issue Implement a common aggregator client - Phase 2 #2827
  • Completed the issue Crates publication fails if one crate is already published #2824
  • Completed the issue Check external crates license compatibility in CI #2746
  • Worked on the issue Upgrade to Cardano 10.6 #2790
  • Worked on the issue Enhance protocol security page on website #2703

· 2 min read
Marcin Szamotulski

Overview of spint 102

Leios

We completed a basic prototype of a request-respond mini-protocol that supports server-side message reordering while ensuring both deadlock and livelock freedom. The prototype was reviewed by the consensus and formal methods teams. Next development steps involve simplifying the API and evaluating specific modifications tailored for Leios. At this point, we consider the technical risk of this development direction to be addressed and are transitioning to other, higher-priority Leios tasks.

Mithril

We're moving the development to a new repository: https://github.com/IntersectMBO/dmq-node

Ouroboros Network

Cardano Node