1. PBFT算法
PBFT 被认为是解决拜占庭将军问题最经典的协议。PBFT 在异步模型下通过消息传播机制可以达到高性能共识,在恶意节点数f不超过总节点数的1/3时解决了原始拜占庭容错共识机制效率较低的问题。它的共识过程主要包括请求、预准备、准备、投票、完成五部分组成,如图1所示。
请求:客户端发送请求给主节点,主节点将信息发送给其他所有节点,进入预准备阶段。
预准备:其他节点接收到主节点发送的信息后,对消息进行验证,验证通过后将消息广播给其他节点,进入准备阶段。
准备:其他节点接收到来自其他节点的 2f+1 个验证正确的消息后将信息广播给其他节点,进入到投票阶段。
投票:其他节点接收到来自其他节点的2f+1个验证正确的信息后将消息发送给客户端,进入完成阶段。
完成:当客户端接收到来自 f+1 条相同信息时,则证明共识已经完成。
2. PBFT的改进算法
PBFT 不需要高计算能力,这个特性使得它适合物联网网络中,但是 PBFT 协议需要全节点进行通信,随着网络中节点数量的增加可扩展性降低,并且主节点容易遭受恶意攻击,这使得 PBFT 不能直接使用到存在大量设备的物联网网络中,需要对其进行优化改进,以下是基于 PBFT 的改进共识算法,如图2所示。
1) G-PBFT
G-PBFT(Geographic Practical Byzantine Fault Tolerance)是一种基于位置的可扩展共识协议。由于大多数物联网区块链应用依赖于固定的设备进行数据处理和收集,因此固定设备相对于移动设备来说具有更强的计算能力和较低的恶意节点概率。他们利用固定物联网设备的地理信息来达成共识,系统要求物联网设备定期上传位置和时间戳并采用加密空间坐标(Crypto Spatial Coordinates, CSC)进行监督。在同一位置即相同 CSC 坐标停留 72 小时的设备在当前背书节点达成共识后将被选为背书节点,参与到区块共识过程中。除此之外,背书节点还可更改链的配置,若链的配置被背书节点更改后,就会进入下个周期。选择忠诚、有能力的节点作为背书节点,由背书节点集合进行交易共识,从而减少了验证和记录数据的开销,除此之外,还利用时代切换机制保证了物联网设备的动态运行。
2) S-PBFT
S-PBFT(Security-guaranteed PBFT)是一种基于能效选择共识节点的共识协议,以适应资源受限的物联网设备。S-PBFT中,超过给定的能量阈值即高可用能量的节点作为共识节点参与共识,低于阈值的节点只作为普通节点接收交易信息。在共识开始时,基于可验证随机函数(Verifiable Random Function, VRF)进行领导者选择,领导者将交易进行打包成区块,之后将区块信息发送给高可用能量节点进行验证,节点接收到区块信息后,对节点信息进行验证,成功验证后广播到网络,所有节点包括普通节点更新本地账本状态。基于能效选择共识节点适用于物联网中,同时这种共识方式使用少部分节点代替全网节点,在一定程度上减少了通信量,提高了算法效率。
3) SG-PBFT
SG-PBFT(Score Grouping- PBFT)是一种基于评分分组系统的优化PBFT算法,主要解决车联网中面临的安全问题。SG-PBFT在共识开始前基于节点行为评分将节点分组,初始分值100并随机选择出共识节点和候选节点。共识节点进行执行PBFT共识过程,若本轮共识完成后,成功共识的节点分数增加,共识失败的节点分数减少。每50次请求后分数进行重新排名,得分最低的m个节点将从共识集中删除,而是添加到候选列表的末尾。候选集中得分最高的m个节点将被附加到共识节点集中,并对这些节点重新编号,之后开启下一轮共识过程。基于评分对节点进行分组,由共识节点进行共识,提高了共识效率还考虑了系统的安全性。
4) C-PBFT
C-PBFT(Practical Byzantine Fault Tolerant algorithm based on Clustering) 是一种基于聚类算法k-means思想对节点进行聚类的优化方法。C-PBFT 在聚类中考虑了距离的因素,在大规模的无线密集型网络场景下,利用节点位置特征将节点利用 k-means 聚类,形成多中心层次化的网络结构。
C-PBFT共识流程分为两步:组内共识、组间共识。
组内共识:在准备阶段根据无线网络坐标对共识节点进行聚类分组,在共识阶段时,每个组内分别进行PBFT的预准备、准备、提交三阶段,当组内各节点收集到2f1+1(f1为组内的恶意节点数)条消息时则组内共识完成。
组间共识:相同方式进行各个主节点间的共识,当各个主节点接收到2f2+1(f2为主节点内的恶意节点数)时则组间共识完成。
通过聚类将节点分组将共识任务进行分解,分别在不同层次中进行共识。这种方式有效减少了通信量,并且保证了系统的去中心化。
5) C-RBFT
C-RBFT是针对经典PBFT中存在的对手自适应破坏、主节点和视图转换过程效率低等问题提出的一种结合环签名方案基于信用评级的共识算法以解决物联网的安全问题。该共识算法按照信用高低将节点为三类,α、β两类节点可作为副本节点参与共识,γ节点低于信用阈值不能参与共识过程中。共识开始时,α类的节点中信用评分最高的节点为主节点。之后客户端向α类节点内成员发送事务请求,α类中的节点收到消息后形成闭环,主节点检查并处理请求之后将事务请求广播给环内其他成员,由环内成员互相监督和验证。环内共识完成后主节点将事务请求发送给其他具备副本节点作用的节点,这些节点对预生成块进行验证并提交反馈信息,主节点根据反馈信息判断共识节点状态,若网络中不存在拜占庭节点,则正常执行优化后的共识协议,并在所有反馈信息完全一致的情况下生成提交信息。反之,主节点立马停止执行的优化共识协议并改为执行经典的PBFT共识流程。该共识中环签名的无条件匿名性隐藏了主节点的真实身份,这使得主节点能够有效防止敌方发起的自适应破坏攻击,有效地提高了系统安全性。
6) CRBFT
CRBFT(Credit Reinforce Byzantine Fault Tolerance) 是一种信用强化拜占庭容错共识算法通过降低 PBFT 通信开销以提高区块链在绿色物联网(Green Internet of Things, G-IoT) 中的共识性能。CRBFT 中节点分为主节点、子节点和候选节点三种类型,节点信誉值利用强化学习算法自适应调整,主节点为信誉最高的节点,子节点是候选节点中选出的信誉较高的节点,参与投票过程。其余候选节点低于给定阈值,不参与共识过程,但随着信誉积累可能变成子节点参与共识过程。为了降低通信延迟,CRBFT 取消了PBFT 中的确认阶段,为了消除主节点变化后的状态不一致问题,子节点向新的主节点发送同步请求,验证主节点编号是否一致,同步成功后,主节点将备份数据发送给子节点,由子节点验证备份数据的有效性,最终完成同步验证。CRBFT 算法对节点进行了信誉分类并引入了强化学习对节点信誉进行调整更新,同时采用同步验证机制来代替 PBFT 的确认阶段,保证了共识网络的安全性,并降低了共识延迟,有利于节约能源。
7) R-PBFT
R-PBFT(Reputed PBFT)是一种基于逻辑回归计算节点声誉对PBFT进行改进的共识算法,以解决PBFT应用在车联网中共识延迟、交易频率受限和块堵塞等问题。R-PBFT中节点基于声誉值被分为三类:领导者、第二领导者、候选对象三类,领导者为信誉最高的节点担任,共识过程由第二领导者进行共识,候选对象即低于声誉阈值的节点不参与共识过程。节点声誉值通过逻辑回归基于物联网对象节点的历史行为及其他节点的推荐对节点声誉值进行评估。共识过程中,由领导者和第二领导者进行基于PBFT的共识流程。在共识的确认阶段,当领导者接收到超过2f3+1条(f3为共识节点中的恶意节点数)相同信息时则认为达成共识,之后领导者将信息及确认结果一同发送给网络内所有节点。该算法通过调整节点声誉值的方式提高了交易频率并降低了块堵塞问题。
3. 总结
区块链网络模型受到不可能三角的限制,无论采用哪种共识机制来决定新区块的生成方式,都难以同时兼顾性能、安全、去中心化这3项要求,只能满足其中两项而牺牲另外一项,最多三者取其二。而在物联网场景中,更关注的是能耗、延迟、可扩展性以及安全性。
G-PBFT算法、S-PBFT算法、C-PBFT算法以及R-PBFT算法通过改进提高了算法的性能,降低了算法的共识时延,同时提高了可扩展性;SG-PBFT算法、C-RBFT算法、CRBFT 算法以及更注重安全性,通过对节点进行分类,选择高评分的节点作为共识节点提高了区块链网络的安全性,在可扩展性方面也有所提高。
声明:本网站所有相关资料如有侵权请联系站长删除,资料仅供用户学习及研究之用,不构成任何投资建议!