I recently got to know about IBFT and Quorum and started studying on their consensus protocols. And what is the difference on IBFT and PBFT? Are they pretty much like the same and, when considering Quorum IBFT is doing something more with respect to PBFT in other solutions like Hyperledger? Or are they completely different no matter it is Quorum or Hyperledger? Any answer would be highly appreciated.
IBFT Consensus is inspired by Castro-Liskov 99 PBFT paper. Like PBFT, in IBFT a block is confirmed by passing through PREPREPARE, PREPARE and COMMIT phases and like PBFT, the validators moves through series of Rounds. If a block is not commited in a given ROUND, the validators move to the next ROUND and try to commit a block in that ROUND.
Both Hyperledger PBFT and Quorum IBFT are based on Castro-Liskov's PBFT paper. I haven't gone through the implementation of Hyperledger PBFT, but I believe it would be similar to Quorum IBFT.
I also found some answers based on this paper. According to it,
- In IBFT there is no client submitting requests to the network, instead, all of the validators can in turn propose a block to the network of validators.
- IBFT allows for two types of nodes: validators that take part in the consensus protocol and standard nodes that validate blocks but do not participate in the consensus protocol.
- the set of validators in PBFT is static whereas IBFT features a dynamic validator-set where validators can be added to, or removed from, the set (we can add a validator any time to the Quorum chain, I tested it).
- IBFT specifies a simplified version of the so-called View-Change message of PBFT and does not include the so-called New-View message included in the PBFT protocol.
- While IBFT does not use checkpoints explicitly, each IBFT block can be considered the IBFT equivalent of a PBFT checkpoint.