Overview#Plenum Byzantine Fault Tolerant Protocol is the Distributed Consensus protocol implemented in Hyperledger Indy and is based on Redundant Byzantine Fault Tolerance
Plenum is an implementation of Redundant Byzantine Fault Tolerance, a Distributed Consensus algorithm proposed by Pierre-Louis Aublin, Sonia Ben Mokhtar, and Vivien Quéma. As described in their paper, existing BFT protocols use a special replica, called the "primary", which indicates to other replicas the order in which requests should be processed. This primary can be smartly malicious and degrade the performance of the system without being detected by correct replicas. The evaluation shows that RBFT achieves similar performance as the most robust protocols when there is no failure and that, under faults, its maximum performance degradation is about 3%, whereas it is, at least, equal to 78% for existing protocols."
RBFT implements a new approach whereby multiple instances of the protocol run simultaneously, a Master Replica instance, and one or more Backup instances. All the instances order the requests, but only the requests ordered by the Master instance are actually executed. All nodes monitor the Master and compare its performance with that of the Backup instances. If the Master does not perform acceptably, it is considered malicious and replaced.
In addition to using RBFT, Plenum leverages Reliable Asynchronous Event Transport (RAET) Protocol, a high-performance, fault-tolerant communications protocol on top of UDP. RAET leverages Daniel J. Bernstein's Curve25519, a highly-secure high-performance Elliptic Curve Digital Signature Algorithm.
Where Plenum differs from RBFT is that instead of using Message Authentication Codes, every communication is digitally signed using Curve25519. While MAC authenticators are computationally less expensive to verify than Digital Signatures, Plenum felt that given the foreseeable protocol applications today, the security trade-offs of using MACs would be too high.
Also, RBFT does not specify the election process, that is, how the primaries of each protocol instance are selected. Plenum has implemented a process that applies a voting to select the primary. The election strategy is pluggable, meaning another strategy with different security and performance characteristics could be substituted easily.