Consensus Quarterly Update
· 3 min read
Consensus Quarterly Update
2023-01 - 2023-03
Main achievements
UTxO HD
- We finished the testing activities for the prototype, which involved adding new tests, and fixing and enabling temporarily disabled tests.
- We spent a substantial amount of effort refactoring and cleaning the prototype.
- We audited the UTxO HD prototype to make sure it can accommodate the migration of other tables (eg stake-keys registration) from memory to disk. The result of the audit was positive.
- We ran ad-hoc benchmarks for reading keys and flushing values to disk. No unexpected costs found.
- We ran the first system level benchmarks. The performance regressions reported were due to an unrealistic snapshotting rate. We need to re-run them again after we design a more fine grained locking mechanism.
Genesis
- We elaborated a roadmap of the remaining work for Genesis.
- We presented the design to the IOG Researchers and PNSol on February 20. The
design was well received. We updated the Genesis design with the researcher's
feedback.
- We plugged the new DoS vector identified during the aforementioned presentation.
- We developed a generator for adversarial leader schedules that satisfy key
Ouroboros properties, which will be used to test the Genesis design.
- The generator enables use of smaller Ouroboros parameters, which makes extrema more likely and counterxamples easier interpret.
- We wrote up the latest design iteration.
- We continued benchmarking the Chain Sync Jumping prototype. In particular:
- We debugged the prototype's performance regression, and unmasked the actual cause by patching our initial theory (bad queuing behavior)
- We identified and validated the actual cause (a pathological case in BlockFetch tiebreaker).
Support
- We created two new tools. One for dumping CBOR encoded blocks to JSON. Ahother to serve a local immutable DB.
Conway era
- We integrated the Conway era into consensus.
Technical debt
- We fixed a bug with followers, which was discovered by property tests.
- We developed a DSL for specifying and running ChainDB test cases.
- We fixed failing tests with iterators.
- We created micro-benchmarks for adding transactions to the mempool.
Fostering collaboration
- We released a new technical documentation site for consensus.
- We factored out several packages to external repositories. Some of this work originated in the UTxO HD workstream.
Next steps
UTxO HD
Genesis
- https://github.com/input-output-hk/ouroboros-consensus/issues/33
- https://github.com/input-output-hk/ouroboros-consensus/issues/32
- https://github.com/input-output-hk/ouroboros-consensus/issues/31
Support
- Design Consensus side of hardfork-enactment in the Voltaire phase (#4180).
- Estimate the number of file descriptors Consensus needs #20.
Tech debt
- Identify Quantitative Timeliness Agreements (QTAs) metrics that we can define for consensus. Pick one and implement benchmarks for it.
Fostering collaboration
- Onboard a new team member.
