Skip to main content

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released the 2603.1 distribution. This version introduces support for the DMQ protocol, preliminary support for decentralized configuration, implementation of the Blockfrost API to fetch stake pool operators' pool tickers and names, and various bug fixes and improvements.

The team also focused on implementing the pre-aggregation SNARK primitives in the STM library and continued work on the non-recursive SNARK circuit MVP, including golden tests.

Additionally, they kept working on the new certification for Cardano blocks and transactions, implementing the signable builder and artifact routes in the aggregator REST API. They also completed documenting proposals for increasing the adoption of Mithril and DMQ nodes in Cardano.

Finally, the team fixed some bugs in the DMQ publisher and follower aggregator and continued updating the protocol security page.

Low level overview

Features

  • Completed the issue Prepare recursive SNARK logbook #2767
  • Completed the issue Update protocol parameters to SNARK friendly values - Phase 1 #2813
  • Completed the issue Avoid panic in AggregateVerificationKeyForConcatenation conversion #2954
  • Completed the issue Synchronization of modifications between Halo2 circuit in STM and prototype #2947
  • Completed the issue Import Blocks and Transactions in new store for Cardano Blocks and Transactions #2907
  • Completed the issue Implement artifacts builder for Cardano Blocks and Transactions #2955
  • Completed the issue Add throttling to Blocks and Transactions preloader #2909
  • Completed the issue Proposals for Mithril/DMQ adoption in Cardano #2831
  • Worked on the issue Implement SNARK pre-aggregation primitives in STM library - Phase 1 #2792
  • Worked on the issue Add golden tests for Halo2 circuit prototype #2912
  • Worked on the issue Compute Lottery Target Value for SNARK #2974
  • Worked on the issue Implement signable builder for Cardano Blocks and Transactions #2908
  • Worked on the issue Implement artifact routes for Cardano Blocks and Transactions in aggregator REST API #2956
  • Worked on the issue Pallas DMQ publisher keeps open connection to DMQ node #2961
  • Worked on the issue Follower aggregator panics in e2e tests in run-only mode #2770

Protocol maintenance

· 5 min read
Michael Karg

High level summary

  • Benchmarking: Updated 10.5 and 10.6 performance baselines; Local reproduction of LSM-trees benchmark isolating space leak; merged LSM-tree profiles.
  • Developemnt: HTTPS connections with cardano-tracer; PromQL-like query language and metrics timesieries for cardano-tracer.
  • Infrastructure: Reporting pipeline switched to new typesetting tool; 10.5.x backports to re-enable cluster benchmarks; extensive improvements to workbench's profiling capabilites and nix API.
  • Tracing: Shared traces between cardano-node and dmq-node; cardano-submit-api switched to new tracing; Small improvements to default configs.
  • Node Diversity: Comprehensive formal schema definition for trace messages; Proof-of-concept: Trace forwarding in native Rust.

Low level overview

Benchmarking

We've re-established performance baselines for both the 10.5 and 10.6 branches of Node releases. When many small changes accumulate over time, it's necessary to factor them into the baseline (unless they show regressions) - otherwise one loeses the ability to efficiently localize underlying causes of performance metric changes.

Last month's cluster benchmark of LSM-trees pointed towards a space leak in the integration. To be certain, we successfully aimed to locally recreate network behaviour that was observed in the cluster. With this at hand, Consensus engineers managed to localize it and create a potential fix - validation on the cluster still outstanding.

In the meantime, the benchmarking profiles targeting on-disk LSM-trees have been solidified, merged to master and eternalized in our encyclopedia of benchmarking profiles cardano-profile.

Developemnt

The trace consumer and processor service cardano-tracer is currently being upgraded with optionally HTTPS enabled connections. For scraping or browsing Node metrics, in case the connection crosses public networks, it's highly recommended to encrypt traffic. So far this has to be achieved by placing cardano-tracer behind a webserver proxy which speaks HTTPS; with the planned change cardano-tracer can be configured to do this directly when provided with the relevant certificates.

The work on aggregating timeseries of Node metrics and evaluating PromQL-like queries over them is almost complete. Currently, it's a standalone application; we're planning to integrate it into cardano-tracer as a next step. We've had SRE review the up to now unnamed query language for conciseness and utility - a sort of UAT if you will. This building block forms the foundation for alerts or monitoring dashboard data queries, which in the future can be handled directly by cardano-tracer, if so desired.

Infrastructure

The integration of the Typst typesetting document compiler into our reporting pipeline is completed and merged to master in cardano-node PR#6418. Not only does that enable richer document features for the future; it also compiles much faster than the previos Emacs Org mode / LaTeX based pipeline - and produces smaller and more accessible PDF files. The PR also drops a nix flake input required by the previous pipeline, which should result in smaller and faster workbench builds both locally and in CI - and de-risk future nixpkgs bumps.

We performed some necessary backports from master to re-enable the release/10.5.x branch for cluster benchmarking. As cluster maintenance has moved on and deviated over the months, we're now ready to swiftly benchmark a potential new 10.5 patch release, should it see the light of day (cardano-node PR#6421).

