赞
踩
实用拜占庭协议PBFT
PBFT的思想:是基于一个简单但强大的共识机制,使得在分布式系统中的节点能够就某个提案达成一致意见。
利用了Hash函数、数字签名算法、消息验证码,它是第一个工作在异步网络上的拜占庭容错协议,且复杂度只有O(n^2)
PBFT 需要经过三个轮次来完成共识过程:预准备、准备和提交。每个轮次都涉及节点之间的消息传递和确认。
其关键思想包括以下几点:
三个阶段的请求处理(详解):
预准备(Pre-Prepare):
在这个阶段,主节点(Primary)首先向其他节点广播一个提案(proposal)或请求(request)。
其他节点收到提案后会验证其合法性,并将其添加到一个称为“预准备消息”的数据结构中。这个消息包含了提案的详细信息,如请求的内容、序号等。
预准备消息通常包括以下内容:
预准备消息的目的是确保所有节点都收到相同的提案,并能够开始达成共识。
准备(Prepare):
在收到预准备消息后,每个节点会广播一个称为“准备消息”的内容,表明它们已经验证了预准备消息,并同意该提案的合法性。
以下是准备阶段的准备内容及其作用:
准备消息的内容:
提案内容/提案哈希值
提案内容是预准备阶段提出的请求或者提案的详细信息。它包括了客户端发出的请求内容,如交易数据、状态更新等
视图编号(View Number):
视图编号用于标识当前所处的视图,确保消息在正确的视图中得到处理。它有助于节点在正确的系统状态下进行共识。
序号(Sequence Number):
序号用于唯一标识每个请求或提案,以确保消息的顺序性和唯一性。节点通过序号可以追踪和管理请求的处理顺序。
消息认证信息(Message Authentication):
消息认证信息用于确保消息的真实性和完整性。这可能包括数字签名或者其他加密算法生成的认证信息,以防止消息被篡改或伪造。
节点收到足够数量的准备消息后,可以确定提案的合法性,并进入下一个阶段。
提交(Commit):
一旦一个节点收到了足够数量的准备消息,它会广播一个称为“提交消息”的内容,表示该节点已经确认了提案的合法性,并准备将其应用到系统中。
提交消息的内容:
其他节点收到提交消息后,也会确认该提案的合法性,并将其应用到系统状态中。
一旦足够数量的节点确认了提交消息,该请求就被视为已经达成共识,并可以在系统中执行。
该算法我理解
预准备:主节点发布命令:你们去进攻,包含主节点的签名。其他节点接收消息验证签名,其他节点签名。
准备: 其他节点在收到足够数量的预准备消息后,将准备消息广播给其他节点,表示它们已经验证了提案的合法性,并且愿意在后续共识过程中支持该提案。
提交:我受到了其他节点的消息,表示它们已经确认了该提案,并准备将其应用到状态机中。(我要去执行命令了,发给其他节点)
最后:节点将该结果应用到自己的状态机中,并执行对应的操作。
注意:
预准备阶段:
准备阶段:
提交阶段:
假设有N个节点,其中至多f个节点是拜占庭节点。为了保证系统的一致性和安全性,PBFT要求在准备阶段,至少有2f + 1个节点发送了准备消息。这样,即使最多f个节点是拜占庭节点,仍然能够保证至少有f + 1个诚实节点已经准备好了,从而能够继续到提交阶段,并最终达成共识。
实用拜占庭协议根据自己理解已详细解释,有误请指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。