Skip to main content

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team kicked off a new project together with Catalyst, the Cardano Foundation and researchers from IO: a proof of concept for voting on Hydra. The concluded work on validating the Head protocol using model-based testing and formulated next steps, fixed the transaction cost benchmark reporting on the website and reduced the cost for commit transactions by ~30% with the help of reference scripts.

The year is coming to an end and velocity will slow down a bit while the team focuses on wrapping up loose ends. The updates here will pause until January 2023.

What did the team achieve this week

  • Kicked-off Hydra Voting project with Catalyst, CF, and IO Research.
  • Reduce commit transaction costs by ~30% with reference scripts.
  • Prepared an RFP for external audit of the Hydra Head solution.
  • Fixed transaction cost benchmarks for abort tx #631.
  • Recorded decision to use model-based testing (ADR22) and improved Model documentation.
    • Concluding the first increment on Validate coordinated Head protocol #194.
    • Formulated next step / follow-up on testing the Soundness property of our protocol #656.
  • Switched to using nix flakes for development setup and CI build #646.

What are the goals of next week

  • Push ADR21 & tx validity gap over the finish line (smoke tests missing).
  • Integrate the hydra-tutorial.
  • Have a LaTeX write-up of the HeadV1 (Coordinated Hydra Head) spec.
  • Close & recap on the year with another monthly report (+ blog post).

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team has released the new distribution 2248.1 of their nodes. They have published the first version of the Mithril cryptographic library on crates.io, the Rust community’s crate registry. They have implemented an optimization on the individual signatures that no longer embed the verification key and stake. They have also enhanced their testing strategy by implementing a workflow that tests that the client binaries produced for multiple platforms (Linux, MacOS and Windows) are able to verify and restore snapshots.

Finally, they have kept on simplifying the aggregator node's multi-signer by removing the signer registration and the certificate creation from its responsibilities.

Low level overview

  • Implemented removing verification key and stake from single signatures #619
  • Completed the extraction of the signer registration from the multi-signer #642
  • Completed the extraction of the certificate creation from the multi-signer #638
  • Implemented a workflow to test client binaries (Linux / MacOS / Windows) #601
  • Completed the signature of the artifacts produced by the CI #587
  • Fixed the protocol parameters transition #627
  • Worked on optimizing the snapshot digest computation #510
  • Worked on enforcing the API protocol versions in the client and signer #633
  • Worked on deactivating the non certified signer registration mode #621
  • Worked on the re-genesis of the test networks #651

· 3 min read
Damian Nadales

High level summary

During the past two weeks, the Consensus team finalized the QSM tests for the backing store and Mempool on the UTxO-HD branch with important discoveries regarding parallel QSM testing. We also worked with the Ledger team to envisage the modifications that are required in Ledger and Consensus to accommodate the changes in the crypto VRF and KES. The db-analyser now supports bechmarking the ledger operations, which will allow us to identify, debug, and profile potential performance problems. We drafted a document that defines how to manage the versions of Consensus-related packages. The top level documentation of ouroboros-network now features a description of the consensus components and provides a hyperlinked map to the modules documentation.

Workstreams

UTxO HD prototype

Whereas we had passing sequential state-machine tests for the mempool, the parallel case proved to be more challenging than we thought. The operation of adding a list of transactions to the mempool is not atomic and, as a result, when adding a list of transactions, transactions from other processes can be added in between. The mempool implementation handles this correctly, however this required us to redesign the parallel model we had to take the lack of atomicity into account.

Backing store property tests

We finished refactoring the backing store property tests. The second review round is ongoing.

LSM tree implementation

We are working on benchmarking (in terms of time and number of IO operations) fetching/looking up data from disk.

Genesis

We worked on the design of a mechanism to prevent a DoS attack on our Genesis design related to rollbacks. This was arguably the biggest outstanding question.

During the discussions around Genesis, we noticed a design boundary that nicely delineates a fundamental component. We almost have a full Haskell prototype of it. It will be very nicely self-contained, perhaps even usable in the ultimate implementation!

New VRF and KES crypto integration

We collaborated with the Ledger team on preparing the ledger state and crypto types to avoid huge allocation on the epoch boundary when changing aspects of the crypto that will only manifest in headers, not in the ledger states.

Technical debt

We merged the pull-request that adds a support to db-analyser for benchmarking ledger operations. This will allow us to identify, debug, and profile potential performance problems. The benchmark focus on the main 5 ledger operations that are involved in chain syncing, block forging, and block validation, namely:

  1. Forecast.
  2. Header tick.
  3. Header application.
  4. Block tick.
  5. Block application.

The following figure shows a plot of the benchmarking results for the first 65 million blocks (approximately) of the Cardano chain. The thin yellow lines under the x-axis show the epoch boundaries, whereas the thick yellow lines correspond to the era transitions.

As we can see in this figure, era and epoch boundaries require more computation time. The ledger team are aware of this problem, and we are working to improve this situation.

Fostering collaboration

We drafted a document motivating and defining how Consensus (and possibly other core teams) will/should manage our package versions. This pull-request garnered many great discussions from our team members and other teams too: Sebastian Nagel, Arnaud Bailly, Michael Peyton-Jones, Ziyang Liu, et al. We want to thank you all for your input, and we found this discussion very enlightening!

We merged the pull request that adds an overview of consensus to the top level documentation of ouroboros-network. This overview describes the consensus components and adds a hyperlinked map to the modules documentation.

· One min read
Kostas Dermentzis

High level summary

The DBSync team continued testing release 13.1.0.0. The QA team has reported that no issues have been found. The DBSync team also worked on cherry-picks back to master and on fixing bugs.

Lower level summary

  • Release is cherry-picked back to master, which uses the new rollback mechanism which uses reverse indexes, same as the release #1320 This also fixes a bug number of issues on master.
  • Depenencies upgrade and CHaP integration #1324
  • AdaPots fix #1323. This fixes an issue where the per epoch AdaPots didn't match the epoch boundary, but they also included changes from the first block of the epoch.
  • Deposits Event fix #3212. This pr adjusts the Deposits ledger events, so that it can be better used by db-sync. This can reduce the number of queries that db-sync does during syncing an make syncing faster.

· 2 min read
Jordan Millar

2022-12-14 - 2022-12-27

High level summary

PRs merged in this sprint focused on clean up and resolving existing issues. The majority of the time during this sprint was spent on the In Progress PRs which have dependencies on consensus. This has been since rectified i.e cardano-node dependencies have been bumped.

Completed

docs

CI & project maintenance

Developer experience

cardano-cli

cardano-api

cardano-node

cardano-testnet

In Progress

CI & project mainteance

cardano-cli

cardano-api

cardano-node

cardano-testnet