一种区块链的共识方法、装置、系统和电子设备与流程

文档序号:19729528发布日期:2020-01-18 03:47阅读:162来源:国知局
一种区块链的共识方法、装置、系统和电子设备与流程

本说明书涉及计算机软件技术领域,尤其涉及一种区块链的共识方法、装置、系统和电子设备。



背景技术:

tendermint一般理解为是一种软件,随着区块链技术的发展,tendermint可以进一步理解为一种将实用拜占庭容错算法(practicalbyzantinefaulttolerance,pbft)和区块链技术结合的新型共识算法。

在tendermint共识算法中,参照图1所示,对一个区块的一轮共识操作可简要理解为包括以下过程:

第一阶段:propose阶段,选择一个共识节点作为leader节点,leader节点将区块包含在一个提案中,并广播给其它共识节点;

第二阶段,prevote阶段,每个共识节点收到提案后,生成对该提案的prevote投票,并将签名后的prevote投票广播给其它共识节点;

第三阶段,precommit阶段,每个共识节点收到针对同一个提案的2/3以上的prevote投票后,生成对该提案的precommit投票,并将签名后的precommit投票广播给其它共识节点。当共识节点收到针对同一提案的2/3以上的precommit投票后,对提案中包含的区块达成共识。

基于上述分析,在整个共识过程中,所交互的消息复杂度可定义为o(n^2),n是参与共识的共识节点数量。当参与共识节点的数量较多,例如接近100时,该共识过程中的消息复杂度会非常大,影响消息通信交互,进而造成共识算法出错或不可用。



技术实现要素:

本说明书实施例的目的是提供一种区块链的共识方法、装置、系统和电子设备备,以有效降低共识过程中交互消息复杂度,支持大数量的共识节点进行共识,保证共识算法正常运行。

为解决上述技术问题,本说明书实施例是这样实现的:

第一方面,提出了一种区块链的共识方法,包括:

第一共识节点接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

将所述第一聚合签名广播给所述多个第二共识节点。

第二方面,提出了一种区块链的共识装置,包括:

接收模块,接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

聚合模块,如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

发送模块,将所述第一聚合签名广播给所述多个第二共识节点。

第三方面,提出了一种区块链的共识方法,包括:

第二共识节点在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票;

接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

第四方面,提出了一种区块链的共识装置,包括:

发送模块,用于在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票;

接收模块,用于接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

第五方面,提出了一种区块链的共识系统,包括:第一共识节点和多个第二共识节点;

所述第一共识节点接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

如果接收到的投票中共识占比大于阈值,所述第一共识节点将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

所述第一共识节点将所述第一聚合签名广播给所述多个第二共识节点。

第六方面,提出了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

将所述第一聚合签名广播给所述多个第二共识节点。

第七方面,提出了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票;

接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

第八方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

将所述第一聚合签名广播给所述多个第二共识节点。

第九方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票;

接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

本说明书可以达到至少以下技术效果:

通过上述技术方案,在针对发起的提案进行投票时,只有发起提案的共识节点接收到投票,而其它共识节点不接收投票,这样,发起提案的共识节点将接收到的共识或无效占比大于阈值的投票聚合得到特殊聚合签名,并将该特殊聚合签名广播给其它共识节点。从而,只有发起提案的共识节点与其它共识节点之间进行消息交互,而省去了其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书实施例提供的区块链的共识方法的步骤示意图之一。

图2为本说明书实施例提供的区块链的共识方法的步骤示意图之二。

图3为本说明书实施例提供的区块链的共识方法的步骤示意图之三。

图4为本说明书实施例提供的区块链的共识方法的步骤示意图之四。

图5为本说明书实施例提供的区块链的共识方法的步骤示意图之五。

图6为本说明书实施例提供的区块链的共识过程示意图。

图7为本说明书的一个实施例提供的电子设备的结构示意图。

图8为本说明书的一个实施例提供的区块链的共识装置结构示意图之一。

图9为本说明书的一个实施例提供的区块链的共识装置结构示意图之二。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

实施例一

参照图1所示,为本说明书实施例提供的区块链的共识方法的步骤示意图,该共识方法的执行主体可以是发起提案的共识节点,本说明书中定义为第一共识节点;所述第一共识节点具体可以是终端、服务器等电子设备。所述共识方法可以包括以下步骤:

步骤102:接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中第一共识节点在内的部分或全部共识节点。

应理解,每个第二共识节点针对当前提案生成的投票可能不一致,因此,第一共识节点接收到的投票中,有对当前提案表示赞成(即本说明书中所谓的共识)的投票,可能也有对当前提案表示反对的投票。

在本说明书中,只有第一共识节点接收多个第二共识节点返回的投票,而多个第二共识节点之间并不相互接收投票,从而,减少了共识节点之间消息交互的数量,降低消息交互复杂度。

步骤104:如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1。

需要说明的是,步骤104中进行聚合处理的投票都是针对同一提案的投票,在进行聚合处理时,可以采用bls聚合签名算法或schnorr聚合签名算法将共识占比大于阈值的投票聚合成第一聚合签名。

应理解,在确定接收到的投票中共识占比大于所述阈值时,一种可实现的方式:根据接收到的投票中共识签名对应的投票数量与总投票数量之比是否大于所述阈值确定;

另一种可实现的方式:根据接收到的投票中共识签名对应的第二共识节点的投票权重之和是否大于所述阈值确定。

步骤106:将所述第一聚合签名广播给所述多个第二共识节点。

通过上述技术方案,在针对发起的提案进行投票时,只有发起提案的共识节点接收到投票,而其它共识节点不接收投票,这样,发起提案的共识节点将接收到的共识占比大于阈值的投票聚合得到第一聚合签名,并将该第一聚合签名广播给其它共识节点。从而,只有发起提案的共识节点与其它共识节点之间进行消息交互,而省去了其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度,支持大数量的共识节点进行共识,保证共识算法正常运行。

尤其针对数量较多的共识节点(例如数量为n)而言,可以将消息交互复杂度由o(n^2)降低到o(n),从而能够在生产中支持数以百计的共识节点进行共识。

可选地,所述投票为针对当前提案的prevote投票或针对当前提案的precommit投票。换言之,上述步骤102-步骤106可适用于同一提案的prevote阶段,或是,同一提案的precommit阶段。

在本说明书实施例中,基于上述步骤102-步骤106,参照图2所示,若所述投票为prevote投票,则在将所述第一聚合签名广播给所述多个第二共识节点之后,所述方法还包括:

步骤108:所述第一共识节点接收多个第二共识节点发送的针对当前提案的precommit投票,其中,所述多个第二共识节点包括当前区块链网络中除发起当前提案的所述第一共识节点外的部分或全部共识节点。

步骤110:如果接收到的precommit投票中共识占比大于所述阈值,将共识占比大于所述阈值的precommit投票进行聚合处理得到第二聚合签名。

步骤112:将所述第二聚合签名广播给所述多个第二共识节点。

这样,在整个共识过程中,prevote阶段和precommit阶段均可以采用将投票发送给发起提案的共识节点并由该共识节点进行聚合处理得到聚合签名,并再次广播给其它共识节点的方式,可以省去其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度。

考虑到发起提案的第一共识节点有可能作恶或是出现故障,导致第二共识节点无法收到提案或第一聚合签名或第二聚合签名等情况,影响共识过程无法推进。为此,本说明书实施例中,可在第二共识节点内设置计时器,以在计时器超时后(第二共识节点长时间无法收到提案或聚合签名;或是第二共识节点超时后才收到提案或聚合签名)触发第二共识节点发送特殊投票(或者也称为投空票)。

应理解,第二共识节点内设置的计时器,可以理解为是一种计时逻辑,可以分别为第二共识节点的三个阶段设置计时。也可以分别为每个阶段设置一个计时器。

可选地,在本说明书实施例中,所述投票包括特殊投票;所述特殊投票是第二共识节点内设置的计时器超时后由所述第二共识节点发送的无效投票;

相应地,参照图3所示,基于上述方案,所述方法还包括:

步骤114:如果接收到的投票中无效占比大于阈值,将无效占比大于阈值的特殊投票进行聚合处理得到第一特殊聚合签名。

应理解,在确定接收到的投票中无效占比大于所述阈值时,其方式与确定接收到的投票中共识占比大于所述阈值时采用的方式类似,在此不做赘述。

步骤116:将所述第一特殊聚合签名广播给所述多个第二共识节点。

应理解,图3所示的方案可以适用于同一提案的prevote阶段,或是,同一提案的precommit阶段。

可选地,当所述投票为针对当前提案的特殊precommit投票时,所述第一特殊聚合签名为特殊precommit聚合签名;

将所述第一特殊聚合签名广播给所述多个第二共识节点,具体包括:

将特殊precommit聚合签名广播给所述多个第二共识节点,以使得所述多个第二共识节点在接收到所述特殊precommit聚合签名后重新选择发起下一次提案的共识节点。

