Skip to main content

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team completed work on dealing differently with contests during the contestation period. These will now always push out the deadline and hence contestation periods are easier to pick (depending on the network a Head runs on). Furthermore, they added an important acceptance test and completed internal refactoring of the protocol logic making future changes easier.

What did the team achieve this week

  • Push contestation deadline on each contest #716
  • Wrote an acceptance (property) test can always close/fanout when collect is successful
  • Internal refactoring of our HeadLogic
  • Groomed remaining things from #452 into dedicated features

What are the goals of next week

  • Complete full minting policy #720
  • Release 0.9.0 with updated scripts
  • Plan mainnet milestone and a 0.10.0 version
  • Redraw transaction graphs for specification (upon feedback)
  • Have smoke tests fixed and running regularly

· 3 min read
Jared Corduan

High level summary

This past two weeks saw many months worth of ledger changes integrated with the cardano-base and ouroboros-network repositories. The vast majority of the effort involved all the changes to the ledger serialization libraries (and the interplay with cardano-base) which now support proper versioning. Supporting the conway ledger era, and in particular allowing the ledger state to transition to a whole new system of governance, also played a noticeable part in the integration.

Besides the integration work, the team continues to address technical debt, improve the documentation, make our testing infrastructure better (such as experimenting with better nightly tests), and formally specifying more parts of CIP-1694.

Lower level summary

Integration work

Below is all the integration work completed, which will enable a release to node from the current ledger master. Many thanks to Alexey for this colossal undertaking!

Technical debt

Starting in major protocol version 9, zero-valued multi-assets will no longer be permitted in the CBOR specification. See pull-3241.

We now have our .cabal files being checked for a consistent formatting given by cabal format in our CI. See pull-3286.

We are still experimenting with better nightly tests for our long running property based tests. See pull-3276 and pull-3296.

Small documentation improvements

The hand proofs of the preservation ADA property have been added back to the Shelley ledger specification. See pull-3295.

We have clarified how the script integrity hash is computed in the CDDL description. See pull-3290.

Specifying CIP-1694

Our new formal specifications backed by Agda have seen a lot of progress! Upgrading to Agda 2.6.3 fixed our main build infrastructure problems, and we no longer have to rely on our custom fork. See pull-50.

Our progress on formally specifying CIP-1694 can be followed here:

Constraint based testing

We are still actively working on our new constraint based property testing framework. We have nearly all of the constraints for an entire ledger state hooked into generators, and tests that the generators do indeed obey the constraints. The variable count in the constraints is over 100! There is still much work to do on shrinking, making the generators faster, and writing actual property tests for the ledger, but the approach still seems viable and we are hopeful that it could replace our trace generators. The WIP can be followed here: pull-3219.

· One min read
Marcin Szamotulski

High level summary

Recently QA found a bug in P2P code, which results in busy loops. We added one fix to 1.35.6 release, another one will likely be part of next release. The first one is already included in ouroboros-network-0.3.0.1 release. These bugs could only affect nodes which are out of sync and thus should not impose risk on well maintained nodes on mainnet. We also advertise to deploy at most one of the relays as a P2P node, which shields from possible consequences.

We recently finished design phase of eclipse evasion and we started implementing it (see issue #3886 for progress).

Galois finished implementing Handshake extension which will allow to query network protocol versions (see pr #4256).

We also recently released a newer set of network packages to be integrated with cardano-node master branch, this includes:

* monoidal-synchronisation-0.1.0.2
* cardano-client-0.1.0.2
* network-mux-0.3.0.0
* ouroboros-network-api-0.1.0.0
* ouroboros-network-protocols-0.2.0.0
* ouroboros-network-testing-0.2.0.1
* ouroboros-network-mock-0.1.0.0
* ouroboros-network-framework-0.3.0.0
* ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
in `0.3.0.1`)

· 2 min read
Sebastian Nagel

High-level summary

This week, the Hydra team closed several gaps to align the Hydra scripts implementation further with the specification. This also resulted in a slight improvement on Hydra script size and costs. They consequently analysed the asymptotic complexity of collect and fanout and how they relate. Also plutus-tx profiling toolchain was evaluated and set up for future improvements on Hydra on-chain performance. In discussions with researchers and internal auditors, they also uncovered next steps on further securing the Head protocl using a "full" minting policy.

What did the team achieve this week

  • Closed several gaps to align script implementation with specification #452
    • Allow contest only once #680
    • Optimization through head output at index 0 #700
    • Value is preserved #702 + optimized exact value equality #709
  • Analysed asymptotic complexity of some of our scripts and set up profiling toolchain to #721
  • Fixed our tooling around the Haskell language server
  • Discussed full minting policy with researchers
  • Started grooming “what we need for mainnet” on this idea ticket and milestone

What are the goals of next week

  • Implement full minting policy
  • All remaining protocol discrepancies are implemented or groomed as individual features
  • Ideally release 0.9.0 with updated scripts
  • Discuss what we need for mainnet (milestone planning)
  • Redraw transaction graphs for specification (upon feedback)

· 2 min read
Jean-Philippe Raynaud

High level overview

The Mithril team released a new 2304.1 distribution that enables the backward/forward compatibility mechanism implemented for seamlessly rolling out soft updates to Mithril networks. They completed the implementation of the era reader trait that powers the era switch behavior. The team finalized the development of the era reader adapter that retrieves era activation markers from transactions on the Cardano chain. They also completed the relational design of the aggregator store.

Finally, they created new SPO nodes on the Mithril networks and upgraded the Cardano node to version 1.35.5 on their devnet and infrastructure.

Low level overview

  • Released the new distribution 2304.1
  • Fixed a bug that prevented some signers to sign with 2304.0-prerelease #716
  • Completed the implementation of an EraChecker that checks if an era is active #708
  • Completed the implementation of an EraReader that gathers era activation data #709
  • Completed the implementation of an EraReader adapter with on chain transaction as source #710
  • Completed the relational design of the aggregator store #476
  • Completed adding a new SPO on the testing-preview network #729
  • Completed the upgrade of the Cardano node to 1.35.5 #725
  • Fixed flakiness in the CI #734