基于改进的拜占庭容错算法的农产品溯源区块链共识方法与流程

文档序号:24971773发布日期:2021-05-07 22:42阅读:117来源:国知局
基于改进的拜占庭容错算法的农产品溯源区块链共识方法与流程

本发明涉及农产品溯源以及区块链领域,具体涉及一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法。



背景技术:

传统的农产品生产、销售和进出口过程中,各环节连接松散、生产过程不科学、上下游信息不联通,农产品安全难以保障。为保障农产品安全、确保责任可追究,建立可信的农产品溯源体系是关键。传统的溯源系统大多采用集中式数据库来存农产品储供应链信息,无法保证存入信息的安全性和可靠性。近年来,随着区块链技术的兴起,其去中心化、不可篡改、信息可追溯等特性可以很好地改进传统溯源体系,有效保证农产品追溯信息的真实性、有效性和可靠性。

在实际应用中,区块链按照中心化程度递减可以分为公有链、联盟链和私有链,公有链由所有参与成员维护,以比特币为代表;联盟链则由一些机构发起,只允许组织内成员参加,具有“部分中心化”的特点;私有链的写入权限只受一个实体组织控制,为了追求性能已渐渐演变成中心化的模式。考虑农产品供应链场景的成员准入与交易规模,联盟链是最佳选择。共识算法是区块链的核心技术,主要分为3类:工作量证明(pow,proofofwork),权益证明(pos,proofofstack)和实用拜占庭容错算法(pbft,practicalbyzantinefaulttolerance)。pow和pos主要运用在公有链中,在高交易量和低成本需求的联盟链中并不适用,而实用拜占庭容错算法却可以很好地适应该场景。但是pbft算法在实际应用中容易出现由于主节点错误而产生的发送不同消息给不同节点、无法判断所选节点是否为错误节点等问题,将给系统的安全性带来严重隐患。部分方法改进了pbft算法,引入了监督机制,以规避单一主节点错误而产生的问题,但这些方法同样引入了易于发生错误的监督节点,同时共识产生于主节点或监督节点也会造成共识被篡改的风险。还有部分方法在pbft中引入了信任模型,但其信任模型的应用依然建立在主从节点的架构之上,基于信任模型的迭代容易陷入少量节点长期占据高信任地位,从而增加被攻击的风险。



技术实现要素:

本发明提供了一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法,采用如下的技术方案:

一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法,包含以下步骤:

从区块链的所有节点中选择若干提案节点和非提案节点;

提案节点对节点的提案进行签名验证得到待投票提案;

令自身提案与待投票提案相同的提案节点为监督节点,监督节点监督非提案节点对待投票提案的签名投票得到共识提案;

将共识提案返回给农产品溯源区块链。

进一步地,从区块链的所有节点中选择若干提案节点和非提案节点的具体方法为:

计算区块链的每个节点的信誉值;

将所有节点按照信誉值进行排序;

选择信誉值靠前的若干个节点作为提案节点;

将剩余的节点作为非提案节点。

进一步地,按照下述公式计算每个节点的信誉值:

nperfi=∑j∈[1,m],j≠idelayij,

ci=wcap·capi+wnperf·nperfi,

其中,capi为节点i的处理性能,delayij为节点i到节点j的网络通信延迟,nperfi为节点i的网络性能,wcap为节点i的处理性能权重,wnperf为节点i的网络性能权重,ci为节点i的信誉值;

设定提案节点数量阈值为np,按照信誉度排序,取前np个节点作为提案节点,将剩余的节点作为非提案节点。

进一步地,提案节点对节点的提案进行签名验证得到待投票提案的具体方法为:

每个提案节点向其它提案节点广播节点的提案;

其它提案节点对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回至所有提案节点;

若节点的提案得到预设数量的提案节点的签名,则节点的提案成为待投票提案。

进一步地,在提案节点对节点的提案进行签名验证得到待投票提案的过程中,根据签名的结果对节点的信誉值进行更新。

进一步地,当节点的提案得到预定数量的提案节点的签名后通过下述公式对提案的节点和不同于当前提案的节点的所有提案节点的信誉值进行更新:

c当前新=(1+βe)·c当前,

c提案新=(1-αe)·c提案,

其中,αe为提案未被选中的惩罚系数,βe为提案被选中的奖励系数,c当前为提案的节点的信誉值,c当前新为提案的节点的更新后的信誉值,c提案为提案节点的信誉值,c提案新为提案节点更新后的信誉值,其中,c提案不同于当前提案的节点。

进一步地,若节点的提案未得到预定数量的提案节点的签名,则通过下述公式对提案的节点的信誉值进行更新:

c当前新=(1-αe)·c当前。

进一步地,监督节点监督非提案节点对待投票提案的签名投票得到共识提案的具体方法为:

监督节点向所有非提案节点广播待投票提案;

非提案节点接收到待投票提案后对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回给所有监督节点;

若返回给监督节点的对待投票提案的签名个数大于预设个数,则广播监督节点收到签名的源非提案节点列表给其它监督节点;

若所有监督节点收到签名的源非提案节点列表长度大于预设长度,则将监督节点给出的所有源非提案节点列表中的节点的交集作为共识节点。

进一步地,在监督节点监督非提案节点对待投票提案的签名投票得到共识提案的过程中,根据签名的结果对节点的信誉值进行更新。

进一步地,在得到共识节点后,通过下述公式节点的信誉值进行更新:

c1更新=(1+βw)·c1,