其实,所述特殊投票除了是第二共识节点内设置的计时器超时后由所述第二共识节点发送的无效投票外,还可以是第二共识节点在接收到第一特殊聚合签名后发送的无效投票。

具体地,所述投票包括特殊投票,所述特殊投票是第二共识节点在接收到第一特殊聚合签名后发送的无效投票;

当所述投票为针对当前提案的特殊prevote投票时,所述方法还包括:

如果接收到的precommit投票中无效占比大于阈值,将无效占比大于阈值的特殊precommit投票进行聚合处理得到特殊precommit聚合签名;

将特殊precommit聚合签名广播给所述多个第二共识节点,以使得所述多个第二共识节点在接收到所述特殊precommit聚合签名后重新选择发起下一次提案的共识节点。

通过上述技术方案,在针对发起的提案进行投票时,只有发起提案的共识节点接收到投票,而其它共识节点不接收投票,这样,发起提案的共识节点将接收到的无效占比大于阈值的投票聚合得到特殊聚合签名,并将该特殊聚合签名广播给其它共识节点。从而,只有发起提案的共识节点与其它共识节点之间进行消息交互,而省去了其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度。

参照图4所示,为本说明书实施例提供的区块链的共识方法步骤示意图,所述共识方法的执行主体可以是对提案发起投票的共识节点,本说明书中定义为第二共识节点;所述第二共识节点具体可以是终端、服务器等电子设备。所述共识方法可以包括以下步骤:

步骤202:第二共识节点在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票。

步骤204:接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

可选地,所述投票为针对当前提案的prevote投票或针对当前提案的precommit投票。换言之,上述步骤202-步骤204可适用于同一提案的prevote阶段,或是,同一提案的precommit阶段。

可选地,在本说明书实施例中,所述第二共识节点本地中设置有计时器;所述投票包括特殊投票;

相应地,步骤202在向所述第一共识节点发送针对当前提案的投票时,可具体执行为:向所述第一共识节点发送针对当前提案的特殊投票,其中,所述特殊投票是无效投票;所述方法还包括:

接收所述第一共识节点返回的第一特殊聚合签名;其中,所述第一特殊聚合签名是所述第一共识节点在接收到的特殊投票中无效占比大于所述阈值时,将无效占比大于所述阈值的特殊投票进行聚合处理得到。

可选地,所述特殊投票是在本地设置的计时器超时后生成的特殊prevote投票;参照图5所示,基于步骤202-步骤204的方案,相应地,在接收所述第一共识节点返回的特殊prevote聚合签名之后,所述方法还包括:

步骤206:向所述第一共识节点发送针对当前提案的特殊precommit投票,其中,所述特殊precommit投票是基于所述特殊prevote聚合签名生成的无效投票;

步骤208:接收所述第一共识节点返回的特殊precommit聚合签名,重新选择发起下一次提案的共识节点;其中,所述特殊precommit聚合签名是所述第一共识节点在接收到的特殊precommit投票中无效占比大于所述阈值时,将无效占比大于所述阈值的特殊precommit投票进行聚合处理得到。

下面通过具体的实例对本说明书所涉及的共识方案进行详述。

参照图6所示,区块链网络中有发起当前提案的共识节点(在图6中记为leader),以及接收当前提案的共识节点(假设为3个,图6中分别记为node0,node1,node2)。

一种可实现的方案:

在propose阶段,leader将区块打包在提案中,并分别广播给node0,node1,node2。

在prevote阶段,node0,node1,node2分别生成对该提案的prevote投票,签名后发送给leader,leader收集从node0,node1,node2以及自身的投票,如果收到的投票共识占比大于2/3,则将这些投票聚合处理为一个prevote聚合签名。同时,将prevote聚合签名广播给node0,node1,node2。

在precommit阶段,当node0,node1,node2接收到prevote聚合签名后,分别生成对该提案的precommit投票,签名后发送给leader,leader收集从node0,node1,node2以及自身的投票,如果收到的投票共识占比大于2/3,则将这些投票聚合处理为一个precommit聚合签名。同时,将precommit聚合签名广播给node0,node1,node2。

另一种可实现的方案:

在propose阶段,leader将区块打包在提案中,并分别广播给node0,node1,node2。

在prevote阶段,若node0,node1,node2的计时器超时,则分别生成对该提案的特殊prevote投票,签名后发送给leader,leader收集从node0,node1,node2以及自身的投票,如果收到的投票无效占比大于2/3,则将这些投票聚合处理为一个特殊prevote聚合签名。同时,将特殊prevote聚合签名广播给node0,node1,node2。

在precommit阶段,当node0,node1,node2接收到特殊prevote聚合签名,或者,node0,node1,node2的计时器超时,则分别生成对该提案的特殊precommit投票,签名后发送给leader,leader收集从node0,node1,node2以及自身的投票,如果收到的投票无效占比大于2/3,则将这些投票聚合处理为一个特殊precommit聚合签名。同时,将特殊precommit聚合签名广播给node0,node1,node2,以便于重新选择共识节点发起新的提案。

实施例二

图7是本说明书的一个实施例电子设备的结构示意图。请参考图7,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共享资源访问控制装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

将所述第一聚合签名广播给所述多个第二共识节点。

或者,

在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票;

接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

上述如本说明书图1-5所示实施例揭示的区块链的共识装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图1或图4所示的方法,并实现区块链的共识装置在图1、图4所示实施例的功能,本说明书实施例在此不再赘述。

当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

通过上述技术方案,在针对发起的提案进行投票时,只有发起提案的共识节点接收到投票,而其它共识节点不接收投票,这样,发起提案的共识节点将接收到的共识或无效占比大于阈值的投票聚合得到特殊聚合签名,并将该特殊聚合签名广播给其它共识节点。从而,只有发起提案的共识节点与其它共识节点之间进行消息交互,而省去了其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度。

实施例三

本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下方法:

接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

将所述第一聚合签名广播给所述多个第二共识节点。

或者,

在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票;

接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

通过上述技术方案,在针对发起的提案进行投票时,只有发起提案的共识节点接收到投票,而其它共识节点不接收投票,这样,发起提案的共识节点将接收到的共识或无效占比大于阈值的投票聚合得到特殊聚合签名,并将该特殊聚合签名广播给其它共识节点。从而,只有发起提案的共识节点与其它共识节点之间进行消息交互,而省去了其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度。

实施例四

图8为本说明书的一个实施例提供的区块链的共识装置800的结构示意图。请参考图8,在一种软件实施方式中,区块链的共识装置包括:

接收模块802,接收多个第二共识节点发送的针对当前提案的投票,其中,所述多个第二共识节点包括当前区块链网络中所述第一共识节点在内的部分或全部共识节点;

聚合模块804,如果接收到的投票中共识占比大于阈值,将共识占比大于阈值的投票进行聚合处理得到第一聚合签名,其中,所述阈值大于等于2/3且小于等于1;

发送模块806,将所述第一聚合签名广播给所述多个第二共识节点。

在本说明书实施例的一种具体实现方式中,所述投票为针对当前提案的prevote投票或针对当前提案的precommit投票。

在本说明书实施例的另一种具体实现方式中,若所述投票为prevote投票,则在发送模块806将所述第一聚合签名广播给所述多个第二共识节点之后,所述接收模块802还用于:

接收多个第二共识节点发送的针对当前提案的precommit投票,其中,所述多个第二共识节点包括当前区块链网络中除发起当前提案的所述第一共识节点外的部分或全部共识节点;

所述聚合模块804还用于,如果接收到的precommit投票中共识占比大于所述阈值,将共识占比大于所述阈值的precommit投票进行聚合处理得到第二聚合签名;

所述发送模块806还用于将所述第二聚合签名广播给所述多个第二共识节点。

在本说明书实施例的另一种具体实现方式中,所述投票包括特殊投票;所述特殊投票是第二共识节点内设置的计时器超时后由所述第二共识节点发送的无效投票;

所述聚合模块804还用于如果接收到的投票中无效占比大于阈值,将无效占比大于阈值的特殊投票进行聚合处理得到第一特殊聚合签名;

所述发送模块806还用于将所述第一特殊聚合签名广播给所述多个第二共识节点。

在本说明书实施例的另一种具体实现方式中,当所述投票为针对当前提案的特殊precommit投票时,所述第一特殊聚合签名为特殊precommit聚合签名;

所述发送模块806在将所述第一特殊聚合签名广播给所述多个第二共识节点时,具体用于:

将特殊precommit聚合签名广播给所述多个第二共识节点,以使得所述多个第二共识节点在接收到所述特殊precommit聚合签名后重新选择发起下一次提案的共识节点。

在本说明书实施例的另一种具体实现方式中,所述投票包括特殊投票,所述特殊投票是第二共识节点在接收到第一特殊聚合签名后发送的无效投票;

当所述投票为针对当前提案的特殊prevote投票时,所述聚合模块804还用于如果接收到的precommit投票中无效占比大于阈值,将无效占比大于阈值的特殊precommit投票进行聚合处理得到特殊precommit聚合签名;

