一种基于改进的PBFT物联网区块链共识算法

文档序号:33025942发布日期:2023-01-20 19:34阅读:59来源:国知局
一种基于改进的PBFT物联网区块链共识算法
一种基于改进的pbft物联网区块链共识算法
技术领域
1.本发明属于区块链共识算法技术领域,特别是涉及到一种在物联网区块链中改进的pbft的共识算法。


背景技术:

2.区块链源自于2008年由化名为中本聪的作者提出的比特币的底层技术,区块链是一个多方共同维护的分布式账本,账本可以理解为传统的数据库。与传统数据库不同的是,区块链的各个节点都持有一份完整的账本,账本是由持续增长的区块组成的,每个区块都保存了上个区块的hash值,若攻击者想要篡改账本内容,则需要拥有整个区块链网络中51%以上的算力(以比特币为例),所以,攻击者想要攻击区块链的账本是极其困难的,区块链提供了不可篡改与可溯源的能力。
3.物联网是指通过互联网连接,将各种信息传感设备与网络结合起来的形成的、实现人与物互联互通的一个巨大的网络。近几年物联网技术迅速发展,信息化正在改变人们的衣食住行,但是由于物联网设备的客观受限能力,复杂的接入网络方式,数据的不同结构,使得物联网系统与系统之前协作成本较高。将物联网与区块链结合,可以使物联网数据更安全,从而可以利用此特性发展更多应用,如溯源、存证等,这将使社会生产生活中各方实体之间建立信任,提供社会协作效率。
4.区块链架构是一种分布式的架构。在区块链的系统中,共识算法需要解决的问题是使各个节点通过一个规则将数据保持一致,区块链实质是一个分布式的数据库,因此共识算法是区块链的核心。在公有链系统中常见的共识算法有pow、pos、dpos;在联盟链系统中常见的共识算法有pbft、raft。不同的共识算法会有不同的耗能、安全性、效率等。
5.目前较多的物联网区块链业务使用hyperledger fabric作为其区块链技术平台,fabric v1.4中内置共识算法有solo、kafka、raft,这些算法并不支持拜占庭容错,即当区块链的共识网络中如果有恶意节点(拜占庭节点),则使用内置共识算法不能达成共识。
6.可验证随机函数是一种加密函数,基于数据输入产生伪随机数,以及一个proof,验证者可以轻易验证上述随机数的合法性。其中输入的数据有自己的私钥与公开的一个信息,验证者可以通过证明者的公钥、公开信息和proof即可验证该随机数的合法性。
7.现如今物联网区块链在使用fabric平台中默认共识算法时存在以下不足:fabric内置的solo、kafka、raft共识算法并不支持拜占庭容错算法,若共识网络中有拜占庭节点则不能达成共识,这将使相关业务被迫停止,无法继续服务。
8.直接将pbft共识算法应用于fabric平台有以下不足:由于pbft算法的通信复杂度依赖于参与协议的节点数量,每个节点都要与其他节点进行通信,当区块链共识网络的节点增加时,会使共识达成的速度降低,影响区块链网络的吞吐量。
9.因此,现有技术亟需一种新的技术方案来解决上述问题。


技术实现要素:

