Skip to main content

· 3 min read
Marcin Szamotulski

High-level overview of sprint 60

Edited on 8th of May: new EGK counters will be included in `cardano-node-8.9.3`, added links to `cardano-node-8.9.3` PR and `ouroboros-network-0.15` release.

Peer-Sharing Improvements

We continued working on improving peer sharing. As part of this work light peer sharing (e.g. including inbound peers to the known set of outbound governor), was restructured. Now, sending more peers than what was requested by the peer-sharing client is a protocol error, and the connection will be terminated; This hasn't been a resource attack vector since we always limited the number of peers taken by the outbound-governor and the number of peers has always been limited by the size of the mux ingress queue reserved for peer-sharing mini-protocol. These changes will be released in cardano-node-8.9.3. See ouroboros-network#4868

We also merged the work on outbound governor counters, which initially started as just an extension for peer-sharing counters but turned into a larger refactorisation. We announced it in the previous report. These changes will be included in 8.9.3. See ouroboros-network#4845, ouroboros-network#4861.

Light peer sharing (inbound peers) refactorisation allowed us to refactor the inbound governor loop: we restructured it so that the internal state is kept pure (and thus not shared with other threads), while the public part is computed incrementally (with good amortised costs and thus leading to good performance) and exposed to other components (e.g. the outbound-governor), see ouroboros-network#4871 (which is built on top of ouroboros-network#4868).

