拜占庭容错机制(BFT )基于拜占庭将军问题,确保一致性主要分为这三个阶段。 准备(pre-prepare )、准备(prepare )、确认(commit )。 如下图所示,c是发送请求侧,0123是服务器侧,3是瘫痪的服务器侧。 具体步骤如下:1. Request :请求方c向任意节点发送请求,这里是0 2. Pre-Prepare :服务器端0接收c的请求并进行广播,扩展到123 3. Prepare:123并接收2 3因停机而无法播放4. Commit:0123节点在Prepare阶段收到一定数量以上的相同请求时,进入Commit阶段,播放Commit请求5.Reply:0123节点在comit阶段收到一定数量以上的请求
得到数据最终数据a1111b1111c111d11111d11111
当N=4 F=1时:
得到数据最终数据a1101b1011c10111d0111
当N=4 F=2时:
得到数据最终数据a100nab101NAC001NAD01NAD0110na
因此,拜占庭容错可以容纳约1/3的错误节点误差,IBM编制的Hyperledger使用该算法作为共识算法。