1.一种改进的PBFT区块链共识方法,其特征在于,具体包括一下步骤:将所有节点分为共识集合和待定集合;
对共识集合中的节点进行评分,并通过该评分选择主节点;
根据选取的主节点开始视图的共识过程;
当共识成功时,主节点历史评分+1,参与共识次数+1;从节点参与共识次数+1;
当共识失败时,主节点历史评分-3;若为从节点怀疑导致视图切换,则该从节点历史共识评分+1且参与共识次数+1。
2.根据权利要求1所述的一种改进的PBFT区块链共识方法,其特征在于,在进行第一次共识时,节点被随机分配到共识集合和待定集合;在之后的共识过程中,共识集合和待定集合中的节点按照节点的评分从高到低进行排序,当共识集合Ra中的节点的历史共识评分小于0时,将该节点将转移到待定集合Rb末尾,同时将Rb集合的首节点转移到共识集合Ra中。
3.根据权利要求2所述的一种改进的PBFT区块链共识方法,其特征在于,从第二次共识开始,将所有节点分为共识集合和待定集合时,需要满足:|Ra|=3f+1;
|Rb|=f;
其中,|Ra|表示共识集合Ra中节点的数量;|Rb|表示待定集合Rb中节点的数量;f表示参与共识的集合Ra中允许失效的最大节点数。
4.根据权利要求1所述的一种改进的PBFT区块链共识方法,其特征在于,对共识集合中的节点进行评分包括:其中,Si表示节点i的总评分即评估结果;R表示所有节点组成的集合,|R|表示总节点数;di表示节点i的历史共识评分;ei表示节点剩余电量的百分比;ci和C分别表示节点成功参与共识的次数与总共识次数;k1、k2、k3分别表示历史共识评分、节点剩余电量的百分比、节点成功参与共识的次数对节点评分的权重。
5.根据权利要求4所述的一种改进的PBFT区块链共识方法,其特征在于,历史共识评分、节点剩余电量的百分比、节点成功参与共识的次数对节点评分的权重分别为k1=0.5、k2=0.3、k3=0.2。
6.根据权利要求1所述的一种改进的PBFT区块链共识方法,其特征在于,通过节点的评分选择主节点包括通过节点的评分对节点进行排序,使得节点序号越小节点评分越大、排序越靠前,且排序越靠前的节点被选为主节点的概率越大,被选出的主节点序号表示为:其中,p表示最终选出的主节点序号;unifrnd(0,|Ra|-1)表示在0到|Ra|-1之间产生一个随机数,|Ra|表示共识集合Ra中节点的数量;floor()表示对括号中的数进行向下取整。
7.根据权利要求1所述的一种改进的PBFT区块链共识方法,其特征在于,根据选取的主节点开始视图的共识过程包括:主节点将交易打包成区块后生成预准备消息并向从节点广播;
从节点收到预准备消息后确认消息的正确性,若消息没有被篡改且消息中的区块和交易也没有被篡改,则向其他节点包括主节点和从节点广播准备消息;
若消息或消息中的区块和交易被篡改向客户端发送视图变更消息;
客户端收到不同节点发送的2f+1个相同的视图变更消息后重新进行共识;
若节点收到不同节点发送的2f+1个与预准备消息一样的准备消息后,向客户端回复执行成功消息;
此时,主节点将交易打包的区块加入到每个节点中;
其中,参与共识的集合Ra中允许失效的最大节点数。