Skip to main content

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team kept implementing the data type for certifying Cardano transactions within Mithril networks: they completed the adaptation of the Mithril explorer to support Cardano transaction verification, kept improving its UI, fixed the bug that prevented the signature of some Conway era transactions, implemented a more robust transactions parser, and started providing metadata about the point of the chain used during the verification process. Additionally, they have completed the optimization of the communications of the Mithril nodes and the Cardano node with the finalization of the Pallas chain observer.

Finally, the team enhanced the handling of logs in the CLI of the Mithril nodes and investigated some remaining flakiness in the end-to-end test in the CI.

Low level overview

  • Completed the issue Output CLIs logs to stderr #1515
  • Completed the issue Implement Cardano Transactions in explorer #1497
  • Completed the issue Enhance Mithril/Cardano node communication #1315
  • Completed the issue npm publish fails on latest when next exists #1531
  • Completed the issue Cardano transactions are not all signed in testing-sanchonet #1537
  • Completed the issue Enhance www demonstration in mithril-client-wasm #1552
  • Worked on the issue Implement a Block Range Merkle Tree for Cardano Transactions #1533
  • Worked on the issue Provide latest immutable file number with certified Cardano transactions in client #1536
  • Worked on the issue Explorer improvements Cardano transactions #1554
  • Worked on the issue Refactor the Cardano transactions parser with pallas-hardano #1557
  • Worked on the issue End to end tests are flaky in CI #1558
  • Worked on the issue P2P threat modeling and risk analysis #1350

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team has been working on a new library cardano-api-classy containing type class instances for era witnesses and also switched nix code to use flake-parts. They also further improved the Hydra Head [explorer](http://explorer.hydra.family) UI. The team also improved error reporting on integration tests and refactored the outcome algebra in the hydra-node protocol logic. Finally, they reviewed the incremental decommit specification with researchers. Meanwhile, SundeaLabs already implemented first UDP and Kinesis event sinks based on the EventSource / EventSink refactoring.

What did the team achieve this week

  • New library cardano-api-classy containing type class instances for era witnesses.
  • Switched the nix code to use flake-parts.
  • Completed another increment on the head explorer UI #1333.
  • Improved error reporting on integration tests #1335.
  • Refactored the outcome algebra in the hydra-node protocol logic #1340.
  • Reviewed incremental decommit specification with researchers.
  • SundaeLabs implemented first UDP and Kinesis event sinks based on #1267.

What are the goals of next week

  • Prepare #1178 on a branch for users to try out Conway on hydra.
  • Align specification with incremental decommit implementation
  • Improve MTB in terms of new Decommit input
  • Prepare a PR for Kupo using new Hydra transaction format
  • Spike on literate Agda specification pdf

· 5 min read
Michael Karg

High level summary

  • Benchmarking: We've performed release benchmarks for Node 8.9.0. Additionally, we benchmarked different GC settings for cardano-node.
  • Development: Ongoing work on the reporting pipeline and high-level profile definitions.
  • Workbench: In conjunction with DRep delegations in genesis, we're working on adjustments to a new cardano-cli command.
  • Tracing: Test coverage for the new handle registry feature in cardano-tracer is complete.
  • UTxO Growth: Currently, we're developing a series of benchmarks targeting performance implications of increased UTxO set size.
  • Nomad cluster: Disk storage safety net; better admin access to Nomad nodes; basic backend support for more than 1 cluster; new latency service.

Low level overview

Benchmarking

We've performed a full set of release benchmarks for Node 8.9.0. Initially, we identified a performance regression in connection to ledger snapshots. This has been addressed very swiftly. Having re-run the fixed version, we could detect no performance risks in comparison with 8.7.2 / 8.7.3.

In an additional set of benchmarks, we targeted the garbage collector (GC) settings that cardano-node is built with by default. Specifically, we compared these (copying, sequential GC) as a baseline to using the parallel GC, the compacting GC and the non-moving GC - all of which are supported by GHC's runtime system. As GC always is a trade-off between space and time (and as a consequence, responsiveness); we could measure the parallel GC offering a slight increase in responsiveness at the cost of delaying some evaluations - which is suboptimal for a block forger. The compacting GC could clearly achieve a smaller RAM footprint, but only at the cost of increased CPU usage - and clearly worsened responsiveness. The non-moving GC could greatly enhance responsiveness - but increased the RAM footprint tremendously, as well as introduced delays in the forging loop. In conclusion: the existing default is still the best choice by far for cardano-node - validated both on GHC8.10.7 and GHC9.6.3.

Development

The work on moving benchmark profile, and genesis, definitions out of the bash scripting / JSON data transformation space is still ongoing. Type safety and a test suite for those tasks will allow for a much more principled approach.

The implementation of additional rendering formats and report templates for our reporting pipeline has been completed; it is currently in testing and validation phase.

Workbench

We're working on integrating new cardano-cli functionality in our automations. Injecting DRep delegations into genesis - for Conway ledger benchmarks - will require us to use a new CLI command, which differs in in output structure and options provided from the one we're using to inject stake pool delegations. This requires us to implement and additional post-processing step for backends to find everything as expected.

Furthermore, a PR has been merged which refactors and cleans up benchmarking profiles, with a focus on fine-tuning solo-node benchmarks which scrutinize a single cardano-node process.

Tracing

The test suite for cardano-tracer's new handle registry feature is complete, and the new feature passes all tests. At the moment, we're preparing it for merging into master.

UTxO Growth

We're developing a series of benchmarks that will provide insight into possible changes to the Node's performance characteristics given different UTxO set sizes and numbers of delegated wallets. What we aim to capture in these benchmarks is the system's capability to scale with UTxO growth - while simultaneously evaluating hardware requirements. The workloads will be based on existing release benchmarks, but allow for flexibility regarding UTxO set and delegations. They will target the existing in-memory solution, and at the same time permit feasability testing UTxO-HD's on-disk flavour - which does not keep the entire UTxO set in RAM permanently.

Nomad cluster

Implementation of cluster machine disk space checking and garbage collection is complete. A requirement was that no monitoring process interferes with a running benchmark, so a non-synchronous approach was chosen to guarantee enough disk space. This prevents failing runs, and thus the necessity to repeat them.

In the process, the workbench backend was equipped with a wider range of cluster commands and abstractions, which makes administrating cluster machines more flexible. This includes a new service to create a network latency matrix for deployed cluster hardware - generalizing the approach chosen during the Nomad cluster's initial validation phase. This can guarantee the validity of existing baselines in case of hardware reboots, or changes in topology.

Last not least, the backend is currently receiving an additional feature: supporting more than 1 hardware cluster. This will enable us, in the future, to benchmark on ephemeral clusters - without interfering with the hard requirements, or the schedule, of release benchmarking on our default deployment. The motivation is being able to benchmark different hardware configurations, along with varying cardano-node options and initial ledger states on a parallel schedule - also, without having to keep those clusters running at all times.

· One min read
Damian Nadales

High level summary

  • Completed the rebase of the production libraries for UTXO-HD on 8.9, both in ouroboros-consensus, cardano-api and cardano-node.
  • Measured sync and replay times and memory in UTXO-HD. The latest result are reported here.
  • Bugfixed the snapshot interval.
  • Added an extra case to isIncorrectClaimedFlag for Babbage and Conway eras.
  • Added a db-analyser analysis to get the UTXO size per slot. The result of the analysis is illustrated here.
  • Started integration work for Node release 8.10.
  • Reviewed the Genesis pull-requests submitted by Tweag. They are pending a final round of review.
  • Helped the current release engineer prepare the 8.9 release candidate.
  • The Consensus Team has also been helping troubleshoot known issues with 8.9 (eg snapshots causing missed leadership schedules, unexpected snapshot interval, integration tests, etc).

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team kept implementing the data type for certifying Cardano transactions within Mithril networks: they worked on adapting the Mithril explorer to support Cardano transaction verification, started implementing a more efficient transaction signing scheme, stabilized the type names in the API, and kept investigating a bug that prevents the signature of some Conway era transactions. Additionally, they have completed the first version of the Prometheus monitoring endpoint for the signer.

Finally, the team fixed a bug occuring in the publication of the npm packages of the client, enhanced the HTTP tests of the aggregator, and kept working on the KES period computation in the Pallas chain observer.

Low level overview

  • Completed the issue Expose Prometheus metrics for Mithril signer #1096
  • Completed the issue Make HTTP server tests more robust #1524
  • Completed the issue Stabilize namings in Cardano Transactions API #1535
  • Completed the issue Reorganize crates in the repository #1528
  • Worked on the issue Implement Cardano Transactions in explorer #1497
  • Worked on the issue Implement a Block Range Merkle Tree for Cardano Transactions #1533
  • Worked on the issue Output CLIs logs to stderr #1515
  • Worked on the issue npm publish fails on latest when next exists #1531
  • Worked on the issue Cardano transactions are not all signed in testing-sanchonet #1537
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Worked on the issue P2P threat modeling and risk analysis #1350