Expand description
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 is to create an instance of the struct MinBft for each replica, i.e. n instances.
Upon setting up the connections between the replicas, instances of the struct MinBft may receive and handle messages from clients, messages from peers (other replicas/instances), or timeouts using the respective function.
The replicas must sign their peer messages with a Unique Sequential Identifier Generator (USIG), as described in Section 2 of the paper above. A USIG implementation compatible with this MinBFT implementation can be found here. Note that this implementation does not use Trusted Execution Environments and, thus, should not be used in untrusted environments.
Timeouts must be handled explicitly by calling the respective function. See the dedicated function below for further explanation.
This implementation was created as part of the ABCperf project. An integration in ABCperf also exists.
Re-exports§
pub use output::Output;
Modules§
- id
- output
- Models the output that the replicas return when handling client requests, peer messages, or timeouts.
- timeout
- Defines the required logic for creating timeouts. Timeouts must be set for messages that need to be handled until a specific time. Those messages are client-requests, batches, and view-changes. The timeouts must be explicitly handled. For an example see the documentation of crate::MinBft.
Structs§
- Backoff
Multiplier - Defines the multiplier used to calculate the duration of the next timeout of a client or view-change message in case requests are not handled in-time.
- Config
- Contains the configuration parameters for the partially asynchronous Byzantine fault-tolerant atomic broadcast (BFT) algorithm.
- MinBft
- Defines a replica of a system of multiple replicas that together form an atomic broadcast.
- Peer
Message - Defines a message that originates from a replica and is broadcasted to all replicas. All received PeerMessages must be processed (see the documentation of the module).
Enums§
- Error
- The error types that may possibly occur when handling client messages, peer messages or timeouts.
Traits§
- Request
Payload - Defines the trait the payload of a client-request must implement in order to be receivable by a replica of a system of multiple replicas that together form an atomic broadcast.