The PR [cardano-nod#5831] integrates ouroboros-network-0.15 with cardano-node-8.9.x branch. All included PRs / issues in ouroboros-network-0.15 are listed here.

Genesis

We implemented the API needed by the consensus layer for Genesis; see ouroboros-network#4815, ouroboros-network#4846.

We continued working on outbound governor changes to support Genesis:

Bootstrap Peers

Karl Knutsson ([CF]) found and fixed some problems related to big-ledger and public root peers. Here's an excerpt from the changelog file:

  • updated the big-ledger retry state in case of an exception;
  • reset public root retry state when transitioning between LedgerStateJudgements;
  • reduced public root retry timer;
  • don't classify a config file with public-root/bootstrap-peers IP addresses only as a DNS error. See ouroboros-network#4867.

Churn

We merged a refactorisation which synchronises churn with the outbound governor, see ouroboros-network#4617.

Minor Improvements

A few other minor improvements were merged:

Testing

We added quickcheck-monoids package and also submitted an upstream patch to QuickCheck to include a version of the standard All / Any monoids, which are helpful when writing more complex properties. We will use quickcheck-monoids until the upstream PR will be released. It will be available from CHaP. See quickcheck#397.

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team has been working on refactoring and detecting network protocol version mismatches. They have also merged the /commit endpoint changes including a follow-up fix about fee calculation. Besides this, they applied minor workflow fixes by adding docker images to nix checks and disabling mithril integration testing on preview (until mithril 2418 is released).

What did the team achieve this week

  • Refactor connectivity and detect network protocol version mismatches #1381
  • Merged and completed #1350, including a follow-up fix about fee calculation
  • Add docker images to nix checks
  • Disable mithril-client testing on Preview

What are the goals of next week

  • Restructure documentation including a how to about streaming plugins #1325
  • Add arm64 docker images as requested in #1404
  • Release 0.17.0

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team prepared a new pre-release distribution 2418.1-pre, which includes broader CPU support for pre-built binaries and a new memory allocator for the signer and aggregator nodes to prevent memory fragmentation. They also continued implementing the certification of Cardano transactions in Mithril networks and worked on scaling the signature and proof generation for mainnet by leveraging the compression of the transaction Merkle tree using sub-Merkle trees based on transaction block ranges during signature and proving. Additionally, they implemented a stream mechanism for importing transactions into the signer and aggregator stores.

Finally, the team started implementing a global Mithril networks configuration file and continued investigating some unexpected error logs occurring on the Cardano node when the signer and aggregator connect to the mini-protocols.

Low level overview

  • Created a pre-release for the new distribution 2418.1-pre
  • Completed the issue Store Block Range Merkle roots in signer and aggregator databases #1633
  • Completed the issue Stream import of Cardano transactions #1646
  • Completed the issue Memory leak in Cardano transactions signature/proof #1629
  • Completed the issue Handle unparsed blocks in Cardano transactions parser #1567
  • Worked on the issue Use Block Range Merkle roots to sign Cardano transactions #1634
  • Worked on the issue Use Block Range Merkle roots to prove Cardano transactions #1635
  • Worked on the issue Use SQLite transactions when inserting Cardano Transactions and Block Range Roots #1656
  • Worked on the issue Add Mithril networks configurations in networks.json #1638
  • Worked on the issue ChainObserver supports retrieving the Chain Point of the tip of the chain #1589
  • Worked on the issue Add section for manual setup of squid in SPO guide #1610
  • Worked on the issue Mithril Signer Local Error Policy : Error 182 - MuxError #1632

· One min read
Carlos LopezDeLara

2024-04-16 - 2024-04-26

High level summary

8.10.1-pre was released to SanchoNet.

The team continues focused on implementing tests for the Conway era on the cardano-node repository. This sprint the team made various improvements to CI pipelines on cardano-cli.

  • Cardano-cli: implemented build-estimate to facilitate automatic transaction balancing without access to a live node; and added minFeeRefScriptCostPerByte as an option to create-protocol-parameters-update command.

cardano-node

cardano-cli

cardano-api

cardano-testnet

docs

CI & project maintenance

· 3 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:

  • Cardano-node 8.9.2 is now deployed to mainnet, preprod, preview and shelley-qa environments.

  • Cardano-node 8.10.1-pre is now deployed to sanchonet and also to one-third of IOGs preprod environment nodes and two-thirds of IOGs preview environment nodes.

  • Private chain for Voltaire team was paused with plans for a future respin.

  • The network team's ouroboros-network-ops machine cluster was re-written using the cardano-parts stack to upgrade from the nixops/terraform/niv stack it was previously using.

Lower level summary

Cardano-parts

  • Sets cardano-node to 8.9.2, dbsync-ng to sancho-4.2.0; mithril to 2412.0, iohk-nix to include new peerSharing defaults and introduce a new block producer config. Adds a new truncate-chain recipe and improves mithril related services. More detail is available in the PR description: cardano-parts-pull-38

  • Sets cardano-node pre (-ng) to 8.10.1, dbsync to 13.2.0.2; mithril pre (-ng) to unstable, iohk-nix and iohk-nix-ng pin includes new Cardano Foundation bootstrap relays. Adds new aws machine management and other recipes, metadata job support for pool creation, misc fixes and improvements. More detail is available in the PR description: cardano-parts-pull-39

Cardano-mainnet

  • Sets cardano-node to 8.9.2, mithril to 2412.0, iohk-nix to include new peerSharing defaults and colmena.nix cluster refactor for peerSharing adjustments and implements all updates in cardano-parts PR#38. See the PR description for more details: cardano-mainnet-pull-12

  • Sets dbsync to 13.2.0.2, iohk-nix and iohk-nix-ng to include new CF relays, adds new aws machine management recipes and implements all updates in cardano-parts PR#39. See the PR description for more details: cardano-mainnet-pull-13

Cardano-node

  • Default peerSharing true and add block producer config to release binaries. See the PR description for more details: cardano-node-pull-5789

Cardano-ops

Cardano-perf

  • Adds a caddy webserver for run reviews and tunes the NVME FS mounts for performance: cardano-perf-compare

Cardano-playground

  • Sets cardano-node to 8.9.2, mithril to 2412.0, iohk-nix to include new peerSharing defaults, refactors mdbook out of docs dir, adds example chain manipulation doc and implements all updates in cardano-parts PR#38. See the PR description for more details: cardano-playground-pull-21

  • Sets cardano-node pre (-ng) to 8.10.1, dbsync to 13.2.0.2, mithril pre (-ng) to unstable, iohk-nix and iohk-nix-ng to include new CF relays, adds a public TLS dbsync user connection option, stops private chain cluster and implements all updates in cardano-parts PR#39. See the PR description for more details: cardano-playground-pull-22

Iohk-nix

Ouroboros-network-ops

Sanchonet

Sanchonet-demo