区块链技术公司谈拜占庭容错算法之一
(本文由彭利编辑有问题联系微信2398788267)PBFT:Fabric使用的经典算法(拜占庭容错)这是一种基于消息传递的一致性算法,算法经过三个阶段达成一致性,这些阶段可能因为失败而重复进行。
主链侧链开发交易所 钱包浏览器 发行交易系统 场内场外 项目白皮书 跨境支付 区块链宠物游戏 区块链供应链开发 130-9888-0981 假设节点总数为3f+1,f为拜占庭错误节点:1. 当节点发现leader作恶时,通过算法选举其他的replica为leader。2. leader通过pre-prepare (第一个协议阶段)消息把它选择的 value广播给其他replica节点,其他的replica节点如果接受则发送 prepare(第二个协议阶段),如果失败则不发送。3. 一旦2f个节点接受prepare消息,则节点发送commit(第三个协议阶段)消息。4. 当2f+1个节点接受commit消息后,代表该value值被确定 如下图表示了4个节点,0为leader,同时节点3为fault节点,该节点不响应和发出任何消息。最终节点状态达到commited时,表示该轮共识成功达成。 注:预准备阶段(pre-prepare): 主节点分配一个序列号n给收到的请求,然后向所有备份节点群发预准备消息,预准备消息的格式为,这里v是视图编号,m是客户端发送的请求消息,d是请求消息m的摘要。 准备阶段(prepare): 如果备份节点i接受了预准备消息,则进入准备阶段。在准备阶段的同时,该节点向所有副本节点发送准备消息 ,并且将预准备消息和准备消息写入自己的消息日志。如果看预准备消息不顺眼,就什么都不做。 确认阶段(commit): 当(m,v,n,i)条件为真的时候,副本i将 向其他副本节点广播,于是就进入了确认阶段。
优点:上述其他算法都脱离不了币的存在,币的存在及它的奖励机制会让区块链这一单一的世界穷者更穷,富者更富。 共识效率高,可实现高频交易。 缺点:当系统只剩下33%的节点运行时,系统会停止运行。
非拜占庭容错的共识机制即不考虑有恶意节点的情况,人们考虑到1990 年由 Leslie Lamport 提出的 Paxos 共识算法,在工程角度实现了一种最大化保障分布式系统一致性(存在极小的概率无法实现一致)的机制。