Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Network update (sprint 42) #221

Merged
merged 1 commit into from
Aug 18, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions blog/2023-08-18-network.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
title: Network Team Update
slug: 2023-08-18-network
authors: coot
tags: [network]
hide_table_of_contents: false
---

## High-level overview of [sprint 42][sprint-42]

### Eclipse Evasion

We merged and released a new version of the `ouroboros-network` package (version
`0.9.0.0`) which includes [big ledger peers feature][ouroboros-network#3886].
This is the primary peer selection mechanism to defend against eclipses. We
also prepared a PR to updated [`ouroboros-cosnensus`][ouroboros-consensus#165]
and [`ekg-forward`][ekg-forward#30] packages.

### CDDL specs for protocol codecs

We made the `cddl` spec for network codec more inline with the implementation
which is highly polymorphic. `cddl` doesn't have the notion of polymorphism,
but has `any` which can generate any valid cbor term. We matched it with an
`Any` type on the Haskell side and made all remaining tests & specs use it.
This simplified the specifications and made it easier to understand which parts
are defined in the spec, and which parts are left unspecified. See
[ouroboros-network#4595].

### Ouroboros-Network-Framework API changes

We also released `ouroboros-network-framework` and other network components.
The `ouroboros-network-framework` package contains a redesign of API exposed to
`ouroboros-consensus`. We consolidated, cleaned it and made it easier to
extend in the future if there will be new arguments that need to be passed to
mini-protocol initiator and responders which comes from the low-level network
layer.

### Nix setup (CI)

We also made a major review of our `nix` setup. With help from our DevX team
we ended up with a clean `flake.nix` file which can:

* compile & test the code on `x86_64-linux`, `x86_64-darwin` and `aarch64-darwin`
* cross-compile to `Windows` on `x86_64-linux`

And provides a shell which contains all the build tools, including `ghc-9.6`,
`hls`, `cddl`, and more. See [ouroboros-network#4640],
[ouroboros-network#4643].


## Other contributions

### Cardano Network Service Assurance

* The work and writeup in finishing up the CNSA, first stage (first
contract).
* Getting Sam Cowger (Galois Inc) up to speed.
* The IOG Networking team carried a reivew of CNSA project progress: a limitted
code & design review.

### Galois Review

Sam Cowger and Mark Tullsen (Galois Inc) have made some progress on each of the tech debt issues

* [ouroboros-network#3832],
* [ouroboros-network#3834],
* [ouroboros-network#3835],
* [ouroboros-network#3836];

scoping, requirements, and getting started.

### CI

We added a nightly run for GitHub actions and made the GitHub actions test be
executed with extra concurrency [ouroboros-network#4637], [ouroboros-network#4649].

We also added GitHub's dependabot [ouroboros-network#4650].

### Bootstrap Peers

We settled on implementation design of bootstrap peers which is being
implemented, [ouroboros-network#4615].


[sprint-42]: https://github.com/orgs/input-output-hk/projects/19/views/16?filterQuery=sprint%3A%22sprint+42%22

[ekg-forward#30]: https://github.com/input-output-hk/ekg-forward/pull/30

[ouroboros-consensus#165]: https://github.com/input-output-hk/ouroboros-consensus/pull/165

[ouroboros-network#3832]: https://github.com/input-output-hk/ouroboros-network/issues/3832
[ouroboros-network#3834]: https://github.com/input-output-hk/ouroboros-network/issues/3834
[ouroboros-network#3835]: https://github.com/input-output-hk/ouroboros-network/issues/3835
[ouroboros-network#3836]: https://github.com/input-output-hk/ouroboros-network/issues/3836
[ouroboros-network#3886]: https://github.com/input-output-hk/ouroboros-network/issues/3886
[ouroboros-network#4595]: https://github.com/input-output-hk/ouroboros-network/issues/4595
[ouroboros-network#4615]: https://github.com/input-output-hk/ouroboros-network/issues/4615
[ouroboros-network#4637]: https://github.com/input-output-hk/ouroboros-network/pull/4637
[ouroboros-network#4640]: https://github.com/input-output-hk/ouroboros-network/pull/4640
[ouroboros-network#4643]: https://github.com/input-output-hk/ouroboros-network/pull/4643
[ouroboros-network#4649]: https://github.com/input-output-hk/ouroboros-network/pull/4649
[ouroboros-network#4650]: https://github.com/input-output-hk/ouroboros-network/pull/4650
Loading