diff --git a/docs/adr/2022-03-28_017-udp-networking.md b/docs/adr/2022-03-28_017-udp-networking.md index 1edcb4069cb..aea45b43d4a 100644 --- a/docs/adr/2022-03-28_017-udp-networking.md +++ b/docs/adr/2022-03-28_017-udp-networking.md @@ -3,12 +3,12 @@ slug: 17 title: | 17. Use UDP protocol for Hydra networking authors: [] -tags: [Proposed] +tags: [Superseded] --- ## Status -Proposed +Superseded (as never implemented) by [ADR 32](/adr/32) ## Context diff --git a/docs/adr/2023-09-09_027-network-resilience.md b/docs/adr/2023-09-09_027-network-resilience.md index fa2a86d8da4..26659380531 100644 --- a/docs/adr/2023-09-09_027-network-resilience.md +++ b/docs/adr/2023-09-09_027-network-resilience.md @@ -3,12 +3,12 @@ slug: 27 title: | 27. Network failures model authors: [abailly, pgrange] -tags: [Accepted] +tags: [Superseded] --- ## Status -Accepted +Superseded by [ADR 32](/adr/32) ## Context diff --git a/docs/adr/2025-02-12_032-network-properties-etcd.md b/docs/adr/2025-02-12_032-network-properties-etcd.md new file mode 100644 index 00000000000..1b5d848c892 --- /dev/null +++ b/docs/adr/2025-02-12_032-network-properties-etcd.md @@ -0,0 +1,46 @@ +--- +slug: 32 +title: | + 32. Network layer properties, implementation using etcd +authors: [ch1bo] +tags: [Accepted] +--- + +## Status + +Accepted + +## Context + +TODO write context + +- First relevant is [ADR 6](/adr/6) which defines the multicast/broadcast primitive +- Related to [ADR 27](/adr/27) + - re-confirm the failure model + - superseded decision taken in there +- correspondence of reliable broadcast and consensus +- summarize properties of network layer + +## Decision + +- We supersede [ADR 17](/adr/17) and [ADR 27](/adr/27) with the current ADR. + +TODO write decision + +- Define properties of the network layer +- Precise definition of broadcast to be a reliable broadcast (including Agreement) + - https://hydra.family/head-protocol/docs/dev/architecture/networking#interface + +TODO write decision (separate ADR?) + +- Decide to use `etcd` as a proxy to achieve reliable broadcast via its raft consensus +- (or consequence?) Change of `PeerConnected` to `HydraNetworkConnected` semantics + +## Consequences + +TODO write consequences + +- Drop existing implementation using `Reliability` layer (could be revisited, as in theory it would satisfy properties if implemented correctly -> link to Cachin, Uniform reliable broadcast = only deliver when seen by everyone = not what we had implemented) +- Run time dependency on `etcd` +- Improved introspectability +- Crash tolerance of up to `n/2` failing nodes