一种区块链数据的共识方法及相关设备
技术领域
本申请涉及区块链技术,尤其涉及一种区块链数据的共识方法及相关设备。
背景技术
区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件,区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图。
实用拜占庭容错***(PBFT,Practical Byzantine-Fault-Tolerant)是区块链中较为常用的一种共识算法,即服务作为状态机进行建模,状态机在分布式***的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。
PBFT算法的流程中,设定参与共识的节点总数为N=3f+1,其中f为潜在的拜占庭(恶意)节点数量,以f=1,即N=4节点为例组成的共识网络,如图1所示。在该流程中,包括请求过程(request)、共识过程和响应过程(reply),其中,共识过程分为pre-prepare、prepare、commit三个阶段,该共识过程具体如下:
从全网节点(节点C、节点0、节点1、节点2、节点3)选举出一个提议节点(节点C),新区块由提议节点负责生成;其它节点把客户端发来的交易向全网广播,提议节点将从网络收集到需放在新区块内的多个交易排序后存入列表,并将该列表向全网广播;其它节点接收到交易列表后,根据排序模拟执行这些交易。所有交易执行完后,基于交易结果计算新区块的哈希摘要,并向全网广播;如果一个节点收到的2f条来自其它节点发来的摘要都和自己的相同,就向全网广播一条commit消息;如果一个节点收到2f+1条commit消息,即可提交新区块及其交易到本地的区块链和状态数据库,即确认新区块为合法区块。
在上述流程描述中可以了解到,PBFT算法的通信复杂度较高,对于n个节点组成的区块链共识网络,每一轮共识过程需要O(n^2)次通信。对于同机房的少数节点组成的网络而言,高通信复杂度所导致的性能问题影响不大,但由于在很多场景下,区块链需要更多的节点参与才能更能体现出公信力和实用价值,因此存在节点数量增长的需求。实验表明,当PBFT算法应用在节点数量大于19的时候,性能会变得明显低下;当节点数量到达31时,共识算法将几乎无法正常工作。
发明内容
本申请实施例提供了一种区块链数据的共识方法及其相关设备,用于简化区块链的共识过程。
本申请实施例第一方面提供了一种区块链数据的共识方法,应用于提议节点,所述提议节点为区块链***中的节点,所述区块链***还包括多个投票节点,所述方法包括:
接收所述多个投票节点分别发送的签名信息,所述签名信息包括所述投票节点使用Gamma签名算法对待确认区块的签名;
判断接收到的所述签名信息的数量是否达到预设值;
若是,则利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名;
将所述聚合签名发送至所述投票节点,以使得当所述投票节点对所述聚合签名通过验证时确定所述待确认区块有效。
可选地,所述待确认区块包括交易结果,在所述接收所述多个投票节点发送的签名信息之前,所述方法还包括:
接收所述多个投票节点分别发送的交易信息;
对所述交易信息进行排序,得到交易列表;
将所述交易列表发送至所述投票节点,以使得所述投票节点模拟执行所述交易列表得到交易结果之后,所述投票节点根据所述交易结果生成待确认区块。
可选地,所述交易列表包括历史区块信息,将所述交易列表发送至所述投票节点具体还包括:
将所述历史区块信息发送至所述投票节点,以使得所述投票节点对所述历史区块信息进行匹配。
可选地,在所述利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名之前,所述方法还包括:
模拟执行所述交易列表,得到交易结果;
根据所述交易结果生成待确认区块,并使用Gamma签名算法对所述待确认区块进行签名,得到第一签名;
所述利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名包括:
将所述第一签名与接收到的多个所述签名信息进行聚合,得到聚合签名。
可选地,所述签名信息还包括所述待确认区块的区块头的哈希值。
可选地,所述区块链***包括3F+1个节点,所述预设值包括2F,F为大于0的自然数。
本申请实施例第二方面提供了一种区块链数据的共识方法,应用于投票节点,所述投票节点为区块链***中的节点,所述区块链***还包括提议节点,所述方法包括:
获取待确认区块;
使用Gamma签名算法对所述待确认区块进行签名,生成签名信息;
将所述签名信息发送至所述提议节点;
接收所述提议节点发送的聚合签名,所述聚合签名为所述提议节点利用多个所述签名信息聚合后生成的;
验证所述聚合签名;
当所述聚合签名通过验证时,确定所述待确认区块有效。
可选地,所述待确认区块包括交易结果,所述获取待确认区块包括:
获取交易信息;
将所述交易信息发送至所述提议节点;
接收所述提议节点发送的交易列表,所述交易列表为所述提议节点对所述交易信息进行排序得到;
模拟执行所述交易列表,得到交易结果;
根据所述交易结果生成待确认区块。
可选地,所述交易列表包括历史区块信息,所述方法还包括:
使用自身数据库判断是否存在与所述历史区块消息匹配的目标数据;
若存在,则触发所述根据所述交易结果生成待确认区块。
可选地,在确定所述待确认区块有效之后,所述方法还包括:
当确定所述待确认区块有效之后,则确定所述自身数据库中的目标数据有效。
可选地,所述区块链***包括3F+1个节点,F为大于0的自然数,所述验证所述聚合签名包括:
验证所述聚合签名中包含签名信息的数量是否大于或等于2F+1;
若是,则确定所述聚合签名通过验证;
若否,则确定所述聚合签名未通过验证。
可选地,所述签名信息还包括所述待确认区块的区块头的哈希值。
本申请实施例第三方面提供了一种区块链数据的共识装置,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的区块链数据的共识程序,所述区块链数据的共识程序被所述处理器执行时实现如前述方法实施例中任一项所述的方法。
可选地,所述装置为区块链网络的节点。
本申请实施例第四方面提供了一种区块链数据的共识***,应用于提议节点,所述提议节点为区块链***中的节点,所述区块链***还包括投票节点,所述***包括:
第一接收单元,用于接收所述多个投票节点分别发送的签名信息,所述签名信息包括所述投票节点使用Gamma签名算法对待确认区块的签名;
判断单元,用于判断接收到的所述签名信息的数量是否达到预设值;
第一生成单元,用于当所述判断单元确定接收到的所述签名信息的数量达到预设值时,则利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名;
第一发送单元,用于将所述聚合签名发送至所述投票节点,以使得当所述投票节点对所述聚合签名通过验证时确定所述待确认区块有效。
可选地,所述待确认区块包括交易结果,所述***还包括:
第二接收单元接收所述多个投票节点分别发送的交易信息;
排序单元,用于对所述交易信息进行排序,得到交易列表;
第二发送单元,用于将所述交易列表发送至所述投票节点,以使得所述投票节点模拟执行所述交易列表得到交易结果之后,所述投票节点根据所述交易结果生成待确认区块。
可选地,所述交易列表包括历史区块信息,所述第二发送单元还用于:
将所述历史区块信息发送至所述投票节点,以使得所述投票节点对所述历史区块信息进行匹配。
可选地,所述***还包括:
模拟执行单元,用于模拟执行所述交易列表,得到交易结果;
第二生成单元,用于根据所述交易结果生成待确认区块,并使用Gamma签名算法对所述待确认区块进行签名,得到第一签名;
所述第一生成单元具体用于:
将所述第一签名与接收到的多个所述签名信息进行聚合,得到聚合签名。
可选地,所述签名信息还包括所述待确认区块的区块头的哈希值。
可选地,所述区块链***包括3F+1个节点,所述预设值包括2F,F为大于0的自然数。
本申请实施例第五方面提供了一种区块链数据的共识***,应用于投票节点,所述投票节点为区块链***中的节点,所述区块链***还包括提议节点,所述方法包括:
获取单元,用于获取待确认区块;
投票签名单元,用于使用Gamma签名算法对所述待确认区块进行签名,生成签名信息;
发送单元,用于将所述签名信息发送至所述提议节点;
接收单元,用于接收所述提议节点发送的聚合签名,所述聚合签名为所述提议节点利用多个所述签名信息聚合后生成的;
验证单元,用于验证所述聚合签名;
第一确定单元,用于当所述聚合签名通过验证时,确定所述待确认区块有效。
可选地,所述待确认区块包括交易结果,所述获取单元具体用于:
获取交易信息;
将所述交易信息发送至所述提议节点;
接收所述提议节点发送的交易列表,所述交易列表为所述提议节点对所述交易信息进行排序得到;
模拟执行所述交易列表,得到交易结果;
根据所述交易结果生成待确认区块。
可选地,所述交易列表包括历史区块信息,所述***还包括:
判断单元,用于使用自身数据库判断是否存在与所述历史区块消息匹配的目标数据;
触发单元,用于当所述判断单元确定自身数据库中存在与所述历史区块消息匹配的目标数据,则触发所述根据所述交易结果生成待确认区块。
可选地,在确定所述待确认区块有效之后,所述***还包括:
第二确定单元,用于当确定所述待确认区块有效之后,则确定所述自身数据库中的目标数据有效。
可选地,所述区块链***包括3F+1个节点,F为大于0的自然数,所述验证单元具体用于:
验证所述聚合签名中包含签名信息的数量是否大于或等于2F+1;
若是,则确定所述聚合签名通过验证;
若否,则确定所述聚合签名未通过验证。
可选地,所述签名信息还包括所述待确认区块的区块头的哈希值。
本申请实施例第六方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有区块链数据的共识程序,所述区块链数据的共识程序可被一个或者多个处理器执行,以实现如前述方法实施例中任一项所述的区块链数据的共识方法。
从以上技术方案可以看出,本申请实施例具有以下优点:接收所述多个投票节点分别发送的签名信息,所述签名信息包括所述投票节点使用Gamma签名算法对待确认区块的签名;判断接收到的所述签名信息的数量是否达到预设值;若是,则利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名;将所述聚合签名发送至所述投票节点,以使得当所述投票节点对所述聚合签名通过验证时确定所述待确认区块有效。因此,在区块链的共识过程中使用Gamma签名算法生成聚合签名,可以将来自各个投票节点的签名投票进行聚合,简化区块链的共识过程,可以对更多的数据进行共识,从而降低网络中发生阻塞的风险。
附图说明
图1为现有技术中区块链数据的共识方法的一个实施例;
图2为本申请实施例中一种区块链数据的共识方法实施例的一个示意图;
图3为本申请实施例中一种区块链数据的共识方法实施例的另一个示意图;
图3-1为本申请实施例中一种区块链数据的共识方法实施例的另一个示意图;
图4为本申请实施例中一种区块链数据的共识方法实施例的另一个示意图;
图5为本申请实施例中一种区块链数据的共识方法实施例的另一个示意图;
图6为本申请实施例中一种区块链数据的共识***实施例的一个示意图;
图7为本申请实施例中一种区块链数据的共识***实施例的另一个示意图;
图8为本申请实施例中一种区块链数据的共识***实施例的一个示意图。
具体实施方式
下本申请实施例提供了一种区块链数据的共识方法及其相关设备,用于简化区块链的共识过程。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在现有技术中,实用拜占庭容错***(PBFT,Practical Byzantine-Fault-Tolerant)是区块链中较为常用的一种共识算法,即服务作为状态机进行建模,状态机在分布式***的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。PBFT算法的流程中,设定参与共识的节点总数为N=3f+1,其中f为潜在的拜占庭(恶意)节点数量,以f=1,即N=4节点为例组成的共识网络,如图1所示。在该流程中,包括请求过程(request)、共识过程和响应过程(reply),其中,共识过程分为pre-prepare、prepare、commit三个阶段,该共识过程具体如下:从全网节点(节点C、节点0、节点1、节点2、节点3)选举出一个提议节点(节点C),新区块由提议节点负责生成;其它节点把客户端发来的交易向全网广播,提议节点将从网络收集到需放在新区块内的多个交易排序后存入列表,并将该列表向全网广播;其它节点接收到交易列表后,根据排序模拟执行这些交易。所有交易执行完后,基于交易结果计算新区块的哈希摘要,并向全网广播;如果一个节点收到的2f条来自其它节点发来的摘要都和自己的相同,就向全网广播一条commit消息;如果一个节点收到2f+1条commit消息,即可提交新区块及其交易到本地的区块链和状态数据库,即确认新区块为合法区块。在上述流程描述中可以了解到,PBFT算法的通信复杂度较高,对于n个节点组成的区块链共识网络,每一轮共识过程需要O(n^2)次通信。对于同机房的少数节点组成的网络而言,高通信复杂度所导致的性能问题影响不大,但由于在很多场景下,区块链需要更多的节点参与才能更能体现出公信力和实用价值,因此存在节点数量增长的需求。实验表明,当PBFT算法应用在节点数量大于19的时候,性能会变得明显低下;当节点数量到达31时,共识算法将几乎无法正常工作。为此,本申请实施例提供了一种区块链数据的共识方法及其相关设备,用于简化区块链的共识过程。
为了便于理解,下面对本申请实施例中的具体流程进行描述,请参阅图2,本申请实施例中一种区块链数据的共识方法的一个实施例包括:
201、投票节点获取待确认区块;
本实施例中,投票节点获取待确认区块。
在一个区块生成周期中,区块链***中的众多节点将通过特定的算法选择出提议节点(Proposer)和投票节点(Validators,也称为验证人节点),即在区块链中参与共识的角色包括两类:提议节点与投票节点,提议节点负责收集交易、打包区块和验证投票信息;投票节点负责验证区块和给有效的区块进行投票。本步骤中,投票节点可以通过区块链***中获取得到提议节点发送给该投票节点的待确认区块,也可以是接收提议节点发送的待确认消息进一步生成待确认区块,还可以是其他的获取方式,具体此处不做限定。
202、投票节点对待确认区块进行投票;
本实施例中,投票节点可以使用聚合签名算法对待确认区块进行投票签名,得到签名信息。
本实施例中,投票节点使用Gamma签名算法对待投票信息进行投票签名,得到签名信息。
具体的,该投票节点可以对该投票信息进行合法性验证,当该投票节点确定该投票信息通过合法性验证的时候,使用Gamma签名算法对待投票信息进行投票,得到签名信息。
203、投票节点向提议节点发送签名信息;
本实施例中,投票节点在步骤202得到签名信息之后,将该签名信息发送至提议节点,以使得该提议节点得知该投票节点对该待确认区块进行投票,即得知该投票节点认可该待确认区块。
具体在方案的实施过程中,该签名信息还可以包括待确认区块的区块头的哈希值,其中,待确认区块的区块头的哈希值用于标识该签名信息对应的区块信息,即标识该签名信息与该待确认区块存在对应关系。
204、提议节点判断是否达到预设值;
本实施例中,提议节点判断接收到的所述签名信息的数量是否达到预设值,若是,则执行步骤205,若否,则执行步骤208。
具体的,提议节点可以判断在预设时间段内接收到的该签名信息的数量是否达到预设值。
作为一个优选实施例,在这里可以引入PBFT算法的验证机制,即此处提议节点也可以作为投票节点进行参与投票,也可以不参与投票。具体判断过程可以借鉴PBFT算法的认证模式,即该区块链***中一共包括3F+1个节点,F为大于0的自然数以该提议节点参与投票为例,此时本步骤中的预设值为2F,即该提议节点在预设时间段内若接收到2F个节点确定对该待确认区块的签名信息时,即确定签名信息的数量达到预设值,则执行步骤205,若否,则执行步骤208。
205、若是,则提议节点将签名信息进行聚合;
本实施例中,当提议节点在步骤204中确定接收到的所述签名信息的数量达到预设值时,则将该签名信息使用Gamma签名算法进行聚合。
具体的,可参阅图5中描述的Gamma算法实现流程,在Gamma签名算法中,用户之间的交互可以抽象为两个步骤。首先,签名节点调用Gamma签名算法,对待投票内容进行签名,然后将签名发送给聚合节点,如图中①所示。然后,聚合节点将来自不同节点的签名聚合在一起,生成多重签名后发送给验证者,如图中②所示。Gamma签名采用基于椭圆曲线,将多个签名聚合在一起,相比通用的ECDSA算法,可以将多重签名的S部分优化成为一条,以此节约将近一半的传输和存储空间。
206、提议节点发送聚合签名至投票节点;
本实施例中,提议节点在步骤205得到该聚合签名之后,将该聚合签名发送至投票节点。
207、投票节点确定聚合签名有效;
本实施例中,当投票节点确定该聚合签名通过合法性验证时,则确定所述待确认区块有效。
具体的,此处仍以PBFT为例,当该投票节点收到该聚合签名之后,并验证此聚合签名包含针对当前区块的来自2F+1个节点的合法多重签名,即可认定该待确认区块有效,后续可以提交新区块及其交易到本地的区块链、更新状态数据库或者将该带投票信息添加入交易池排队等待交易等,具体此处不做限定。
208、若否,则提议节点执行其他操作。
本实施例中,当该提议节点在步骤204中确定接收到的所述签名信息的数量未达到预设值时,则执行其他操作,即确定该待确认区块未获得区块链***的认可,则该提议节点不执行根据签名信息生成聚合签名的步骤,可直接将该待确认区块进行丢弃,或者是重新提交等待下一轮询过程,还可以是其他的操作,具体此处不做限定。
本实施例中,提议节点接收所述多个投票节点分别发送的签名信息,所述签名信息包括所述投票节点使用Gamma签名算法对待确认区块的签名;判断接收到的所述签名信息的数量是否达到预设值;若是,则利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名;将所述聚合签名发送至所述投票节点,以使得当所述投票节点对所述聚合签名通过验证时确定所述待确认区块有效。因此,在区块链的共识过程中使用Gamma签名算法生成聚合签名,可以将来自各个投票节点的签名投票进行聚合,简化区块链的共识过程,可以对更多的数据进行共识,从而降低网络中发生阻塞的风险。
具体可参阅图4的共识流程,从全网节点选举出一个提议节点,新区块由提议节点负责生成。图中节点0为提议节点,其他节点为投票节点。
投票节点把客户端发来的交易向全网广播,提议节点将从网络收集到需放在新区块内的多个交易排序后存入列表,并将该列表向全网广播。投票节点接收到交易列表后,根据排序模拟执行这些交易。所有交易执行完后,用自己的私钥对待确认的区块进行签名,然后将签名返回给提议节点。提议节点验证接收到的区块投票签名,如果提议节点收到超过2f个节点的合法签名,则通过多重签名聚合算法,连同自己对区块的签名一起,将签名聚合生成一个多重签名。如果一个节点收到多重签名消息,并验证此多重签名消息包含针对当前区块的来自2f+1个节点的合法多重签名,即可提交新区块及其交易到本地的区块链和状态数据库。
本申请实施例中,基于图2所述实施例,具体在步骤201投票节点获取待确认区块的过程可以是通过提议节点来实现。下面请参阅图3,本申请实施例一种区块链数据的共识方法的另一个实施例中,基于图2所述实施例,具体在步骤201的执行过程可以包括:
301、投票节点获取交易信息;
本实施例中,投票节点获取交易信息,即各个投票节点获取自身客户端所生成的交易信息。
302、投票节点向提议节点发送交易信息;
本实施例中,各个投票节点将获取得到的交易信息发送至提议节点,例如,各个投票节点可以通过区块链网络广播的形式进行发送,也可以是直接点对点发送模式进行发送,具体此处不做限定。
303、提议节点对该交易信息进行排序;
本实施例中,提议节点对在步骤302收集到的交易信息进行排序,得到交易列表。
作为一个优选实施例,具体在图3对应实施例中引入交易列表之后,步骤205中,当提议节点在步骤204中确定接收到的所述签名信息的数量达到预设值时,则将该签名信息使用聚合签名算法进行聚合,得到聚合签名的过程具体可以将该交易列表引入聚合签名中。
具体地,该提议节点模拟执行所述交易列表,得到交易结果;根据所述交易结果生成待确认区块之后,该提议节点使用Gamma签名算法对所述待确认区块进行签名,得到第一签名,从而,步骤204中利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名具体包括:将该提议节点的第一签名与步骤203接收到的多个签名信息进行聚合,得到聚合签名。
304、提议节点向投票节点发送交易列表;
本实施例中,提议节点向投票节点发送步骤303生成的交易列表。
305、投票节点模拟执行交易;
本实施例中,投票节点按照标准流程模拟执行该交易列表,生成交易结果。
306、投票节点生成待确认区块。
本实施例中,投票节点根据步骤305得到的交易结果生成待确认区块。
举例来说,待确认区块可以是待确认的区块,该区块中包含上述交易列表中的全部交易;
本实施例中,具体在方案的执行过程中,投票节点在步骤304获取得到的交易排序列表还包括历史区块信息,还可以增加对步骤305的执行前提条件的判断步骤,下面请参阅图3-1,具体增加的步骤包括:
307、使用自身数据库判断是否存在与所述历史区块消息匹配的目标数据;
本实施例中,该投票节点使用自身数据库判断历史区块消息是否存在与所述历史区块消息匹配的目标数据,若是,则执行步骤308,若否,则执行步骤309。
具体的,该历史区块信息可以为历史区块的全部信息,也可以是历史区块全部信息的哈希值,作为一个优选方案,为了节省网络资源,该历史区块信息还可以是该提议节点数据库中最新n(n为大于0的整数)个区块的哈希值,作为一个优选方案,该历史区块信息可以以区块头的形式存在加载在该交易排序列表信息中,还可以是其他类型的历史区块信息,具体此处不做限定。
308、若存在,则触发所述根据所述交易结果生成待确认区块。
本实施例中,当投票节点确定自身数据库中存在与所述历史区块信息匹配的目标数据时,则触发执行步骤306根据所述交易结果生成待确认区块。
具体的,如果投票节点发现待确认区块的历史区块信息中的哈希值与自身数据库中之前的区块是否匹配,若匹配,则说明该投票节点与该提议节点的区块高度一致,可以执行后续的共识流程。
309、若不存在,则执行其他操作。
本实施例中,当该投票节点确定自身数据库中不存在与所述历史区块信息匹配的目标数据时,则该投票节点执行其他操作,示例性地,该投票节点可以检查区块高度,如果历史区块信息中的区块高度高于自身数据库中对应的区块高度,那么首先要同步区块;如果不高于自己,那么就不会进行投票。
本申请实施例中,基于图3-1所述实施例,具体在步骤207确定所述待确认区块有效之后,则确定所述自身数据库中的目标数据有效,即该投票节点可以确定自身数据库中与历史区块信息匹配的目标数据也是有效区块。
本方案中基于多重签名的共识算法与传统的PBFT算法不同的另一个点在于本方案的共识算法需要一个额外的区块确认前一个区块的绝对一致性。由于网络中消息有丢失或其他异常攻击的情况,单一一轮的共识存在在不同节点之间存在不一致的可能,但对于连续的两个通过共识的区块,在后面的区块达成共识的时候就可以意味着在它之前的区块可以在网络中确认绝对一致,因此共识算法的安全性依然可以得到保证。
上面从方法部分对本申请实施例进行了介绍,下面从虚拟装置的角度对本申请进行说明。
请参阅图6,本申请实施例中一种区块链数据的共识***,应用于提议节点,该***包括:
第一接收单元601,用于接收所述多个投票节点分别发送的签名信息,所述签名信息包括所述投票节点使用Gamma签名算法对待确认区块的签名;
判断单元602,用于判断接收到的所述签名信息的数量是否达到预设值;
第一生成单元603,用于当所述判断单元确定接收到的所述签名信息的数量达到预设值时,则利用接收到的多个所述签名信息使用Gamma签名算法聚合生成聚合签名;
第一发送单元604,用于将所述聚合签名发送至所述投票节点,以使得当所述投票节点对所述聚合签名通过验证时确定所述待确认区块有效。
作为一个优选方案,所述待确认区块包括交易结果,所述***还包括:
第二接收单元605,用于接收所述多个投票节点分别发送的交易信息;
排序单元606,用于对所述交易信息进行排序,得到交易列表;
第二发送单元607,用于将所述交易列表发送至所述投票节点,以使得所述投票节点模拟执行所述交易列表得到交易结果之后,所述投票节点根据所述交易结果生成待确认区块。
作为一个优选方案,所述交易列表包括历史区块信息,所述第二发送单元607还用于:
将所述历史区块信息发送至所述投票节点,以使得所述投票节点对所述历史区块信息进行匹配。
作为一个优选方案,所述***还包括:
模拟执行单元608,用于模拟执行所述交易列表,得到交易结果;
第二生成单元609,用于根据所述交易结果生成待确认区块,并使用Gamma签名算法对所述待确认区块进行签名,得到第一签名;
所述第一生成单元603具体用于:
将所述第一签名与接收到的多个所述签名信息进行聚合,得到聚合签名。
作为一个优选方案,所述签名信息还包括所述待确认区块的区块头的哈希值。
作为一个优选方案,所述区块链***包括3F+1个节点,所述预设值包括2F,F为大于0的自然数。
请参阅图7,本申请实施例还提供了一种区块链数据的共识***,应用于投票节点,所述投票节点为区块链***中的节点,所述区块链***还包括提议节点,所述***包括:
获取单元701,用于获取待确认区块;
投票签名单元702,用于使用Gamma签名算法对所述待确认区块进行签名,生成签名信息;
发送单元703,用于将所述签名信息发送至所述提议节点;
接收单元704,用于接收所述提议节点发送的聚合签名,所述聚合签名为所述提议节点利用多个所述签名信息聚合后生成的;
验证单元705,用于验证所述聚合签名;
第一确定单元706,用于当所述聚合签名通过验证时,确定所述待确认区块有效。
可选地,所述待确认区块包括交易结果,所述获取单元701具体用于:
获取交易信息;
将所述交易信息发送至所述提议节点;
接收所述提议节点发送的交易列表,所述交易列表为所述提议节点对所述交易信息进行排序得到;
模拟执行所述交易列表,得到交易结果;
根据所述交易结果生成待确认区块。
可选地,所述交易列表包括历史区块信息,所述***还包括:
判断单元707,用于使用自身数据库判断是否存在与所述历史区块消息匹配的目标数据;
触发单元708,用于当所述判断单元确定自身数据库中存在与所述历史区块消息匹配的目标数据,则触发所述根据所述交易结果生成待确认区块。
可选地,在确定所述待确认区块有效之后,所述***还包括:
第二确定单元709,用于当确定所述待确认区块有效之后,则确定所述自身数据库中的目标数据有效。
可选地,所述区块链***包括3F+1个节点,F为大于0的自然数,所述验证单元具体705用于:
验证所述聚合签名中包含签名信息的数量是否大于或等于2F+1;
若是,则确定所述聚合签名通过验证;
若否,则确定所述聚合签名未通过验证。
可选地,所述签名信息还包括所述待确认区块的区块头的哈希值。
在本实施例中,区块链的数据共识装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、网络存储设备终端设备。
该装置1可以是组成CDN网络或者区块链网络的节点。
该区块链的数据共识装置1可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是区块链的数据共识装置1的内部存储单元,例如该区块链的数据共识装置1的硬盘。存储器11在另一些实施例中也可以是区块链的数据共识装置1的外部存储设备,例如区块链的数据共识装置1上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括区块链的数据共识装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于区块链的数据共识装置1的应用软件及各类数据,例如区块链的数据共识程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行区块链的数据共识程序01等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,区块链的数据共识装置还可以包括网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在区块链的数据共识装置1中处理的信息以及用于显示可视化的用户界面。
图8仅示出了具有组件11-14以及区块链的数据共识程序01的区块链的数据共识装置1,本领域技术人员可以理解的是,图8示出的结构并不构成对区块链的数据共识装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
可以理解的是,在本申请的各种实施例中,上述各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。