公开/公告号CN112766986A
专利类型发明专利
公开/公告日2021-05-07
原文格式PDF
申请/专利权人 浙江天演维真网络科技股份有限公司;
申请/专利号CN202110113496.3
发明设计人 郑新立;
申请日2021-01-27
分类号G06Q30/00(20120101);G06F16/27(20190101);G06F21/64(20130101);G06Q50/02(20120101);
代理机构33289 杭州裕阳联合专利代理有限公司;
代理人田金霞
地址 310000 浙江省杭州市下城区沈家路319号119
入库时间 2023-06-19 10:54:12
技术领域
本发明涉及农产品溯源以及区块链领域,具体涉及一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法。
背景技术
传统的农产品生产、销售和进出口过程中,各环节连接松散、生产过程不科学、上下游信息不联通,农产品安全难以保障。为保障农产品安全、确保责任可追究,建立可信的农产品溯源体系是关键。传统的溯源系统大多采用集中式数据库来存农产品储供应链信息,无法保证存入信息的安全性和可靠性。近年来,随着区块链技术的兴起,其去中心化、不可篡改、信息可追溯等特性可以很好地改进传统溯源体系,有效保证农产品追溯信息的真实性、有效性和可靠性。
在实际应用中,区块链按照中心化程度递减可以分为公有链、联盟链和私有链,公有链由所有参与成员维护,以比特币为代表;联盟链则由一些机构发起,只允许组织内成员参加,具有“部分中心化”的特点;私有链的写入权限只受一个实体组织控制,为了追求性能已渐渐演变成中心化的模式。考虑农产品供应链场景的成员准入与交易规模,联盟链是最佳选择。共识算法是区块链的核心技术,主要分为3类:工作量证明(POW,proof of work),权益证明(POS,proof of stack)和实用拜占庭容错算法(PBFT,practical byzantinefault tolerance)。POW和POS主要运用在公有链中,在高交易量和低成本需求的联盟链中并不适用,而实用拜占庭容错算法却可以很好地适应该场景。但是PBFT算法在实际应用中容易出现由于主节点错误而产生的发送不同消息给不同节点、无法判断所选节点是否为错误节点等问题,将给系统的安全性带来严重隐患。部分方法改进了PBFT算法,引入了监督机制,以规避单一主节点错误而产生的问题,但这些方法同样引入了易于发生错误的监督节点,同时共识产生于主节点或监督节点也会造成共识被篡改的风险。还有部分方法在PBFT中引入了信任模型,但其信任模型的应用依然建立在主从节点的架构之上,基于信任模型的迭代容易陷入少量节点长期占据高信任地位,从而增加被攻击的风险。
发明内容
本发明提供了一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法,采用如下的技术方案:
一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法,包含以下步骤:
从区块链的所有节点中选择若干提案节点和非提案节点;
提案节点对节点的提案进行签名验证得到待投票提案;
令自身提案与待投票提案相同的提案节点为监督节点,监督节点监督非提案节点对待投票提案的签名投票得到共识提案;
将共识提案返回给农产品溯源区块链。
进一步地,从区块链的所有节点中选择若干提案节点和非提案节点的具体方法为:
计算区块链的每个节点的信誉值;
将所有节点按照信誉值进行排序;
选择信誉值靠前的若干个节点作为提案节点;
将剩余的节点作为非提案节点。
进一步地,按照下述公式计算每个节点的信誉值:
nperf
c
其中,cap
设定提案节点数量阈值为NP,按照信誉度排序,取前NP个节点作为提案节点,将剩余的节点作为非提案节点。
进一步地,提案节点对节点的提案进行签名验证得到待投票提案的具体方法为:
每个提案节点向其它提案节点广播节点的提案;
其它提案节点对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回至所有提案节点;
若节点的提案得到预设数量的提案节点的签名,则节点的提案成为待投票提案。
进一步地,在提案节点对节点的提案进行签名验证得到待投票提案的过程中,根据签名的结果对节点的信誉值进行更新。
进一步地,当节点的提案得到预定数量的提案节点的签名后通过下述公式对提案的节点和不同于当前提案的节点的所有提案节点的信誉值进行更新:
c
c
其中,α
进一步地,若节点的提案未得到预定数量的提案节点的签名,则通过下述公式对提案的节点的信誉值进行更新:
c
进一步地,监督节点监督非提案节点对待投票提案的签名投票得到共识提案的具体方法为:
监督节点向所有非提案节点广播待投票提案;
非提案节点接收到待投票提案后对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回给所有监督节点;
若返回给监督节点的对待投票提案的签名个数大于预设个数,则广播监督节点收到签名的源非提案节点列表给其它监督节点;
若所有监督节点收到签名的源非提案节点列表长度大于预设长度,则将监督节点给出的所有源非提案节点列表中的节点的交集作为共识节点。
进一步地,在监督节点监督非提案节点对待投票提案的签名投票得到共识提案的过程中,根据签名的结果对节点的信誉值进行更新。
进一步地,在得到共识节点后,通过下述公式节点的信誉值进行更新:
c
c
其中,α
本发明的有益之处在于所提供的基于改进的拜占庭容错算法的农产品溯源区块链共识方法能够有效避免应用于农产品溯源领域的区块链共识提案过程中受单一或少部分节点错误影响的问题,并能够缓解其它基于信任的模型在区块链共识提案在迭代过程中因容易陷入少量节点长期占据高信任地位而增加被攻击的风险的问题。
附图说明
图1是本发明的基于改进的拜占庭容错算法的农产品溯源区块链共识方法的示意图。
具体实施方式
以下结合附图和具体实施例对本发明作具体的介绍。
如图1所示,本发明揭示一种基于改进的拜占庭容错算法的农产品溯源区块链共识方法,包含以下步骤:S1:从区块链的所有节点中选择若干提案节点和非提案节点;S2:提案节点对节点的提案进行签名验证得到待投票提案;S3:令自身提案与待投票提案相同的提案节点为监督节点,监督节点监督非提案节点对待投票提案的签名投票得到共识提案;S4:将共识提案返回给农产品溯源区块链。
通过上述的基于改进的拜占庭容错算法的农产品溯源区块链共识方法能够有效避免应用于农产品溯源领域的区块链共识提案过程中受单一或少部分节点错误影响的问题,并能够缓解其它基于信任的模型在区块链共识提案在迭代过程中因容易陷入少量节点长期占据高信任地位而增加被攻击的风险的问题,从而保证对农产品的溯源的有效性及准确性。
针对步骤S1,从区块链的所有节点中选择若干提案节点和非提案节点
具体的,系统中包含若干个节点。每个节点均向其它节点广播其信誉值。
具体的,从区块链的所有节点中选择若干提案节点和非提案节点的具体方法为:计算区块链的每个节点的信誉值;将所有节点按照信誉值进行排序;选择信誉值靠前的若干个节点作为提案节点;将剩余的节点作为非提案节点。
进一步地,按照下述公式计算每个节点的初始的信誉值:
nperf
c
其中,cap
针对步骤S2,提案节点对节点的提案进行签名验证得到待投票提案
作为一种具体的实施方式,提案节点对节点的提案进行签名验证得到待投票提案的具体方法为:
每个提案节点向其它提案节点广播节点的提案;其它提案节点对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回至所有提案节点;若节点的提案得到预设数量的提案节点的签名,则节点的提案成为待投票提案。
在提案节点对节点的提案进行签名验证得到待投票提案的过程中,根据签名的结果对节点的信誉值进行更新。
具体地,当节点的提案得到预定数量的提案节点的签名后通过下述公式对提案的节点和不同于当前提案的节点的所有提案节点的信誉值进行更新:
c
c
其中,α
若节点的提案未得到预定数量的提案节点的签名,则通过下述公式对提案的节点的信誉值进行更新:
c
针对步骤S3,令自身提案与待投票提案相同的提案节点为监督节点,监督节点监督非提案节点对待投票提案的签名投票得到共识提案
作为一种具体的实施方式,监督节点监督非提案节点对待投票提案的签名投票得到共识提案的具体方法为:监督节点向所有非提案节点广播待投票提案;非提案节点接收到待投票提案后对其进行验证,若提案与自身的相同,则进行签名,若不同,则不进行签名,并将签名结果返回给所有监督节点;若返回给监督节点的对待投票提案的签名个数大于预设个数,则广播监督节点收到签名的源非提案节点列表给其它监督节点;若所有监督节点收到签名的源非提案节点列表长度大于预设长度,则将监督节点给出的所有源非提案节点列表中的节点的交集作为共识节点。
进一步地,在监督节点监督非提案节点对待投票提案的签名投票得到共识提案的过程中,根据签名的结果对节点的信誉值进行更新。
作为一种具体的实施方式,在得到共识节点后,通过下述公式节点的信誉值进行更新:
c
c
其中,α
针对步骤S4,将共识提案返回给农产品溯源区块链
以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。
机译: 基于拜占庭容错算法的区块链的共识方法,装置和系统
机译: 基于拜占庭容错算法的区块链的共识方法,装置和系统
机译: 基于蜂蜜獾拜占庭式容错共识机制的区块链Consensus方法,节点和系统