Skip to main content

· One min read
Marcin Szamotulski

Overview of [sprint 73][sprint-73]

Ouroboros-Network-0.18 release

We released ouroboros-network-0.18. The main features are:

  • integration with typed-protocols-0.3
  • cardano-client library doesn't depend on the non-p2p stack
  • We expose connectToWithMux family of functions in ouroboros-network which give access to the underlying [Mux handle][mux-handle].
  • Added NodeToClientV_19: to support the new GetLedgerPeerSnapshot query in local-state-query mini-protocol [ouroboros-consensus#1067].

See full [the list of PRs][ouroboros-network-0.18] included in this release. ouroboros-network-0.18 was integrated with ouroboros-consensus ([ouroboros-consensus#1223])

Tx-Submission

We continued working on tx-submission and monitoring its performance.

Ouroboros-Network - Mithril Design

We internally discussed how to support the [Mithril design][cip#137]. In In the near future, we will be able to socialise the report we've been working on.

Code Refactoring

We reorganised some of our substysems to use qualified imports with simplified names:

  • [ouroboros-network#4990] (connection-manager, inbound-governor)
  • [ouroboros-network#4997] (network-mux)

We also removed deprecated APIs in [ouroboros-network#4998]sim#182]

· 2 min read
Alexey Kuleshevich

High level summary

We implemented the remaining improvements and fixes discovered in Conway, to be fixed during the bootstrap period:

* protection against deposit loses
* ensuring that DReps exist before delegating
* updates to SPO vote threshold calculation
* improved well-formedness check

Additionally, we added two new rules: Mempool and HardFork, that will allow us to flexibly add processing logic in the future. We also dropped pointers for Conway and enhanced predicate failure reporting for pre-Conway eras.

Finally, we added more tests - both unit and conformance tests.

Low level summary

  • pull-4647 - Drop pointers from UMap in Conway
  • pull-4642 - Mempool rule
  • pull-4553 - Address issues in auto-generated CDDL specification
  • pull-4650 - Check ppuCoinsPerUTxOBytes well-formedness
  • pull-4648 - Updated conformance to work with new MAlonzo types
  • pull-4653 - Improve color output in Imp spec
  • pull-4603 - Add more tests for voting behaviour
  • pull-4639 - Prevent non-registered return accounts for proposals' deposits and TreasuryWithdrawals
  • pull-4632 - Export Unsafe constructors for TxBody, TxBodyRaw and MemoBytes
  • pull-4654 - Add applyTxOpts to ApplyTx
  • pull-4657 - HardFork rule
  • pull-4659 - Change how SPO votes are counted
  • pull-4660 - UTXO conformance with Babbage transactions
  • pull-4652 - Ensure dreps exist prior to delegation
  • pull-4649 - Mismatch type for predicate failures
  • pull-4676 - constrained-generators: (++.) and singleton_ for lists
  • pull-4679 - Fixes for release

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team continued working on decentralizing the signature orchestration of the Mithril network. They completed the implementation of the autonomous computation of the messages to be signed by the signer and worked on adapting the way some signing configuration is broadcast to the signers. They also kept working on preparing for the new Pythagoras Mithril era.

Finally, they started working on refactoring the Prometheus metrics in the signer, fixed some minor bugs, implemented some optimizations on the node logs and the aggregator REST API, and made the Cardano transaction client stable.

Low level overview

  • Completed the issue Signer computes what to sign on its own #1925
  • Completed the issue Upgrade to Cardano 9.2.1 #1968
  • Completed the issue Handle signatures sent too late in the signer #1976
  • Completed the issue Refactor Certifier service to sign and send signatures in signer #1945
  • Completed the issue Make epoch non optional in RegisterSignerMessage #1956
  • Completed the issue Configuration of block producer and relays is broken in infra #1984
  • Completed the issue Mithril explorer does not display properly on Chrome for Android phone #1944 #1944
  • Worked on the issue Aggregator uses stored signing configurations when creating signed entity type #1961
  • Worked on the issue Prepare new Pythagoras Mithril era #1946
  • Worked on the issue Refactor Prometheus metrics for signer #1990
  • Worked on the issue Aggregator uses stored signing configurations when creating signed entity type #1961
  • Worked on the issue Enhance readability of node logs #1981
  • Worked on the issue Make Cardano transactions stable in client #1952
  • Worked on the issue Remove chain calls from register-signer route #1982

· One min read
Kostas Dermentzis

High level summary

The DBSync team has fixed issues of the latest release, related to offchain data, wrong pool_stat fields, invalidated votes. We also added a requested feauture, which optionally adds a new address table, separating the address from the tx_out table. Finally we worked with the ledger team for memory improvements and introducing ledger events for DBSync.

Lower level summary

Older missing summary

Previously, the DBSync team prepared release 13.5.0.2 which passes the HF and brings all new governance functionality.

· 3 min read
Michael Karg

High level summary

  • Benchmarking: New GHC9 benchmarks for Node 9.2.
  • Development: Progress on Governance action workload.
  • Workbench: Switch to Haskell-based profile content generation is imminent, along with significant code cleanup.
  • Tracing: New major release: cardano-tracer-0.3; metrics alignment is ongoing.
  • Consensus QTAs: Automation setup and implementation for beacon is complete, entering testing.

Low level overview

Benchmarking

The GHC team has been busy investigating the optimization behaviour of GHC9 vs GHC8 on the Cardano code base. It appears that speculative evaluation (a feature absent from GHC8) can, in some cases, lead to overeager evaluation - and hence to an unnecessary performance impact on the system. We've created a build of the Node with a patched version of GHC9.6 which disables speculative evaluation for these cases only - and then we've run our release benchmark workloads on a cluster of those nodes. The raw data is still under analysis, but initial results look promising.

Development

The new governance action / voting workload for cluster-wide benchmarks is still under works. Our submission service tx-generator is now able to assume the identity of all registered DReps to sign votes. Currently, we're working on defining (and correctly throttling) a stream of those votes, such that a constant number of open proposals keep receiving votes throughout the entire benchmarking run.

Workbench

The Haskell service to create benchmarking profile content, cardano-profile, has been in beta use for some time now. It has proven to be much more maintainable, and its approach to declare profile content is much more principled than the existing implementation with jq / bash. We've decided to switch to that service for good, including a final validation of all possible profiles between implementations. In the same go, we'll take the opportunity to remove some bulky parts of workbench which were motivated by the jq implementation, as well as simplify the corresponding nix evaluations (and redundant shell invocations).

Tracing

Further adjustments to the metrics naming schema in the new tracing system is ongoing.

For cardano-tracer, several PRs have successfully landed. EKG monitoring is now capable of serving many metrics stores from just one process. Prometheus exposition has been made OpenMetrics compliant. The space leaks in the forwarding backend have been verifiably closed, and the log rotation issue has been resolved. Thus, cardano-tracer will see (alongside the next Node release) a new major release 0.3. This release is considered to be 100% production-ready.

Consensus QTAs

beacon - a first step in building a benchmarking framework based on Delta-Q system design - has received a fully functional automation. According to the design we settled on 3 months ago, it's now possible to test, manage, and deploy a nix service for a self-hosted GitHub runner which performs beacon benchmarks on pre-defined workload fragments. The runner can be triggered automatically or manually. As the nix service will likely share a host with other, potentially resource intensive tasks, a locking mechanism is implemented to prevent distortion of the measurements. The automation is now entering testing phase.