Skip to main content

· 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.

· 2 min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Sanchonet state was respun from slot 14255995 for cardano-node 8.8.0-pre
  • Cardano node 8.8.0-pre is now deployed to sanchonet, shelley-qa, two-thirds of preprod and one-third of preview networks
  • IOG pool block producers are now signing mithril certificates for preview, preprod and mainnet networks
  • A cardano performance dashboard is now available for both playground and cardano-mainnet deployments

Lower level summary

Cardano-mainnet

  • Adds mithril signers and perf dashboard to the mainnet cluster; improves network docs, tunes alerts, plus misc fixes: cardano-mainnet-pull-8

Cardano-parts

  • Adds mithril signer capability to role-block-producer nixosModule, adds a profile-mithril-relay nixosModule and includes misc other improvements and fixes: cardano-parts-pull-31

  • Updates packages for sanchonet respin, adds a node performance dashboard template and fixes misc issues: cardano-parts-pull-32

Cardano-parts

  • Adds mithril signers and mithril relays to preview and preprod networks and includes misc other improvements and fixes: cardano-playground-pull-15

  • Updates machines and pin for sanchonet respin, adds a node performance dashboard and fixes misc issues: cardano-playground-pull-16

Iohk-nix

· 2 min read
Carlos LopezDeLara

· 3 min read
Alexey Kuleshevich

High level summary

Last few weeks were spent mostly on implementing various fixes, writing tests and improving capabilities of our testing frameworks. Important bug fixes are:

  • Retention of Anchor for proposal procedures in the ledger state in order for users to be able to query the node for those anchors
  • JSON serialization of rational numbers in protocol parameters and governance procedures are encoded without loss of precision

Feature wise, we've added a new protocol parameter that controls the contribution of reference scripts sizes in the transaction fee calculation formula.

Major achievement that is worth announcing is a Haskell package named cuddle that we developed over the last few months. Soon we will be transitioning to specifying CDDL in Haskell for all eras using that package. It will be used to compile the CDDL specification that developers in the community rely on so much. There are enormous benefits in using this tool, when compared to writing CDDL specification manually. Namely it allows us to reduce duplication and reuse common and unchanged specification from previous eras. It also improves safety and correctness of our specification and decoders, because it ensures that the specification is well typed and it uses QuickCheck to generate random data for validating that our decoders are implemented according to the spec.

Low level summary

Conway

  • pull-4031 - Further proposals improvements. Take 2
  • pull-3996 - Index aware PlutusPurpose
  • pull-3983 - Include reference scripts size in min fee calculation
  • pull-4040 - Redeemers serialization fixes
  • pull-4033 - Make Conway-specific queries only available in Conway
  • pull-4028 - Embed ProposalProcedure in GovActionState
  • pull-4056 - Reduce duplication in Conway UTXOW rule
  • pull-4055 - Update MinFeeRefScriptCoinsPerByte.
  • pull-4053 - Rename committeeQuorum to committeeThreshold
  • pull-4058 - Fix ToJSON instance of BoundedRatio to avoid precision loss
  • pull-4070 - Rename AsIndex to AsIx
  • pull-4065 - Remove ConwayPool rule definition

Improvements

  • pull-4037 - Add capability to hash Plutus scripts directly
  • pull-4030 - Report Plutus ScriptHash upon execution failure

Testing

  • pull-3895 - Constrained v2
  • pull-3981 - Test proposals rewrite
  • pull-4051 - Full support of random and quickcheck-transformers in impTest
  • pull-4050 - Fixed the "All Tx are valid on traces of length 150" intermittent bug
  • pull-4049 - Support for Plutus scripts in ImpTest
  • pull-4075 - Discontinue the mingw target in the nix build
  • pull-4072 - Fix ouroborus-consensus serialization roundtrip test
  • pull-4080 - Test that a resigned CC cannot be reelected without removal
  • pull-4083 - Fix flakyness at the cost of turning test on during development
  • pull-4084 - Fix intermittent test failures in leader-proportion test

Specification

  • pull-4015 - Shelley ledger spec: amend erratum on nonce stabilization window
  • pull-4064 - Fix wrong prose for new epoch environment
  • pull-4081 - Fix MIR rule using wrong values for treasury and reserves

Releasing

· 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 completed the upgrade of the client library and the CLI to support the verification of Cardano transactions. They also released the new Mithril network running on SanchoNet. Additionally, the team rolled out a new feature of the Pallas chain observer (that now supports the retrieval of Mithril era markers), and kept investigating some flakiness occurring in the CI end-to-end tests.

Finally, the team kept working on the threat modeling and risk analysis for the Mithril network and updated the Mithril network architecture documentation.

Low level overview

  • Published a development blog post Mithril SanchoNet network released
  • Completed the issue Implement transactions verification in client library #1468
  • Completed the issue Implement Cardano Transactions commands in the client binary #1469
  • Completed the issue Create a test network on SanchoNet #1173
  • Completed the issue Update Mithril network architecture documentation #1488
  • Completed the issue Upgrade http dependency #1474
  • Completed the issue Extract database feature from common crate #1492
  • Worked on the issue P2P threat modeling and risk analysis #1350
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Worked on the issue Some end to end tests are flaky in the CI #1147
  • Worked on the issue Add an example crate for the CardanoTransactions type #1495
  • Worked on the issue Generate automatic documentation for CLIs #1471