Skip to main content

· 3 min read
Michael Karg

High level summary

  • Benchmarking: Release benchmarks for Node 9.0; Plutus execution budget scaling benchmarks.
  • Development: Improved shutdown behaviour for tx-generator merged to master. Work on governance action benchmarking workload is ongoing.
  • Workbench: Haskell profile content definition merged to master.
  • Tracing: Factoring out RTView was merged to master. Work on metrics naming ongoing, minimizing migration effort.
  • Consensus QTAs: Design for automating and data warehousing beacon measurements is complete.

Low level overview

Benchmarking

Runs and analyses for a full set of release benchmarks have been performed - and published - for Node version 9.0.0. Comparing with the latest mainnet release 8.12.1, we could not observe any performance regression. 9.0.0 exhibits an improvement in Block Fetch duration, which results in slightly better overall network performance.

Additionally, we've performed scaling benchmarks of Plutus execution budgets. In these series of benchmarks, we measure the performance impact of changes to those budgets in the protocol parameters. Steps (CPU) and memory budgets are scaled independently of each other, and performance testing takes place using Plutus scripts that either are heavy on allocations but light on CPU, or vice versa. These performance tests are meant to explore the headroom of those budgets, taking into account cost model changes, and recent optimization capabilites of the Plutus compiler.

Development

Our workload submission service tx-generator has been equipped with the ability to handle POSIX signals for graceful shutdown scenarios. Furthermore, as it is highly concurrent, error reporting on a per-thread basis has been added, enhancing feedback from the service. Along with some quality-of-life improvements, these changes have landed in master.

The Conway governance action workloads for benchmarking have completed design phase, and we've settled on an implementation plan. Implementation work itself has started.

Workbench

Generating the contents for any benchmarking profile has now become a dedicated Haskell tool, cardano-profile, which has landed in master. Adding type safety and a test suite to profile definitions is a major improvement over shell code that directly manipulates JSON objects. Furthermore, it makes reliably modifying, or creating, benchmarking profiles much more accessible to engineers outside of our team.

Tracing

With factoring out RTView, and making it an opt-in component of the cardano-tracer build, we've reduced the service's dependency graph significantly. Furthermore, the service has become more lightweight on resources. We'll continue to maintain RTView, and guarantee it will remain buildable and usable in the future.

Aligning metrics naming and semantics of new and legacy tracing is ongoing work. This task is part of a larger endeavour to minimize the effort necessary for users to migrate to the new system.

Consensus QTAs

beacon, which currently measures performance of certain ledger operations on actual workload fragments, is a first step in building a benchmarking framework based on Delta-Q system design and quantitative timeliness agreements. We've finished the design of how to automate those measurements at sensible points in time, and provide a storage schema which will enable access and analysis that fits with the framwork.

· 2 min read
Marcin Szamotulski

High-level overview of sprint 66

We held The Network Working Group (NWG) in the last sprint. Below, we share recordings of this and earlier NWG meetings, which introduce basic notions of ouroboros-network. These recordings should be accessible to a technical audience.

Introduction to Ouroboros Network, NWG, part 1

Introduction to Ouroboros Network, NWG, part 2

Tx-Submission

We continued working on the new design of tx-submission. We progressed in writing a new tx-submission server (inbound side of tx-submission protocol) instrumented by decision logic. The next step is writing a simulation that runs N-pairs of client-server communications in which the same decision logic governs all servers - emulating the behaviour of cardano-node once the new tx-submission is integrated. For more details, see ouroboros-network#3311

Genesis integration

All outstanding PRs related to Genesis have been reviewed and accepted. Soon they will be merged.

Mithril Integration

We presented ideas on how to run mithril functionalities with cardano-node while taking into account the risks that such integration would impose on the system. The technical description will be part of a CIP, which will then go to the Technical Steering Committee (TSC) for an evaluation.

Smaller tasks

Open-Source contributions

We found out and fixed a bug in the iproute parser of IPv4 addresses:

  • Check that IPv4 addresses terminate, iproute#63
  • IPv4 address with mask should not contain a white space, iproute#64

· One min read
Carlos LopezDeLara

· One min read
Noon van der Silk

High-level summary

This week, the Hydra team made significant progress on incremental decommits by closing the last gaps and cleaning up the specification. They collected scenarios and prepared for incremental commits, updated dependencies for compatibility with cardano-node 9.0.0, and continued tidying up documentation. Work continued on an easy spin-up of the getting-started demo via process-compose. Additionally, the team onboarded a new contributor and held an early design meeting about payment channels and Blockfrost. They also refined the SDK wallet idea.

What did the team achieve?

  • Incremental decommit progress: closed last gaps, cleanup specification #1483
  • Collected scenarios and preparing for incremental commit #1484
  • Updated dependencies, compatibility cardano-node 9.0.0 #1481
  • Continued documentation tidyups
  • WIP easy spin-up of the getting-started demo via process-compose #1503
  • Onboarded new contributor
  • Early design meeting about payment channels and Blockfrost #1305
  • SDK wallet idea refinement #1509

What's next?

  • Merge and release incremental decommit
  • Continued work on incremental commit
  • Support Hydra demo at Rare Evo
  • Have a Head open on preview to see it working through the upcoming hard fork

· 2 min read
Alexey Kuleshevich

High level summary

While we are waiting for Chang hard fork we are focusing on as much testing as possible. Therefore all work that was done mostly related to writing unit tests and conformance testing.

Low level summary

Features

  • pull-4480 - Add mkTermToEvaluate on PlutusLanguage class

Testing

  • pull-4464 - constrained-generators: fix incorrect size computation in sets
  • pull-4472 - constrained-generators: fix map generator for simple cases
  • pull-4482 - constrained-generators: turn off leaky test until we can fix it
  • pull-4467 - Conformance CERT: plumbing and translation
  • pull-4475 - Remove duplicate testing of Alonzo and Shelley in Conway
  • pull-4478 - Remove unused variable in non-integral reference code
  • pull-4473 - Make ErrorSpec take a (NonEmpty String) rather than [String]
  • pull-4488 - Handle forks in the branch-history GitHub CI job
  • pull-4469 - Conformance DELEG: Extract Deleg ExecSpecRule and SpecTranslate instances
  • pull-4484 - Conformance GOV: translate and adjust
  • pull-4474 - Conformance test plumbing: CERTS
  • pull-4492 - Remove some unnecessary allocations

Infrastructure and releasing

  • pull-4479 - Add changelog entries for cardano-node-9.0
  • pull-4476 - Bump certifi from 2023.7.22 to 2024.7.4 in /doc