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

Spike: Use raft consensus for networking #1591

Open
ch1bo opened this issue Sep 2, 2024 · 0 comments
Open

Spike: Use raft consensus for networking #1591

ch1bo opened this issue Sep 2, 2024 · 0 comments
Assignees
Labels

Comments

@ch1bo
Copy link
Collaborator

ch1bo commented Sep 2, 2024

Why

We created a new test suite about resilience of our network stack in #1532 (see also #1106, #1436, #1505). With this in place, we can now explore various means to reach our goal of a crash-tolerant network layer.

This fairly old research paper explored various consensus protocols used in blockchain space and reminds us of the correspondence between consensus and broadcasts:

the form of consensus relevant for blockchain is technically known as atomic
broadcast

Furthermore, it listed at least one of these early, permissioned blockchains that achieved crash-tolerance of $t < n/2$ by simply using etcd with its Raft consensus algorithm.

What

  • Run fault injection tests with a hydra-node network connected through etcd
  • Create a PR with results of the spike, but do not merge it

How

  • Create a Hydra.Network.Etcd network component that implements broadcast using the replicated log of etcd
    • Move authentication into application
    • Re-use --peer from command line
    • Fork etcd when starting
    • Message type + sender as key
    • Use watch and revisions to be notified of messages while offline
  • Maybe: Compact messages (this will upper bound reliance to faults?) or use leases
@ch1bo ch1bo added the spike label Sep 2, 2024
@ch1bo ch1bo changed the title Spike: Using raft consensus for networking Spike: Use raft consensus for networking Sep 2, 2024
@ch1bo ch1bo self-assigned this Sep 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants