一种多方量子拜占庭共识优化协议

文档序号:25437418发布日期:2021-06-11 21:55阅读:241来源:国知局
一种多方量子拜占庭共识优化协议

本发明涉及分布式共识协议领域和量子计算领域,具体设计了一种多方量子拜占庭共识优化协议。



背景技术:

区块链作为一种分布式系统和一种实现分布式账本的新兴技术引起了广泛关注,因为拜占庭共识问题一直是分布式系统的重要研究课题,所以对拜占庭共识协议的研究可以应用于区块链领域。在区块链技术的各种核心组件中,共识协议是区块链安全性和性能的关键。共识协议的设计极大的影响区块链系统的性能,包括交易能力、可扩展性和容错能力。

实用拜占庭协议pbft(practicalbyzantinefaulttolerance)协议是一种解决拜占庭共识的常用方法,但是依然存在不足,主要体现在能够容纳的恶意节点数较少。为此,fitzi等人开创性的为最简单的(只有三方)拜占庭共识ba(byzantineagreement)问题提出了一种量子解决方案,之后该团队又设计出了一种具有无条件安全性的可探测ba(dba)协议,将可容纳的恶意节点数从提高到,n为总节点数。之后,在fitzi团队的研究基础上,与该领域相关的研究成果被相继提出,设计出了更实用的量子拜占庭共识协议。

量子拜占庭共识协议研究成果丰富,但是也存在着不足。fitzi等人提出的协议难以扩展到多节点(n>3)的情况,随着节点数目的增加,整个协议的安全性受到威胁;lidexue等人基于fitzi的协议进行改进,使其能够适用于多节点共识的情况,但是依然存在着如下问题:1)commander节点的选取存在随意性问题,没有对commander节点的恶意性进行预判,因此可能会大概率选举出恶意节点阻碍共识过程;2)如果恶意节点连续被选为commander节点,考虑到多轮共识过程需要交换的通信量,会造成通信开销大量的增加。



技术实现要素:

本发明设计了一种多方量子拜占庭共识优化协议。用于解决以下问题:1)提高拜占庭共识协议中可容纳的恶意节点数量上限;2)解决量子拜占庭共识协议中随机选取commander节点的问题;3)解决由于恶意节点连续被选举为commander节点造成的通信量增加的问题。为了提高可容纳的恶意节点数量上限,本发明引入了三方量子拜占庭共识协议,用来完成共识过程;为了解决commander节点选取的随机性问题,引入了积分机制,该机制涉及对节点的加分和减分操作,积分机制的设计,可以降低恶意节点被选为commander节点的可能性,解决通信量增加的问题。

本发明提出一种多方量子拜占庭共识优化协议具体内容如下:

步骤1:初始化每一个节点ni参数;

步骤2:根据节点积分选取commander节点,记为nc,为之后的共识做准备;

步骤3:nc广播共识消息给所有节点;

步骤4:根据节点积分选择合作节点,形成多个三元组组合(nc,ns,nsi);

步骤5:(nc,ns,nsi)执行三方量子拜占庭共识协议,包括以下过程:

(1)nc,ns,nsi三方共享一组量子纠缠态,该组量子纠缠态的测量结果的相关性作为预共享信息;

(2)nc将共识消息mc以及预共享信息分别发送给ns和nsi;

(3)nsi将自己收到的共识消息mc和预共享信息发送给ns;

(4)ns通过对比自己的本地信息和从过程(3)得到的信息,对nc和nsi节点的诚实性做出判断;

(5)如果ns发现nc是不诚实节点或恶意节点,ns会自愿广播一条报告消息到所有节点,其格式为<(nc,ns),s>,s是ns的签名,报告消息的含义是nc节点是不诚实节点或恶意节点,并且更新自己的“隔离”集合,即is=is∪{nc,ns};

(6)如果ns发现nsi是不诚实节点或恶意节点,ns会放弃与nsi执行三方量子拜占庭共识协议,并在时间段t内不再与nsi合作。

步骤6:节点ni收到公布消息,对nc节点减分和对ns节点加分,并更新“隔离”集合ii;

步骤7:循环步骤1到步骤6,当ni不再收到任何报告消息时,转至步骤8;

步骤8:获得最终共识消息,包括以下过程:

(1)如果ni不在“隔离”集合内,将共识消息广播给所有在“隔离”集合中的节点;

(2)如果ni在“隔离”集合内,统计自己的消息集合mi中的数量(来自于“隔离”集合之外的共识消息),消息数量最多的为最终共识消息。

步骤1,所述的初始化ni节点参数包括以下部分:

(1)“隔离”集合ii={},“隔离”集合用来存储协议执行过程中的每一轮的commander节点nc和广播报告消息的节点ns;

(2)ni节点积分si;

(3)计数器ri=0,ri表示在获得最终共识消息之前的commander节点更换次数;

(4)消息集合mi={},用来存储共识过程中收到的消息;

步骤2,所述的选取commander节点,包括以下过程:

(1)随机选取一个节点作为备选commander节点,记为nc’,且nc’不属于“隔离”集合;

(2)每个节点ni收到nc’节点信息,ni节点将本地保存的nc’节点的积分与预设的阈值作比较,高于阈值则同意nc’作为commander节点,并发送自己签名过的确认信息至nc’节点;如果积分低于阈值,ni则不发送任何信息;