c2更新=(1-αw)·c2,

其中,αw为未对共识提案签名的惩罚系数,βw对共识提案签名的奖励系数,c1为第一节点的信誉值,c1更新为第一节点的更新后的信誉值,第一节点为既属于非提案节点又属于共识节点的节点,c2为第二节点的信誉值,c2更新为第二节点的更新后的信誉值,第二节点为属于非提案节点但不属于共识节点的节点。

本发明的有益之处在于所提供的基于改进的拜占庭容错算法的农产品溯源区块链共识方法能够有效避免应用于农产品溯源领域的区块链共识提案过程中受单一或少部分节点错误影响的问题,并能够缓解其它基于信任的模型在区块链共识提案在迭代过程中因容易陷入少量节点长期占据高信任地位而增加被攻击的风险的问题。

附图说明

图1是本发明的基于改进的拜占庭容错算法的农产品溯源区块链共识方法的示意图。

具体实施方式

以下结合附图和具体实施例对本发明作具体的介绍。

如图1所示,本发明揭示一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法,包含以下步骤:s1:从区块链的所有节点中选择若干提案节点和非提案节点;s2:提案节点对节点的提案进行签名验证得到待投票提案;s3:令自身提案与待投票提案相同的提案节点为监督节点,监督节点监督非提案节点对待投票提案的签名投票得到共识提案;s4:将共识提案返回给农产品溯源区块链。

通过上述的基于改进的拜占庭容错算法的农产品溯源区块链共识方法能够有效避免应用于农产品溯源领域的区块链共识提案过程中受单一或少部分节点错误影响的问题,并能够缓解其它基于信任的模型在区块链共识提案在迭代过程中因容易陷入少量节点长期占据高信任地位而增加被攻击的风险的问题,从而保证对农产品的溯源的有效性及准确性。

针对步骤s1,从区块链的所有节点中选择若干提案节点和非提案节点

具体的,系统中包含若干个节点。每个节点均向其它节点广播其信誉值。

具体的,从区块链的所有节点中选择若干提案节点和非提案节点的具体方法为:计算区块链的每个节点的信誉值;将所有节点按照信誉值进行排序;选择信誉值靠前的若干个节点作为提案节点;将剩余的节点作为非提案节点。

进一步地,按照下述公式计算每个节点的初始的信誉值:

nperfi=∑j∈[1,m],j≠idelayij,

ci=wcap·capi+wnperf·nperfi,

其中,capi为节点i的处理性能,delayij为节点i到节点j的网络通信延迟,nperfi为节点i的网络性能,wcap为节点i的处理性能权重,wnperf为节点i的网络性能权重,ci为节点i的信誉值;设定提案节点数量阈值为np,按照信誉度排序,取前np个节点作为提案节点,将剩余的节点作为非提案节点。

针对步骤s2,提案节点对节点的提案进行签名验证得到待投票提案

作为一种具体的实施方式,提案节点对节点的提案进行签名验证得到待投票提案的具体方法为:

每个提案节点向其它提案节点广播节点的提案;其它提案节点对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回至所有提案节点;若节点的提案得到预设数量的提案节点的签名,则节点的提案成为待投票提案。

在提案节点对节点的提案进行签名验证得到待投票提案的过程中,根据签名的结果对节点的信誉值进行更新。

具体地,当节点的提案得到预定数量的提案节点的签名后通过下述公式对提案的节点和不同于当前提案的节点的所有提案节点的信誉值进行更新:

c当前新=(1+βe)·c当前,

c提案新=(1-αe)·c提案,

其中,αe为提案未被选中的惩罚系数,βe为提案被选中的奖励系数,c当前为提案的节点的信誉值,c当前新为提案的节点的更新后的信誉值,c提案为提案节点的信誉值,c提案新为提案节点更新后的信誉值,其中,c提案不同于当前提案的节点。

若节点的提案未得到预定数量的提案节点的签名,则通过下述公式对提案的节点的信誉值进行更新:

c当前新=(1-αe)·c当前。

针对步骤s3,令自身提案与待投票提案相同的提案节点为监督节点,监督节点监督非提案节点对待投票提案的签名投票得到共识提案

作为一种具体的实施方式,监督节点监督非提案节点对待投票提案的签名投票得到共识提案的具体方法为:监督节点向所有非提案节点广播待投票提案;非提案节点接收到待投票提案后对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回给所有监督节点;若返回给监督节点的对待投票提案的签名个数大于预设个数,则广播监督节点收到签名的源非提案节点列表给其它监督节点;若所有监督节点收到签名的源非提案节点列表长度大于预设长度,则将监督节点给出的所有源非提案节点列表中的节点的交集作为共识节点。

进一步地,在监督节点监督非提案节点对待投票提案的签名投票得到共识提案的过程中,根据签名的结果对节点的信誉值进行更新。

作为一种具体的实施方式,在得到共识节点后,通过下述公式节点的信誉值进行更新:

c1更新=(1+βw)·c1,

c2更新=(1-αw)·c2,

其中,αw为未对共识提案签名的惩罚系数,βw对共识提案签名的奖励系数,c1为第一节点的信誉值,c1更新为第一节点的更新后的信誉值,第一节点为既属于非提案节点又属于共识节点的节点,c2为第二节点的信誉值,c2更新为第二节点的更新后的信誉值,第二节点为属于非提案节点但不属于共识节点的节点。

针对步骤s4,将共识提案返回给农产品溯源区块链

以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1