In PBFT, replicas exchange messages using an all-to-all communication pattern, hence PBFT does not scale well; attempts to optimize it exist, along different directions, such as communication pattern (e.g., [1]}, [2]}), leader rotation (e.g., [3]}, [4]}, [5]}, [6]}), view-change optimization (e.g., [4]}, [8]}), pipelining (e.g., [8]}, [2]}), and speculative/optimistic execution (e.g., [11]}, [12]}, [1]}, [14]}, [15]}, [5]}).
