Skip to main content

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

  • Cardano-node 8.9.0 is now deployed to all environments.

  • A new profile-cardano-db-sync-snapshots nixosModule is available for snapshotting dbsync state.

Lower level summary

Cardano-mainnet

  • Updates cardano node and cli pre-release (-ng) to 8.9.0. Adds a new cardano-db-sync snapshots server. Bumps mithril and enhances mithril usability with IOG trusted pool signature verification for clients and mithril verifier service for signers. Adds miscellaneous other small improvements, bug fixes and tuning. See the pull request description for more details: cardano-mainnet-pull-8

Cardano-node

Cardano-ops

  • Bumps to cardano-node 8.9.0, fixes metadata server module, removes the legacy snapshots server: cardano-ops-compare

Cardano-parts

  • Updates cardano node and cli pre-release (-ng) to 8.9.0 and enables new bootstrapPeers features and compatibility in the topology functions. Bumps mithril and enhances mithril usability with IOG trusted pool signature verification for clients, mithril verifier service for signers, mithril capability for process-compose and node entrypoint jobs. Adds miscellaneous other small improvements, bug fixes and tuning. See the pull request description for more details: cardano-parts-pull-34

Cardano-playground

  • Updates cardano node and cli pre-release (-ng) to 8.9.0. Bumps mithril and enhances mithril usability with IOG trusted pool signature verification for clients, mithril verifier service for signers, mithril capability for process-compose and node entrypoint jobs. Adds miscellaneous other small improvements, bug fixes and tuning. See the pull request description for more details: cardano-playground-pull-18

Govtool

  • Fixes a coalesce function sql query bug in the govtool backend: govtool-commit

Iohk-nix

  • Adds support for bootstrap peers and sanchonet mithril configuration: iohk-nix-pull-574

Sanchonet-demo

  • Bumps cardano-parts for cardano-node 8.9.0 and brings the justfile demo recipes up to 8.9.0 compatibility: sanchonet-demo-compare

· 3 min read
Alexey Kuleshevich

High level summary

Focus has been on testing: adding tests and improving our testing framework to make it easier to write tests for various Conway features. We also did some cleanup and reorganisation of code, to make it more manageable and easier to release. We have started work on Hardfork Initiation: support for intra-era hardfork initiation and necessary updates the SPO stake distribution calculation.

Low level summary

Conway

  • pull-4140 - Intra era hardfork initiation
  • pull-4154 - SPO stake distr calc for HardForkInitiation
  • pull-4150 - Add ConwayUtxosPredFailure
  • pull-4162 - Add ConwayDRepIncorrectRefund and tests for GovCert
  • pull-4112 - Fail when conway features are present in transactions that use Plutus v1/v2
  • pull-4164 - Change hot credential representation in CommitteeState
  • pull-4178 - Remove code repetition in Conway era CDDL

Testing

  • pull-4096 - Add a collection of test Plutus scripts for use in ImpTests
  • pull-4144 - Add imptests for delaying actions enactment
  • pull-4104 - Governance policy tests
  • pull-4123 - Add the ability to do constraints over trees in constrained-generators
  • pull-4163 - Reorganise GovSpec, add GovCertSpec
  • pull-4152 - Add extra type-safety to ensure that all predicate failures have roundtrip tests
  • pull-4172 - Add imptests for some more GOV predicate failures
  • pull-4139 - Add extra time from 1 sec to 2 sec for prop_soundness test.
  • pull-4173 - Update profiling instructions
  • pull-4177 - Plutusv3 initialization tests
  • pull-4155 - Fix nightly build failures

Improvements

  • pull-4141 - Add boom placeholder
  • pull-4157 - Split Conway governance
  • pull-4188 - Simplify implementation of ToJSON1 of ListMap
  • pull-4129 - Modify PParams to use similar naming to ProtocolParams in cardano-api
  • pull-4160 - Make shelley TxWits consistent with other eras
  • pull-4168 - Add missing InjectFailure instances for ConwayUtxosPredFailure
  • pull-4086 - Change applySTS to return NonEmpty (PredicateFailure s)
  • pull-4176 - Add CARDANO_MAINNET_MIRROR to Nix shell
  • pull-4174 - Convert small-steps-test into a sublibrary
  • pull-4159 - Shelley rules cleanup

Specification

  • pull-4042 - Fix the prose being inconsistent with the figure
  • pull-4151 - Fix an issue with txinfo and unusual notation in Babbage UTXO rule

Releasing

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