(3)nc’节点统计接收到的确认消息的数量,如果数量达到2t,则nc’可以作为此轮commander节点,记为nc;如果未达到2t,则转至步骤1;

步骤3,所述的广播共识消息,包括以下过程:

(1)nc广播消息格式为:<共识消息,2t个签名确认消息>,广播给所有节点;

(2)节点对2t个签名进行验证,接受共识消息;

步骤4,所述的选取合作节点,包括以下过程:

(1)如果ns节点“隔离”集合is之外的节点数多于3,ns节点去除步骤5中时间段t内不再合作的节点,否则,则转至步骤6;

(2)ni将nc与ns加入自己的“隔离”集合,即ii=ii∪{nc,ns};ni收到关于nc的多条公布消息,统计消息数量记为x;

(3)从高于阈值的节点中任意选择m个节点作为合作节点;

步骤6,所述的对nc节点减分,包括以下过程:

(1)ni将nc与ns加入自己的“隔离”集合,即ii=ii∪{nc,ns};

(2)ni收到关于nc的多条公布消息,统计消息数量记为x;

(3)ni按照公式对nc节点进行减分;

(4)更新本地保存的nc的积分;

步骤6,所述的对ns节点加分,包括以下过程:

(1)将nc与ns加入自己的“隔离”集合,即ii=ii∪{nc,ns}

(2)ni收到关于nc的多条公布消息,其格式为<(nc,ns),ss>;

(3)ni验证ns的签名,通过验证之后,对ns节点的分数加1;

(4)更新本地保存的ns的积分;

(5)更新ri的值,即ri=ri+1。

区别于现有的处理方法,本发明的有益效果是:利用量子纠缠态实现节点之间的信息共享,进而将可容纳的恶意节点数量上限从提高至目前已有的量子拜占庭共识协议中,commander节点的选取方式过于随机,无法保证commander节点的诚实性和正确性,一旦连续选取恶意节点作为commander节点,不仅阻碍共识过程,而且会造成系统资源的大量浪费,增加通信开销;该发明设计的积分机制,节点依据收到的报告消息数量,按比例对恶意的commander节点减分,同时充分考虑了恶意节点故意广播报告消息污蔑诚实commander节点的情况,保证了即使诚实节点被污蔑为恶意节点,通过加分操作也能很快增加积分,参与选取下一轮共识过程的commander节点,另外通过设计加分操作激励节点积极广播恶意节点身份,限制恶意节点行为。

附图说明

图1为本发明的协议执行流程图;

图2为本发明的协议具体执行示意图;

图3为本发明commander节点选取流程图;

图4为本发明的减分操作流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,仅用于示例性说明,不能理解为对本专利的限制。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合附图对于本发明作更一步的详细说明,本发明的整体流程图如图1所示,结合实例的具体执行示意图如图2所示。

步骤1:初始化参数。si=100,ii={},ri=0,mi={},i∈{0,1,2,3,4,5},n0为恶意节点;

步骤2:根据节点积分选取commander节点,记为nc;

如图3所示,系统随机生成一个id号码作为备选commander节点nc’,之后将该节点的身份广播给全网节点ni,ni收到广播信息之后,查询本地保存的nc’的积分并于预设阈值进行比较,高于阈值则同意nc’成为commander节点,并发送带签名的确认信息至nc’节点,如果低于阈值,则不做任何操作;nc’节点收到2t个确认消息后被选为commander节点nc。在本例中,n0被选为commander节点。

步骤3:n0广播共识消息m0给全网节点;

步骤4:ni节点根据本地的各个节点积分选择合作节点,结合具体实例,如图2步骤4所示,形成多个三元组组合(n0,n1,n2),(n0,n1,n3),(n0,n2,n4),(n0,n3,n5)....;

步骤5:步骤4中的三元组执行三方量子拜占庭共识协议;

如图2步骤5所示:n1发现n0不诚实节点或恶意节点,n1会自愿广播一条报告消息到所有节点,其格式为<(n0,n1),s1>,s1是n1的签名,该消息的含义是n0节点是恶意节点,并且更新自己的“隔离”集合,即i1=i1∪{n0,n1}。

步骤6:节点n2~n5收到公布消息,对n0节点减分和对n1节点加分,并更新“隔离”集合i2~i5;

结合图4以n2为例阐述减分操作,包括以下过程:

(1)n2将n0与n1加入自己的“隔离”集合,即i2=i2∪{n0,n1};

(2)n2统计收到关于n0的多条公布消息,消息数量记为x;

(3)n2按照公式对n0节点进行减分;

(4)更新本地保存的n0的积分。

以n2为例阐述加分操作,包括以下过程;

(1)n2将n0与n1加入自己的“隔离”集合,即i2=i2∪{n0,n1};

(2)n2收到关于n0的多条公布消息,其格式为<(n0,n1),s1>;

(3)n2验证n1的签名,通过验证之后,对n1节点的分数加1;

(4)更新本地保存的n1的积分。

步骤7:循环步骤1~步骤6;直到不再收到任何报告消息;

步骤8:以n5为例,当n5不再收到任何报告消息时,执行以下操作:

(1)如果n5不在“隔离”集合内,将共识消息m5广播给所有在“隔离”集合中的节点;

(2)如果n5在“隔离”集合内,统计自己的消息集合m5中消息的数量(来自于“隔离”集合之外的节点广播的共识消息),消息数量最多的消息为最终的共识消息。

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