PBFT算法,即为实用拜占庭容错算法。主要应用于联盟链中,它的关键技术是一致性协议。
1.假设共有f个作恶节点,那么总节点需要大于等于3f+1个,即至少有2f+1个诚实节点。
2.一致性协议:由诚实节点共同维护,若主节点的请求得到2f+1个诚实节点的统一反馈,则请求得到同意。
3.视图更换协议:当主节点作恶时,触发视图更换协议,选取新的主节点。
PBFT算法流程:
1.request阶段:首先客户端向主节点发起交易请求。
2.pre-prepare阶段:主节点收到来自客户端的请求后,将信息打包,向全网广播请求信息。
2.prepare阶段:所有节点在收到主节点广播的信息后,把带有自己签名的投票消息广播给其他节点。
3.commit阶段:主节点在收到来自2f+1个诚实节点的反馈后,将消息打包反馈给客户端。
当主节点出现不诚实或者作恶行为时,就会触发视图更换协议,重新选取新的主节点。
PS:这种PBFT共识算法类似于投票中的少数服从多数行为,当大于2/3的人的投票结果一致时,就有代表人公布结果,反馈给群众。