联系:都是共识算法,Bitcoin使用的是Pow共识,联盟链业务要求高的使用的是PBFT共识(例如Fabric系列)
区别:拿两个经典的例子来说明:
1.Bitcoin中,Pow这块应用在区块的验证阶段,对于区块只有0和1两种状态。这里假设真值为正数,假值为0.
当区块上链之前需要进行全网验证。当50%以上的节点同意此区块即验证成功。低于50%的节点包括两种情况(拜占庭节点(这里默认拜占庭节点全部反对的情况)和崩溃节点)。当拜占庭节点进行伪装,不会对区块验证的结果造成影响。
2.PBFT共识算法的经典案例,国王和将军问题。国王下达了发兵攻打A的命令。此处拜占庭节点可以有三种选择(发送正确的指令、发送错误的指令、不发送指令)。与POW中的bool类型有着本质的区别。
所以要想达成发兵攻打A的指令能够达成共识。需要的节点数是3f+1个。f为拜占庭节点。也是一个少数服从多数的问题。f+1个无故障节点,f个拜占庭节点,f个崩溃节点。所以f+1获得最终的决定权。