Skip to main content

Β· 3 min read
Damian Nadales

High level summary​

During the past two weeks, the consensus team finished the testing activities around the UTxO-HD prototype. This is a very important milestone which will enable us to run system-level tests and benchmarks, as well as start refactoring and cleaning the prototype. Regarding our Genesis workstream, we elaborated a roadmap that gives an indication of the remaining work. We also continued our work on benchmarking chain-sync-jumping. We also continued working on improving the way we handle blocks from the future, and advancing the integration of the new VRF and KES crypto.

Workstreams​

UTxO HD Prototype​

As the prototype is nearing its completion, it was important to have enough confidence that we will be able to move additional parts of the ledger state onto disk. We worked together with the Ledger team to elaborate a sketch on how the UTxO-HD design would accommodate the migration of additional data from memory to disk. This gave us enough confidence that the current architecture will be extensible in the future.

On the testing front, we added property-based tests for the UTxO-HD type classes.

We also enabled disabled components, and addressed several technical debt issues:

  • Implement splitSized anti-diff split (#4269), and integrate it into consensus (#4273).
  • Renaming of peekVal to peekMDBVal (#7).

We ran ad-hoc benchmarks for syncing a chain from scratch and replaying. We found a race condition in the LMDB backing store, which we fixed. After the fix we were able to successfully run these benchmarks. The results were published by this pull request.

We used our db-analyser tool to benchmark the cost of reading keys and flushing values to disk. The following plot shows the duration of these disk operation in relation to the main ledger operations, where we can see that the cost of the former are comparatively low. The spike at the beginning of the graph is when, at the start of the Shelley era, the entire UTxO set is flushed to disk.

UTxO-HD read and flush benchmarks

After months of hard work adding tests for the prototype, we are ready to run end-to-end tests on the node, and system level benchmarks. This signals a very important milestone for the UTxO-HD workstream πŸŽ‰.

Genesis​

We elaborated a high-level decomposition of the remaining work for Genesis. We also continued benchmarking the chain-sync-jumping happy-path.

Technical debt​

We continued working on improving the way we handle blocks from the future.

Support​

We completed the mapping of Crypto to HeaderCrypto and body Crypto. HeaderCrypto is moved to cardano-protocol-tpraos. We created a draft pull request to facilitate compiling consensus.

Β· 2 min read
Jordan Millar

2023-01-25 - 2023-02-07

High level summary​

General clean up (error message improvement) and focus on CI maintenance. Multiple pools now supported in the cardano-cli query stake-snapshot command.

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​

Β· 2 min read
IΓ±igo Querejeta Azurmendi

High level summary​

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

  • Mithril: We explored whether some uses of transmute could be removed, but it resulted in considerable regression.
  • cardano-base: Some issues with Nix are blocking merge of VRF update. BLS12-381 benchmarks where quite satisfactory. Next steps will be defined by cryptography strategic decision.
  • KES agent: An inconsistency between contra-tracer available in hackage and the one in cardano-haskell delayed our progress. Now we are adapting PRs to the contra-tracer used by consensus.

Low level summary​

Mithril​

  • We removed the usage of transmute in mithril-core (and exchanged it with ser/deser, as unfortunately there is no other way with the library we currently use). However, the benchmarks showed an important regression - ~30% worse on average PR#675. We decided to keep transmute, but instead group all its usage in helper functions, to facilitate auditing.
  • We are writing a RFP for the audit of the core library.

cardano-base​

  • A problem with Nix is blocking merge of PR#341
  • Plutus team ran benchmarks of BLS12-381 built-ins. The results are satisfactory, and while we have yet not implemented SNARK verification in plutus, it all seems to point that we'll be able to verify some proofs in a single script execution.
  • Team is fully digesting the Plonk paper.
  • There's been a lot of discussions (with internal and external projects) regarding pairings in plutus, and what elliptic curve should be used.

KES agent​

  • A little unforseen delay has been caused by a mismatch in the use of contra-tracer. The one in hackage and that in cardano-haskell are not compatible. Unfortunately, for secure forgetting we use that of hackage, and now realised. We are doing the change, but still the CI is not happy.
  • The same was needed for the KES agents prerequisites PR#317.
  • We've started working with the agent itself again, upgrading the cardano-base dependency and adding ouroboros-network-framework dependency

Β· 2 min read
Sebastian Nagel

High-level summary​

This week, the Hydra team has been focusing on the write-up of the Hydra HeadV1 specification. Of which a first version has been aggregated and is currently under review. They aligned the on-chain scripts of reimbursing funds on abort like defined in the specification, improved the mutation test framework to have more control when testing plutus scripts. The added HeadId in the API and the TUI example client make hydra-node easier to use and a first experiment of a Hydra Head explorer was showing the utility of this - see what Heads exist on the preview network here.

What did the team achieve this week​

  • HeadId to API and display in the TUI #678
  • Experiment of creating a hydra explorer, first result hosted here
  • Improved mutation framework allowing to fail for the right reason #679
  • Correctly reimburse funds in abort (matching the spec) #670
  • Finished a first write-up of the Hydra HeadV1 spec: Read it on overleaf (Communication channels for feedback)

What are the goals of next week​

  • Monthly review meeting with a broader audience
  • Groom & plan actions required for a maintainable Head explorer
  • Break β€œalign gaps” feature into smaller chunks (at least on- /off-chain) and groom it
  • Review the spec & discuss individual aborts with researchers (a bigger open question)

Β· 2 min read
Marcin Szamotulski

High level summary​

We have been working towards cardano-node-1.35.5 release. QA & benchmarking teams gave a green light for the release, and we made decent progress with some CI problem which we encountered on the way (PR #4612). We are also working on peer sharing, making improvements in our testing infrastructure, reducing technical debt and making progress towards io-sim-1.0.0.0. Galois is making progress on Handshake improvements.

Low level summary​

Our diffusion simulation network now includes a mixed network of initiator only and initiator and responder nodes. issue #4222

We are now reviewing the peer sharing pull request.

We are also reviewing pull request which introduces handshake query flag. PR #4256

We fixed a bug in our network simulator. The bug was triggered when a node died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

We also refactored Snocket interface and removed the bearer construction from its methods. PR #4260

We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes reviewing two PRs: PR #57 and PR #60 as well as writing an announcement blog post.