A modified version of the Raft consensus protocol for highly-efficient cooperative Ethereum SSV implementations
Go to file
Marto 5950ed20eb Fix BLS setup 2024-02-21 19:20:33 +02:00
.github/workflows Refactoring 2024-02-09 16:56:33 +02:00
.vscode Code refactoring 2024-02-07 15:29:53 +02:00
doc Added Diego Ongaro Raft paper and Stanford PhD Dissertation 2023-09-03 07:23:23 +03:00
scripts/ci Change script permissions 2024-02-09 17:00:08 +02:00
src Fix BLS setup 2024-02-21 19:20:33 +02:00
tests Fix BLS setup 2024-02-21 19:20:33 +02:00
.editorconfig Add license and .editorconfig 2023-08-03 19:58:40 +03:00
.gitignore Added Diego Ongaro Raft paper and Stanford PhD Dissertation 2023-09-03 07:23:23 +03:00
LICENSE-APACHEv2 Add preliminary API definitions and project roadmap 2023-08-09 13:06:34 +03:00
LICENSE-MIT Add preliminary API definitions and project roadmap 2023-08-09 13:06:34 +03:00
README.md Refactoring 2024-02-09 16:56:33 +02:00
config.nim Test CI 2024-02-13 13:59:14 +02:00
nim.projectMapping Refactoring 2024-02-09 16:56:33 +02:00
nimble.lock Fix CI 2024-02-13 14:40:59 +02:00
raft.nimble Fix CI 2024-02-13 14:40:59 +02:00
raft.nims Fix CI 2024-02-13 14:40:59 +02:00

README.md

nim-raft

This project aims to develop an implementation of the Raft consensus protocol that allows for application-specific customizations of the protocol.

We plan to leverage the implementation to create a highly-efficient setup for operating a redundant set of Nimbus beacon nodes and/or validator clients that rely on BLS threshold signatures to achieve improved resilience and security. Further details can be found in our roadmap here:

https://github.com/status-im/nimbus-eth2/issues/3416

This project is heavily inspired by Raft implementation in ScyllaDB

https://github.com/scylladb/scylladb/tree/master/raft

Design goals

The main goal is to separate implementation of the raft state machin from the other implementation details like (storage, rpc etc) In order to achive this we want to keep the State machine absolutly deterministic every interaction the the world like networking, logging, acquiring current time, random number generation, disc operation etc must happened trough the state machine interface. It will ensure better testability and integrability.

Run test

nimble test