基于PBFT算法改进的去主节点共识机制优化
2022-12-21董德宝王云光
董德宝,王云光
(1.上海理工大学 健康科学与工程学院,上海 200000;2.上海健康医学院 医疗器械学院,上海 200120)
0 引言
拜占庭容错算法BFT最早由Pease和Lamport在20世纪80年代提出[1],它是依据节点之间相互发送消息来达成共识协议,此协议的时间复杂度为指数级,现实中并未得到大量普及应用。1999年Miguel Castro和Barbara Liskov提出 了实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT),解决了原始BFT算法的信息传输复杂度太高的问题,由此实用拜占庭容错算法在实际系统中变得可行[2]。PBFT算法成功实现将BFT算法的时间复杂度从指数级降低到多项式级别[3],在实际应用中得到普及,但是该算法对节点的共识一致要求较高,更加适合私有链和联盟链[4]。
1 PBFT共识协议
1.1 PBFT算法共识流程
实用拜占庭容错算法由五个共识阶段组成,分别为请求阶段(request)、预准备阶段(pre-prepare)、准备阶段(prepare)、提交阶段(commit)、反馈阶段(reply),如图1所示。

图1 PBFT算法共识流程
1.2 PBFT算法共识详情
请求阶段:主节点(primary)接收来自客户端(cilent)的请求信息,主要验证客户端的签名是否正确(若正确,则请求成功;否则,请求失败),并将信息打包成格式为 预准备阶段:主节点(primary)将接收到客户端的正确请求信息,按照请求号的先后顺序依次分发给副本节点(replica),并将信息打包成格式为< 准备阶段:从节点(replica)收到主节点(primary)的预准备消息后,首先,验证预准备消息的真实性,验证通过再将预准备消息和准备消息打包发送给剩余从节点,并将相应信息写入日志文件,其信息的打包格式为 提交阶段:所有的节点(主节点和从节点)将所有……
