Skip to main content

· 3 min read
Marcin Szamotulski

High-level overview of sprint 45

Bootstrap Peers

We started reviewing the bootstrap peers PR, ouroboros-network#4615.

Towards Typed Protocols 0.2.0.0

We discovered a performance regression when using typed-protocols-0.2.0.0, and we started investigating where it comes from. Currently, we see that typed-protocols-0.2.0.0 can outperform typed-protocols-0.1.0.0 when running in isolation with a simple ping-pong protocol, so the regression might be in the new block fetch implementation which comes with typed-protocols-0.2.0.0 See typed-protocols#3.

Tech Debt

We merged two PRs written by Galois engineers:

  • a pull request which refactors the main entry function for P2P, see ouroboros-network#3834;
  • a pull request which reviews usage of unsafe function in the network code based.

Galois also made progress with the following two issues:

IO-Sim

IOSimPOR

We found and fixed a bug in IOSimPOR. We'd like to thank Prof. John Hughes (Quviq AB) for helping us with debugging the issue.

We also provided a more uniform API for IOSimPOR, and added ways to make the debugging similar problems in the future easier.

Technical Details on IOSim refactoring
We removed the usage of `unsafePerformIO` from `IOSimPOR`, which also means removing parallel evaluation of discovered races. We found out that it gives only 25% better performance. In the future QuickCheck will offer running different cases in parallel which should provide better performance as there are no dependencies between the evaluation of different test cases, while schedules are discovered while running which limits the possible gains from running them concurrently. The performance was not the only factor though. When using parallelism in the lazy `ST` monad we'd need to rely on memory guarantees of `STRefs`. In `GHC-9.6` they share the implementation with `IORef`s, but it might not be the case in the future.

IOSim

To prepare for the next release, we consolidate packages taking advantage of the public sublibraries supported now both by cabal and Hackage. This is a work in progress, io-sim#114.

Cardano Newtork Service Assurance

Galois made the following progress:

  • A test run of spinning up a CNSA instance was done, as a result documentation was updated.
  • Based on the IOG code review of the CNSA code, updates to the CNSA code were made.
  • Galois has started the design for adding a CNSA analysis for "fetched bytes over time while node is syncing".

P2P adoption

In the last two weeks, we've seen increase in P2P adoption. P2P relays

The following graphs show several different versions of relays running on the mainnet. The green line NodeToNodeVersionV10.True denotes P2P relays. node versions

Open Source

We upstreamed our FFI bindings to Windows named pipes to Win32 package, the PR was accepted and merged.

We also received an external contribution which enhanced our documentation, see ouroboros-network#4676.

· 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

The team is currently formalising mini protocols and testing the performance analysis tool

Details

  • drafting processs calculus semantics of mini protocol programs

  • testing the new performance modelling tool

  • further work on specification of mini protocols

  • extension of mini protocol framework to support communication of programs with local environments via synchronous channels

· One min read
Franco Testagrossa

High-level summary

This week, the Hydra team mainly focused on having a working new reliability network layer; and specified its expected behavior in a new ADR.

They also revisited the security policy and vulnerability disclosure policy on how to handle security vulnerability within Hydra, and in particular how to handle so-called "Silent fixes".

What did the team achieve this week

  • Updated security policy and vulnerability disclosure policy #1088
  • Adr/network reliability #1082

What are the goals of next week

· 3 min read
Alexey Kuleshevich

High level summary

Few important Conway related features were completed in this two week period:

  • Constitutional Committee was the last missing Conway related entity that has now been fully implemented.
  • Treasury withdrawals governance actions have been fixed and now behave as expected.
  • Current treasury amount supplied in the transaction is now enforced by the rules.
  • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no proposals to vote on.
  • Semantics of how CostModels are updated with Protocol Parameters have been changed to allow for individual Plutus language version updates, rather than requiring a complete replacement of all CostModels

Besides the new features there were also important performance and testing improvements:

  • In particular stake distribution computation and native script handling received some optimizations.
  • New testing DSL has been implemented that drastically simplifies writing unit tests for ledger rules.
  • Integration tests and benchmarks are now possible for Conway era because of the overhaul of functionality for initial funds and staking injection whenever node starts up in Conway, while bypassing all previous eras.

Low level summary

Conway era

  • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
  • pull-3739 - Rename some PParams to be consistent with Agda specification
  • pull-3743 - Move DRepDistr from VState to ConwayGovState
  • pull-3746 - Implement tcTranslationContextL for Shelley
  • pull-3737 - Implement EraTransition
  • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
  • pull-3748 - Apply enacted treasury withdrawals
  • pull-3745 - Constitutional Committee Ratification
  • pull-3763 - Plutus interface improvements
  • pull-3771 - Changed how costmodel updates are applied
  • pull-3766 - Prevent updating protocol version with PParamUpdate

Performance

  • pull-3765 - Improve native script handling
  • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
  • pull-3758 - Cardano-Perf regression: UMap.size regression fix
  • pull-3754 - Use Alonzo-style TxOut encoder when possible

Releasing

  • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
  • pull-3744 - Changelog 8.4
  • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
  • pull-3753 - Minor cleanup and changelog entries
  • pull-3760 - Fixup issues for release
  • pull-3764 - Bump plutus deps to 1.13

Testing

  • pull-3734 - Removed Shaped instance for Rep
  • pull-3735 - Simplify the implementations of hasOrd and hasEq
  • pull-3728 - STS tests based on constraints
  • pull-3714 - Implement the remaining upgradable families
  • pull-3733 - Add some unit tests for Conway features
  • pull-3762 - Update CDDL for praos headers.

· One min read
John Lotoski

High level summary

The SRE team continues work on cardano environment improvements and general environment maintenance.

Some notable recent changes, updates or improvements include:

  • Sanchonet environment was re-spun starting from slot 7171200 and updated to cardano-node 8.4.0-pre.
  • The use of cardano-node docker hub will be deprecated in preference of GHCR

Lower level summary

Capkgs

  • Refactor parsing scripts, add github action automation, various bugfixes and cleanup: capkgs-compare

Cardano-parts

  • Updates secrets layout scheme, adds sops enc/dec for jobs, adds cloud monitoring profile, updates flake templates and other improvements/fixes: cardano-parts-pull-8

Cardano-playground

  • Updates for new cardano-parts secrets handling and layout, TF workspace handling, group multivalue DNS support, grafana cloud monitoring and other improvements: cardano-playground

Cardano-world