所述发送模块806还用于将特殊precommit聚合签名广播给所述多个第二共识节点,以使得所述多个第二共识节点在接收到所述特殊precommit聚合签名后重新选择发起下一次提案的共识节点。

在本说明书实施例的另一种具体实现方式中,对所述投票进行聚合处理时所使用的聚合算法,至少包括以下之一或组合:

bls聚合签名算法、schnorr聚合签名算法。

在本说明书实施例的另一种具体实现方式中,在确定接收到的投票中共识占比大于所述阈值时,根据接收到的投票中共识签名对应的投票数量与总投票数量之比是否大于所述阈值确定;或者,根据接收到的投票中共识签名对应的第二共识节点的投票权重之和是否大于所述阈值确定。

通过上述技术方案,在针对发起的提案进行投票时,只有发起提案的共识节点接收到投票,而其它共识节点不接收投票,这样,发起提案的共识节点将接收到的共识或无效占比大于阈值的投票聚合得到特殊聚合签名,并将该特殊聚合签名广播给其它共识节点。从而,只有发起提案的共识节点与其它共识节点之间进行消息交互,而省去了其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度。

图9为本说明书的一个实施例提供的区块链的共识装置900的结构示意图。请参考图9,在一种软件实施方式中,区块链的共识装置包括:

发送模块902,用于在接收到第一共识节点发起的提案后,向所述第一共识节点发送针对当前提案的投票;

接收模块904,用于接收所述第一共识节点返回的第一聚合签名,其中,所述第一聚合签名是所述第一共识节点在接收到的投票中共识占比大于阈值时,将共识占比大于阈值的投票进行聚合处理得到的,其中,所述阈值大于等于2/3且小于等于1。

在本说明书实施例的一种具体实现方式中,所述第二共识节点本地中设置有计时器;所述投票包括特殊投票;

所述发送模块902在向所述第一共识节点发送针对当前提案的投票时,具体用于:向所述第一共识节点发送针对当前提案的特殊投票,其中,所述特殊投票是无效投票;

所述接收模块904还用于接收所述第一共识节点返回的第一特殊聚合签名;其中,所述第一特殊聚合签名是所述第一共识节点在接收到的特殊投票中无效占比大于所述阈值时,将无效占比大于所述阈值的特殊投票进行聚合处理得到。

在本说明书实施例的另一种具体实现方式中,所述特殊投票是在本地设置的计时器超时后生成的特殊prevote投票;

所述接收模块904在接收所述第一共识节点返回的特殊prevote聚合签名之后,所述发送模块902还用于向所述第一共识节点发送针对当前提案的特殊precommit投票,其中,所述特殊precommit投票是基于所述特殊prevote聚合签名生成的无效投票;

所述接收模块904还用于接收所述第一共识节点返回的特殊precommit聚合签名,重新选择发起下一次提案的共识节点;其中,所述特殊precommit聚合签名是所述第一共识节点在接收到的特殊precommit投票中无效占比大于所述阈值时,将无效占比大于所述阈值的特殊precommit投票进行聚合处理得到。

在本说明书实施例的另一种具体实现方式中,所述特殊投票为基于所述特殊prevote聚合签名生成的特殊precommit投票;

所述发送模块902在向所述第一共识节点发送针对当前提案的特殊precommit投票之前,所述发送模块902还用于向所述第一共识节点发送针对当前提案的特殊prevote投票,其中,所述特殊prevote投票是在本地设置的计时器超时后生成的无效投票;

所述接收模块904还用于接收所述第一共识节点返回的特殊prevote聚合签名;其中,所述特殊prevote聚合签名是所述第一共识节点在接收到的特殊prevote投票中无效占比大于所述阈值时,将无效占比大于所述阈值的特殊prevote投票进行聚合处理得到。

通过上述技术方案,在针对发起的提案进行投票时,只有发起提案的共识节点接收到投票,而其它共识节点不接收投票,这样,发起提案的共识节点将接收到的共识或无效占比大于阈值的投票聚合得到特殊聚合签名,并将该特殊聚合签名广播给其它共识节点。从而,只有发起提案的共识节点与其它共识节点之间进行消息交互,而省去了其它共识节点之间的消息交互,减少消息交互数量,降低消息交互复杂度。

应理解,本说明书实施例的区块链的共识装置还可执行图1-图5中区块链的共识装置(或设备)执行的方法,并实现区块链的共识装置(或设备)在图1-图5所示实施例的功能,在此不再赘述。

总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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