Skip to main content

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team kept implementing a new data type for certifying Cardano transactions within Mithril networks. They worked on enhancing the client CLI output and almost completed the support for the verification of Cardano transactions in the browser with the WASM client. The team also worked on a new feature of the Pallas chain observer to support stake distribution retrieval, and fixed the majority of the flakiness occurring in the CI end-to-end tests. Additionally, they have deployed the new Mithril network running on SanchoNet.

Finally, the team created a new example crate for using the client library to verify Cardano transactions, kept working on the threat modeling and risk analysis for the Mithril network, and completed their new tool for automatic documentation generation for the CLIs.

Low level overview

  • Worked on the issue Implement Cardano Transactions commands in the client binary #1469
  • Worked on the issue Implement Cardano Transactions verification in the WASM client #1470
  • Worked on the issue Some end to end tests are flaky in the CI #1147
  • Completed the issue Re-spin Sanchonet network #1503
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Completed the issue Add signing capabilities to the root route of the aggregator #1496
  • Worked on the issue P2P threat modeling and risk analysis #1350
  • Completed the issue Add an example crate for the CardanoTransactions type #1495
  • Worked on the issue Unify test folder generation #1508
  • Completed the issue Generate automatic documentation for CLIs #1471

· 2 min read
Marcin Szamotulski

High-level overview of sprint 55

This sprint the networking was nominated for the Cardano Release Engineer role and we've been working on the integration of bootstrap peers with cardano-node. This is a work in progress: cardano-node-5485. cardano-node-8.9 will be the first node which supports the bootstrap peers feature, but we anticipate additional improvements needed before this is used at scale.

We disabled mean reward for new peers in the churn mechanism which was hurting connection in remote destinations. Thanks to Karl Knutsson (CF) for providing evidence and a patch. In future, this mechanism will be further changed, but this requires more analysis. ouroboros-network#4800

We continued working on tx-submission, ouroboros-network#3311

We welcome Marcin Wójtowicz as part of the Networking Team of Cardano Core Tech. He reviewed our documentation as part of his onboarding process: ouroboros-network#4802.

Andrew Westberg (DripDropz) corrected documentation regarding which node-to-node protocol version introduced P2P.

Low-level summary

Open Source Contributions

IOSim

We released io-sim-1.4.1.0 with some new features & improvements:

· One min read
Sebastian Nagel

High-level Summary

This week, the team made finally progress on the model based testing framework (and reproducing a bug) by fixing issues related to fully validating Cardano transactions. They also enabled continuous deployment of hydra-explorer to http://explorer.hydra.family/heads, facilitating easier access for users. Furthermore, they improved code quality by incorporating Haskell linting into their CI workflow and addeda user-ished conversion of HeadId to CurrencySymbol.

What did the team achieve this week

  • Fixed model based testing framework to fully validate Cardano transactions
  • Enabled continuous deployment of hydra-explorer to http://explorer.hydra.family/heads
  • Identified need for cardano-node 8.8 and cardano-api 8.38 (breaking changes) to continue integration with Conway networks
  • Added Haskell linting to our CI workflow - Minor addition to convert HeadId into CurrencySymbol #919
  • Reviewed a small refactor PR on our model-based test runner #1300

What are the goals of next week

  • Fix the fanout after contest bug
  • Bite the bullet and have a non-mainnet compatible master to complete smoke tests on sanchonet
  • Specify the on-chain validators for incremental decommits

· 3 min read
Michael Karg

High level summary

  • Benchmarking: Release benchmarks for 8.8.0 have been performed; we created a local repro for a residual issue.
  • Performance: We've implemented and benchmarked two candidates investigating residual issues with GHC9.6.
  • Development: Work on the reporting pipeline is ongoing; integration of DReps into benchmarking workloads has begun.
  • Workbench: Implementation of high-level profile definition is ongoing.
  • Tracing: The handle registry feature for cardano-tracer is completed; currently in testing.
  • Nomad cluster: Increased robustness of deployment and run monitoring has been merged; work on garbage collection has started.

Low level overview

Benchmarking

We've performed a full set of release benchmarks for Node 8.8.0-pre. Comparing with release 8.7.2, we could not detect any performance risks for that version. We even saw a slight improvement in block fetch related metrics, which led to slightly improved block diffusion times.

Furthermore, we've managed to boil down a complex residual performance issue measured on the cluster to a local reproduction. This enables our DevX team, with highly specialized knowledge of GHC's compiler internals, to investigate each step in code generation and optimzation, and independently observe the effects of code changes to the affected component.

Performance

Work on the remaining performance issue with GHC9.6 led us to produce two candidates based on Node 8.7.2, benchmarking the implacations local small changes have for GHC9.6's optimizer. Though those candidates did not uncover the issue's root cause, they were able to disprove a hypothesis as to its nature, and quantify the performance impact of said small changes.

Development

Node 8.8.0 comes with capabilities to inject DReps and DRep delegations into Conway genesis. We've started work on integrating those into our automations, and setting sensible values for benchmarking. The aforementioned delegations representing a new data structure in the Conway ledger, we aim to run existing workflows extended with varying sizes of that new structure, measuring their pressure on ledger queries and operations.

Workbench

The performance workbench relies heavily on shell scripting and manipulating JSON data for a great part of its features. This approach is very effective for quick experimentation, but lacks in verifiable properties as well as accessibility for new users of workbench.

After the successful Haskell port of cluster topology creation, and verification, we're currently applying the same model in porting the entirety of benchmarking profiles to Haskell. The obvious gains are widening workbench's audience both for users and developers, as well as implementing a principled approach to all workbench data structures and transformations.

At the same time, we're porting workbench's many options to create fine-tuned geneses, following the same approach.

Tracing

We've outfitted cardano-tracer with a handle registry feature that lets the service work on file handles internally, rather than opening and closing files for each operation. The feature is completed; at the moment we're adding appropriate test cases to the service's test suite for validation of its behaviour, and for safeguarding future development.

Nomad backend

Several improvements for our cluster backend have been merged to master, increasing its overall robustness. We can now safely handle some corner cases where Nomad processes unexpectedly exited, or deployments errored out. Furthermore, an ongoing run can now reliably survive a temporary loss of heartbeat connection between Nomad client and server, without the benchmarking metrics being affected.

Currently, we're working on a reliable automation of garbage collecting old nix store entries on the cluster machines, as they fill up disk space. The design has to consider both not interfering with ongoing benchmarks, and avoiding deployment overhead caused by cleaning the store too frequently.