#replica #byzantine #message #model #synchronous #timing #fault-tolerance

minbft

Efficient Byzantine Fault-Tolerance in the partially synchronous timing model

1 unstable release

0.10.0 Sep 29, 2023
0.1.0 Nov 22, 2021
0.0.0-reserved Aug 16, 2023

#603 in Encoding

Download history 7/week @ 2024-02-19 30/week @ 2024-02-26 6/week @ 2024-03-04 6/week @ 2024-03-11 5/week @ 2024-03-18 11/week @ 2024-03-25 66/week @ 2024-04-01

90 downloads per month
Used in 3 crates (2 directly)

MIT license

345KB
6.5K SLoC

Provides Byzantine fault-tolerant consensus while reducing the amount of consenting nodes (replicas) required as much as possible.

Based on the paper "Efficient Byzantine Fault-Tolerance" by Veronese et al., the crate provides an implementation of a partially asynchronous Byzantine fault-tolerant atomic broadcast (BFT) algorithm. The algorithm requires n = 2t + 1 replicas in total, where t is the number of faulty replicas.

The intended way to use the library would be to create an instance of the struct [MinBft] for each replica, i.e. n instances.

Instances of the struct [MinBft] may receive and handle messages from clients, messages from peers (other replicas/instances), or timeouts using the respective function. Timeouts must be handled explicitly by calling the respective function. See the dedicated function below for further explanation.

Dependencies

~4–5.5MB
~109K SLoC