-
Notifications
You must be signed in to change notification settings - Fork 87
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Draft ADR about network properties and etcd implementation
- Loading branch information
Showing
3 changed files
with
50 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |