Skip to main content

· 3 min read
Damian Nadales

High level summary

The Consensus team continued working on refactoring and improving the UTxO-HD prototype, and introducing improvements to the lmdb related packages. In particular we identified an opportunity to gain performance by handling locks in a more optimal way.

On the Genesis front, we sketched a mitigation for an issue that PNSol and Researchers caught. We also came op with a road map for not only testing the Genesis prototypes, but also for enriching the tests we already have.

Regarding technical debt, next to some minor improvements, we created component-level micro-benchmarks for adding transactions to the mempool. The results of these benchmarks will be published in the ouroboros-consensus web page.

We also finished moving the Consensus documentation to the ouroboros-consensus repository, released ouroboros-consensus 0.3.0.0, and reduced the time GitHub actions take in ouroboros-network.

Workstreams

UTxO HD Prototype

We continued working on refactoring and improving the UTxO-HD prototype. As a result of the first round of sytem-level benchmarks, we identified an opportunity to optimise the way we handle locks to improve performance (#4393).

Also, we introduced several improvements to the lmdb related packages:

Genesis

We sketched out a mitigation of the issue that PNSol and Researchers caught in the Genesis design.

We came up with a road map for testing the Genesis prototypes, including early milestones that are applicable to today's master branch, ie tests that are useful before Genesis, and that will be nicely enriched when we do add Genesis.

We developed the aforementioned tests, specifically a QuickCheck generator for the Honest leader schedule and one as-aggressive-as-possible Adversarial leader schedule that together satisfy the Praos properties that the Consensus design takes as invariants.

We investigated why the improved ChainDB queueing implementation behaves differently in the baseline compared to the prototype, and we are close to having a full picture of how the Consensus components interact during bulk sync.

Technical debt

We created component-level micro-benchmarks for adding transactions to the mempool. We plan on extending this to more mempool actions and different types of blocks. We store the benchmark data to make it available to the GitHub action that publishes the benchmarks results.

Other minor improvements include:

  • Removal of Test.Util.Classify in favour of Test.StateMachine.Labelling.
  • Addition of -Wunused-packages to the default ghc-options for Consensus packages.

Fostering collaboration

We finished moving the Consensus documentation from ouroboros-network to ouroboros-consensus, in preparation for migrating the code to the latter repository.

Support

We released ouroboros-consensus 0.3.0.0.

We reduced the load in the ouroboros-network GitHub actions, thereby reducing the time CI jobs take.

· One min read
Jordan Millar

· 2 min read
Michael Karg
  • Release benchmarking: We again performed benchmarks for the next 1.35.6 release candidate.
  • New tracing: Backwards compatibility with legacy tracer nomenclature is being implemented to smoothe the transition for end users.
  • Analysis pipeline: A major refinement of benchmarking metrics has been realized, along with a structural improvementents regarding metrics denomination.
  • Open Sourcing: Work on going live with our benchmarking data has begun, as well as creating an API demo and documentation.
  • Nomad backend: The backend was adapted to a major refactoring in workbench and is being equipped with a nomad-exec based task driver.

Performance

1.35.6 release

Benchmarking the second release candidate for 1.35.6 could again attest to a perfectly clean bill of health.

Analysis pipeline

Our analysis pipeline has seen an introduction of additional metrics, especially when focusing on the block producing node. They allow us to better differentiate the timing of ledger ticking and mempool snapshotting in the forging loop - a feature that promises much deeper insight into UTxO-HD performance. Additionally, a restructuring of metrics names has been undertaken along with improvements in their data dictionary; a measure that will make benchmarking data more easily accessible.

Open Sourcing

As a prerequisite for going live with our benchmarking data, we're currently working on consolidation of existing analyses, such as to provide a common foundation when accessing them externally. Additionally, we've begun working on a small visualization demo and interactive API documentation. Those will enable third parties to make use of that data much more easily, by having reliable guidelines and a working example.

Tracing

The new tracing system is being outfitted with a comprehensive mapping of its structure to the legacy tracer nomenclature. This feature will make the switch to the new system as smooth as possible for end users, allowing them to gradually adapt their tooling without breaking any functionality in the process.

Infrastructure

Nomad backend

The Nomad backend was adapted to the latest major refactoring in workbench. Work was done on making stateful Nomad clients more autonomous, which will greatly facilitate any automation building on that backend. A task driver based on nomad-exec is currently being implemented.

· 2 min read
Iñigo Querejeta Azurmendi

High level summary

The open fronts that the crypto team is working on are:

  • Mithril: Updated KES crate to force user to allocate buffer of bytes for the key. Include proper testing for batch mtree opening and STM batch verify. Progressed with RFP for audit.
  • cardano-base: BLS branch is now ready for review. We are workign forward its merge.
  • KES agent: time off of part of the team, but in general continuing with the adaptation of the KES agent with consensus codebase.
  • Sidechains: We are exploring and starting discussion on how sidechains could leverage BLS12-381 bindings for SNARKs

Low level summary

Mithril

  • Bumped to version 0.2.0 the implementation of KES. Redesigned the representation of the secret key to allow user to allocate a buffer using mlock.
  • Opened PR#783 to update dependency
  • Improved testing for batch opening of mtree, PR#773
  • Improved testing for batch verification of STM sigs PR#774
  • RFP for crypto audit almost ready.

cardano-base

  • BLS12-381 branch finally ready for review PR#266

KES agent

Team off for one week. Other progress:

  • Learning about raw direct-bearer abstraction. An interface for sockets in consensus.
  • use that for direct ser/deser
  • written those syntaxes for ouroboros (coming PR)
  • the kes agent will depend on that.

Sidechains

Progress with familiarisation of Halo2 library to write circuits.

· One min read
James Chapman

The team works on applied research and consulting in formal methods that is directly applicable to evidence based engineering in Core Tech and beyond.

High level summary

This sprint the team has been working on drafts of two papers and one technical report, improving the deltaQ tutorial, consulting on performance design, and the Djed paper has been accepted for publication.

Details

  • Preparing draft of DeltaQSD algebra paper for FORTE 2023

  • Extending the technical report on which the above paper is based

  • Consulting with an external company on performance engineering of Plutus contracts

  • Planning improvements and collecting material for the deltaQ tutorial based on experience with systems that manage risk at multiple timescales

  • Preparing sections on the communication language and idempontency laws for draft paper about verifying design refinements for distributed system design

  • Studying Cardano chain sync protocol

  • "Djed: A Formally Verified Crypto-Backed Autonomous Stablecoin Protocol" has been accepted for publication at IEEE ICBC 2023