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:
- New tests for read-only transaction handles.
- New functions and data types.
- Updates to support improved type safety and smaller constraints in the UTxO HD prototype.
- Windows and MacOS CI support.
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 ofTest.StateMachine.Labelling
. - Addition of
-Wunused-packages
to the defaultghc-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.