3.4.2 Istanbul Byzantine Fault Tolerant (IBFT)

IBFT is another Byzantine fault-tolerant protocol based on Practical Byzantine Fault Tolerance (PBFT). On a high level, Byzantine consensus is achieved deterministically as follows: 1. A leader or bidder/proposer is selected. 2. Each proposed block goes through several stages of communication between the nodes before being added and confirmed on the blockchain. There are four types of messages which are exchanged between the nodes:
  • Pre-Prepare, Ready, Commit: Used through ordinary consensus algorithms operations.
  • Round robin: Used to select a new block producer when the current producer is suspected of failing or when the block has not been created within a specific time frame.
Additionally, there are two approaches in the SatoshiChain framework for choosing block producers:
  • Round-robin: This is a block producer selection strategy where a different bidder is chosen for every block producing phase.
  • Attached bidder: A new bidder is only selected whenever a malicious behavior has been detected by the current bidder.
In these two approaches, every validator knows in advance which one of them is going to be the next block producer. This is because the decision is made through deterministic calculations based on node IDs. Similar to PBFT, IBFT also guarantees that there will be only one single bidder in each round. Moreover, the bidder is required to get responses from the other nodes in order to continue executing its further tasks. This means that in the case of a network partition with more than n nodes (at least more than 3n+1 nodes), the protocol does not make any decisions not to break the consensus until the partition is fixed and their communication is timely synced. This also allows immediate finality where no forks are ever allowed to occur.