We also merged a large PR (cardano-node PR#6380) that brings many improvements to the performance workbench. We reworked the configuration of profiled builds (where the Haskell runtime itself profiles execution). There is now full support for info-table profiling, and much more flexibility in configuring the runtime to write out an eventlog. Our automation now grants a long enough grace period to write out all profile data before Node processes are terminated. The PR also cleaned up the workbench's nix API, leading to more straightforward dependency resolution, a cleaner separation of concerns, removal of dead code, and an improved hit/miss ratio for cached binaries.

Tracing

Establishing trace-dipatcher (the Node's new tracing system) as the default for dmq-node is nearly complete. We're currently performing a large refactoring with the goal to share code defining trace rendering between cardano-node and dmq-node; they do use the same ouroboros-network components after all. This will avoid redundant implementation, and ensure the same traces are emitted the same way by either application.

We've ported a separate package in the Node project, cardano-submit-api, to use trace-dispatcher for logging and metrics - with nearly no changes to messages and metrics at the surface: cardano-node PR#6326. This removes the legacy tracing dependency from the Submit API - a requirement to eventually retire the system from the Node as well. However, as legacy tracing is no longer supported, users are advised to adjust their configs accordingly starting with cardano-submit-api-10.2.

We've also merged a small PR (cardano-node PR#6409) that contains improvements to the new tracing system for both users and implementors. Most prominently, we've adjusted default values and configs to prevent accidental misconfiguration of the forwarding backend - which should make for a better user experience and adoption.

Node Diversity

Additionally, we've been working on building a comprehensive formal schema definition of all the Node's existing trace messages. The Haskell Node being the current reference implementation, it is a logical starting point. The goal is to provide a fully compliant JSON schema so any tooling, or verification suite, can automatically derive parsers from it. Furthermore, it should be renderable into human-readable formal documentation. We believe this to be crucial to enable unified trace semantics across diverse Node implementations; right now, we're still evaluating the most effective approach to maintain this over a long time, and guarantee consistency with the implementation.

Last but not least, we're building a proof-of-concept of how to implement our forwarding mini-protocol in Rust. This would allow for all Rust-based projects to emit Cardano-style structured traces directly, and forward them to a running cardano-tracer for logging, processing and metrics exposition.

· One min read
Damian Nadales

High level summary

  • Continued work on Node 10.7 integration and release (Treasury Funding Initiative 17: Maintenance and Support).
  • Added defensive programming logic to the mempool (#1831), backported it via a CHaP release for cardano-node 10.6.2 (#1216), and drafted corresponding EKG counters for the 10.6.2 release engineer to use (#6420) (Treasury Funding Initiative 17: Maintenance and Support).
  • Prototyped Leios EB (Endorsement Block) production, advancing the implementation of the Leios protocol (#690). Successfully forged EBs and integrated them with the proto-devnet, complete with Grafana dashboards (Treasury Funding Initiative 4: Ouroboros Leios Implementation, MS4.6).
  • Working on optimizations for the centralized TxSubmission logic (#1444) (Treasury Funding Initiative 17: Maintenance and Support).
  • Released kes-agent and kes-agent-crypto version 1.0 (Treasury Funding Initiative 9: KES Agent, MS9.7).

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team prepared the pre-release for the 2603.1-pre distribution. This version introduces support for the DMQ protocol, preliminary support for decentralized configuration, implementation of the Blockfrost API to fetch stake pool operators' pool tickers and names, and various bug fixes and improvements.

The team focused on implementing the SNARK-friendly STM library, advanced the non-recursive SNARK circuit MVP, and progressed work on pre-aggregation and recursive SNARK circuits.

Additionally, they worked on the new certification for Cardano blocks and transactions, implementing the storage layer, the artifact builder, and the throttled preloader.

Finally, they continued documenting proposals to integrate Mithril and DMQ nodes with Cardano and updating the protocol security page.

Low level overview

Features

  • Completed the issue Implement SNARK-friendly changes in STM library #2795
  • Completed the issue Create SNARK circuit new module in STM #2911
  • Completed the issue Implement Digest for Poseidon hash from Midnight ZK #2942
  • Completed the issue Synchronization of modifications between Halo2 circuit in STM and prototype #2947
  • Completed the issue Create new signed entity type for Cardano Blocks and Transactions #2905
  • Worked on the issue Release 2603 distribution #2830
  • Worked on the issue Document recursive SNARK solution #2767
  • Worked on the issue Update protocol parameters to SNARK friendly values #2813
  • Worked on the issue Implement SNARK pre-aggregation primitives in STM library - Phase 1 #2792
  • Worked on the issue Add golden tests for Halo2 circuit prototype #2912
  • Worked on the issue Avoid panic in AggregateVerificationKeyForConcatenation conversion #2954
  • Worked on the issue Import Blocks and Transactions in new store for Cardano Blocks and Transactions #2907
  • Worked on the issue Implement artifacts builder for Cardano Blocks and Transactions #2955
  • Worked on the issue Add throttling to Blocks and Transactions preloader #2909
  • Worked on the issue Proposals for Mithril/DMQ as optout feature of Cardano #2831
  • Worked on the issue Pallas DMQ publisher keeps open connection to DMQ node #2961

Protocol maintenance

  • Pre-released the new distribution 2603.1-pre
  • Worked on the issue Enhance protocol security page on website #2703

· One min read
Noon van der Silk

The Hydra team kicks off the new year by with a reinvigorated focus on developer experience. Over the coming months we will be working to improve our performance and observability, while addressing any user-submitted bugs and feature requests.

What did the team achieve?

  • Finished Rasberry PI demo #2353
  • Progress on partial fanout #1468
  • Improved our HTLC demo
  • Finished chain-following improvements #2206
  • Accepted a PR to fix a HTTP endpoint #2445, thanks @leuhk!

What's next?

  • Continue looking into memory improvements #2441, #2422
  • Improve benchmarking #2439
  • Investigate bug with incremental commits #2446
  • Continue work on partial fanout #1468
  • Release version 1.3.0