10.本发明所要解决的技术问题是:提供一种基于改进的pbft物联网区块链共识算法,结合dpos选择代理节点的思想在pbft共识网络中选择代理节点参与pbft共识,使得在共识节点较多时区块链网络保持较好的性能,从而应对日益增长的业务量需求。
11.一种基于改进的pbft物联网区块链共识算法,其特征是:包括以下步骤,且以下步骤顺次进行,步骤一、pbft共识网络初始化,设定pbft共识超时时间,设置每个共识节点的信誉值为1;步骤二、pbft共识网络接收应用程序sdk软件开发工具包的请求,每个节点调用可验证随机函数生成范围在0-65535之间的随机数,节点的排序分数为信誉值与该随机数的乘积,根据每个节点的排序分数进行排序,选择排序分数最大的4个节点参与pbft共识,节点的排序分数相等时,选择其中一个的节点参与pbft共识;步骤三、所述步骤二中获得排序分数最高的节点为pbft共识的主节点,排序分数最高的节点为一个以上时,选取其中的一个节点作为主节点,其他节点为副本节点;步骤四、主节点向pbft共识网络发起共识请求,经过三阶段共识,在所述步骤一设定的pbft共识超时时间内,主节点收到2f+1个确认消息后共识完成,式中,f为拜占庭节点;步骤五、共识算法统计pbft共识网络中的节点是否返回确认消息,节点成功返回确认消息,节点的信誉值不变;节点未返回确认消息,将该节点的信誉值更新为原值的二分之一;步骤六、达成共识后,主节点向fabric网络发送区块,fabric网络中的peer对等节点将区块写入到本地账本,完成一次交易流程。
12.所述步骤四中未在设定的pbft共识超时时间内,主节点收到2f+1个确认消息,须重新选择节点参与pbft共识进行对交易的排序。
13.所述步骤六主节点向fabric网络发送区块后,anchor锚节点广播给同一通道所有组织的leader领导节点,leader节点在接收到由orderer排序节点发送的区块后进行读写集版本、交易格式、是否重复、是否有足够背书验证,该区块通过验证后,peer对等节点将该区块写入到本地账本中。
14.所述leader领导节点用于在组织内广播通过验证的区块;所述anchor锚节点用于跨组织广播区块;所述peer对等节点用于将收到的区块写入到帐本中,通知客户端应用程序的交易提案已经写入区块链,以及该交易提案是否有效。
15.通过上述设计方案,本发明可以带来如下有益效果:一种基于改进的pbft物联网区块链共识算法,区块链平台采用了目前发展良好的fabric平台,为fabric平台设计了改进的pbft共识算法,在pbft共识算法的基础上加入了可验证随机函数与代理节点设计,既能解决fabric共识网络中不支持拜占庭容错的缺陷,同时解决了在pbft共识网络拓展时通信量剧增的问题,本发明算法在提高共识安全性的同时提高了共识速度。
16.本发明进一步有益效果在于,设置每个共识节点的信誉值为1,节点是否可以参与本轮共识取决于节点的排序分数,排序分数由信誉值与节点通过可验证随机函数产生的随机数相乘得到,而可验证随机函数的随机数范围为0-65535,这样设置可以在一定程度上避免共识节点排序分数相同的情况,便于在步骤二中选择节点。
17.所述信誉度更新规则是指在pbft共识网络中,节点若成功完成了本轮共识,则将该节点的信誉度不变;当节点未能完成本轮共识则将该节点的信誉度更新为原来的二分之一;若节点产生过一次拜占庭错误则相较于其他节点更容易再次发生拜占庭错误,因此设置了当节点未完成消息确认则降低该节点的信誉度,节点的信誉度降低将影响节点下次参于pbft共识。
附图说明
18.以下结合附图和具体实施方式对本发明作进一步的说明:图1为本发明一种基于改进的pbft物联网区块链共识算法流程示意图。
19.图2为本发明一种基于改进的pbft物联网区块链共识算法信誉值更新规则流程示意图。
具体实施方式
20.一种基于改进的pbft物联网区块链共识算法,如图1所示,包括以下步骤步骤一:在fabric网络启动后,pbft共识网络进行初始化操作,设置pbft共识超时的时间,给所有的共识节点设置初始信誉值为1。
21.步骤二:在pbft共识网络初始化成功后,等待应用程序sdk向pbft共识网络发送交易请求request,pbft共识网络在收到请求消息后,各节点通过可验证随机函数生成一个随机数,其中公开消息为pbft共识网络当前视图编号,然后计算排序分数,排序分数计算规则为上述随机数与节点信誉值的乘积。将根据排序分数大小对pbft共识节点排序,取排序分数最大的四个节点作为代理节点参与本轮pbft共识。如果在选择上述四个节点时若干个节点信誉值相等,则随机选择其中的节点参与本轮pbft共识。
22.步骤三:在步骤二中已成功选择好了参与本轮pbft共识的节点,排序分数最高的节点作为本轮pbft共识的主节点,接下来就是常规的pbft共识流程。
23.步骤四:在本轮pbft共识中,主节点发送共识请求,直至收到2f+1个确认消息后,共识完成,其中,f为拜占庭节点。
24.在pbft共识算法的流程中,c为客户端,0,1,2,3为四个pbft共识节点,一个完整的共识需要经过request(请求)、pre-prepare(预准备)、prepare(准备)、commit(提交)、reply(回复)流程。在本发明算法中,排序分数最高的节点作为本轮pbft共识的主节点。在预准备(pre-prepare)阶段中:主节点对请求消息进行验证,如果验证通过的话就广播给其他的节点;在准备(prepare)阶段:其他节点验证pre-prepare消息是否有效,如果通过则将prepare消息广播给其他的节点。节点在收到2f+1个prepare消息后则广播commit消息;在提交(commit)阶段:主节点在收到2f+1个有效的commit确认消息后,本轮次的共识完成。
25.步骤五:如图2所示,在完成本轮pbft共识后,系统根据收到的确认消息对参加本轮pbft共识节点的信誉值进行更新。
26.在fabric网络启动时,设置了节点的初始信誉值。在完成一次共识流程后对节点更新信誉值有两种情况,一种情况是未收到pbft共识节点的确认消息,则将该节点的信誉值更新为原来的二分之一。在该类情况中有可能是主节点故障,需要将所有参与本轮pbft共识的节点的信誉值更新为原来的二分之一。这样做的原因是本轮参与pbft共识的节点可
能存在拜占庭节点大于或等于一个,且节点之间网络通信可能有问题,这些节点在参与之后的pbft共识时也有几率不能完成共识,因此将本轮参与pbft共识的节点的信誉值均更新为原来的二分之一。另一种情况是收到了所有节点的确认消息,这表示本轮次pbft共识中所有节点都顺利完成了三阶段共识,即pre-prepare、prepare、commit三个阶段,可以看作良好的节点,因此本轮次节点的信誉值不做更新。这样操作的优势是尽量让良好的节点参与pbft共识。在信誉值更新完成后,节点可以等待参与下次共识。
27.步骤六:本轮pbft共识中的主节点向fabric网络发送区块,peer节点将区块写入到本地账本,完成一次交易流程。
28.pbft共识网络完成共识后,创建交易区块,广播给同一通道所有组织的leader节点,leader节点在接收到由orderer节点发送的区块后进行验证:读写集版本、交易格式、是否重复、是否有足够背书,如果该区块通过验证,则将该区块写入到本地账本中。leader节点在组织内广播通过验证的区块,anchor节点负责跨组织广播区块。peer节点将收到的区块写入到帐本中,通知客户端应用程序的交易提案已经写入区块链,以及该交易提案是否有效。
29.本发明中使用的区块链平台是linux基金会下的hyperledger fabric,fabric是开源的、面向企业的区块链平台,不仅有一般区块链平台的去中心化、不可篡改和可追溯的特征,还有企业级别的准入机制,可以阻挡攻击者的非授权访问,更有优势的相较于比特币、以太坊是有更高的交易速度。
30.本发明设计的一种基于改进的pbft的物联网区块链共识算法,基于物联网区块链业务常用的hyperledger fabric平台进行改进,与现有的技术相比较,本发明结合了可验证随机函数dpos与pbft的优点,不仅为fabric添加了pbft共识算法,使其支持了拜占庭容错,而且将dpos思想与pbft共识算法相结合,对pbft共识算法进行改进,根据排序分数选择代理节点参与pbft共识流程,减少了普通pbft共识网络的通信次数,提高了pbft共识算法的效率。
31.以上所述为本发明的具体实施方式,但本发明保护范围不局限于以上,熟悉本技术领域的技术人员可轻易想到变化或替换。因此,本发明的保护范围以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1