打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一种共识方法和共识系统与流程

本发明涉及区块链技术领域,尤其涉及一种共识方法和共识系统。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。其中,共识机制是区块链中所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。目前有向无环图(directedacyclicgraph,dag)类的区块链的共识机制都是基于工作量证明(proofofwork,pow)实现,dag的链式结构扩展为dag的结构,这种链式结构支持并行出块,可以提高吞吐量。

但是,在现有技术中,由于pow共识是通过比较计算能力来决定出块者,计算能力越高成功出块的概率就越高,而计算难度决定了出块的速度,难度值越高出块速度越低,当需要将出块速度提高时,分叉的概率也变大,最终会导致大量分叉,而在这些大量分叉中最终只有一个分叉会被最终确认,其他的分叉将被抛弃。因此,采用pow共识的dag,在提高计算能力时,参与出块计算的节点过多,以至于分叉量过多,最终导致dag性能无法提升。



技术实现要素:

本发明的主要目的在于提供一种共识方法和共识系统,通过出块节点对投票节点根据出块节点的投票请求反馈的投票信息进行验证,使区块链上区块达到共识的目的。

为实现上述目的,本发明实施例提供如下技术方案:

本发明第一方面公开了一种共识方法,适用于以dag方式构成的区块链中的出块节点,包括:

所述出块节点出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块,所述待共识区块包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表;

所述出块节点接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的;

当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。

优选的,所述出块节点接收投票节点反馈的投票信息之后,还包括:

所述出块节点基于可验证随机函数verify对所述投票信息进行验证,确定验证结果是否为true;

若所述验证结果为true,确定所述投票信息有效;

若所述验证结果不为true,将所述投票信息删除。

优选的,所述当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播之后,还包括:

当所述待共识区块的子区块数量达到预设值时,确定所述待共识区块为区块链上有效区块。

本申请第二方面公开了另一种共识方法,适用于以dag方式构成的区块链中的投票节点,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的,包括:

所述投票节点接收出块节点广播的待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块;

对所述待共识区块进行验证;

当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

优选的,所述对待共识区块进行验证包括:

验证所述待共识区块中是否包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表;

若是,验证所述待共识区块和所述待共识区块对应的父区块中是否存在重复的utxo双花交易;

若均不存在,所述投票节点基于私钥sk和所述待共识区块的hash值计算得到字符串x和计算证明p;

判断所述字符串x的长度是否小于阈值t;

若是,所述投票节点对所述待共识区块投票,并将投票信息反馈至所述出块节点。

本发明第三方面公开了一种共识系统,一种以dag方式构成的区块链系统,所述系统包括:

出块节点,用于出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块,所述待共识区块包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表;所述出块节点接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的;当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播;

投票节点,用于接收出块节点广播的待共识区块;对所述待共识区块进行验证;当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

本发明第四方面公开了另一种共识系统,适用于以dag方式构成的区块链中的出块节点,包括:

第一出块单元,用于出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块,所述待共识区块包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表;

第一接收单元,用于所述出块节点接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的;

第一广播单元,用于当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。

本发明第五方面公开了一种共识系统,适用于以dag方式构成的区块链中的投票节点,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的,包括:

第二接收单元,用于接收出块节点广播的待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块;

第二验证单元,用于对所述待共识区块进行验证,当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

本申请第六方面公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有共识程序,所述共识程序可被一个或者多个处理器执行,以实现本申请第一方面和本申请第二方面公开的任一项中所述的共识方法。

本发明第七方面公开了一种计算机程序产品,包括计算机指令,当其在计算机上运行时,使得计算机可以执行上述申请第一方面和本申请第二方面中任一项所述的共识方法。

由上述内容可知,本发明公开了一种共识方法和共识系统,区块链上的出块节点对投票节点根据出块节点广播的待共识区块反馈的投票信息进行验证,并将验证通过的投票信息打包进区块链上的区块中,并广播给其他节点,区块链上的节点对出块进行投票和验证,并通过验证达成共识,使区块链上节点达成共识,以及区块链上每两个区块可计算出一个新区块的提议者,使得多个提议者能够同时出块,相比链式的区块链结构,本申请的区块链结构出块速度更快,效率更高。

附图说明

图1为本发明一实施例提供的一种共识方法流程示意图;

图2为本发明一实施例提供的dag类区块链组织图;

图3为本发明一实施例提供的另一种共识方法的流程示意图;

图4为本发明一实施例提供的另一种共识方法的流程示意图;

图5为本发明一实施例提供的另一种共识方法的流程示意图;

图6为本发明一实施例提供的另一种共识方法的流程示意图;

图7为本发明一实施例提供的一种共识系统的结构示意图;

图8为本发明一实施例提供的另一种共识系统的结构示意图;

图9为本发明一实施例提供的另一种共识系统的结构示意图;

图10为本发明一实施例提供的另一种共识系统的结构示意图;

图11为本发明一实施例揭露的共识装置的内部结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

由背景技术可知,在现有技术中,由于区块链中的pow共识是通过比较计算能力来决定出块者,计算能力越高成功出块的概率就越高,而计算难度决定了出块的速度,难度值越高出块速度越低,当需要将出块速度提高时,分叉的概率也变大,最终会导致大量分叉,而在这些大量分叉中最终只有一个分叉会被最终确认,其他的分叉将被抛弃。因此,采用pow共识的dag,在提高计算能力时,参与出块计算的节点过多,以至于分叉量过多,最终导致dag性能无法提升。因此,本发明提供了一种共识方法和系统,通过出块节点对投票节点根据出块节点的投票请求反馈的投票信息进行验证,使区块链上区块达到共识的目的。

需要说明的是,所述区块链是一种链式数据结构,它以顺序方式按时间顺序组合数据块,并以加密方式保证不可篡改和不可伪造的分布式分类帐。在区块链中,每一个安装有区块链对应的客户端软件并连接到区块链的电脑就是区块链的一个有效节点,可以理解为这个世界上有多少这样的电脑,区块链上就有多少个节点,每个节点都可以自由加入和退出网络,并参与区块链中数据的读写。运行时以平面拓扑互连,并且网络中没有集中式服务器节点。

还需要说明的是,区块链上的所有节点都具有投票权和出块权,若一节点通过区块链上的区块计算出结果时,区块链上其他节点按照规定的规则进行投票,通过共识机制达成共识,投票通过,将以投票选出节点的出块为准,将该节点的出块打包至区块链上,而其他节点的出块作废,投票不通过,则区块链上所有节点继续争夺出块权利,直至投票通过的节点出现。

在本发明实施例中,具有出块权对应的节点称为出块节点,而在区块链中除了出块节点的其他具有投票权利的节点称为投票节点。

参照图1,图1为本发明实施例提供的一种共识方法的流程示意图。

所述共识方法适用于以dag方式构成的区块链中的出块节点,所述方法至少包括以下步骤:

步骤s101:所述出块节点出块并广播待共识区块。

在步骤s101中,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定;所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块,所述待共识区块包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表。

需要说明的是,第一区块、第二区块在利用提议节点确定函数确定出块节点时,尚未拥有子区块,但如果待共识区块入链则成为第一区块和第二区块的子区块。

步骤s102:所述出块节点接收投票节点反馈的投票信息。

在步骤s102中,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的。

需要说明的是,所述可验证随机函数(verifiablerandomfunction,vrf)为生成随机数的输出函数,可通过可验证随机函数vrf在区块链上选取预先设定数量的节点作为投票节点。

还需要说明的是,在dag类的共识中,区块以dag的方式进行组织,区块链节点是根据tip区块计算下一个区块的提议者,当区块链节点计算出出块节点是自己时,该区块链节点就成为出块节点。

如图2所示,所述dag是指不包含有向环的有向图就是有向无环图,在dag类中的每个区块结构都为block<blockhash,prehash1,prehash2,txs>,图2中的tip区块是指不存在子区块的区块,如图中的tip1,只存在父区块,还没有子区块。

其中,blockhash为本区块hash值,可通过区块的prehash1、prehash2和txs计算得到。

而所述prehash1是指前一个第一个节点的hash值,而所述prehash2是指前一个第二个节点的hash值,而所述txs是区块中包含的交易列表,即每一个区块都是根据前两个区块得到。

值得注意的是,所述出块节点将自己的公钥与通过计算出的下一个出块节点的公钥进行比较,如果两公钥相同,则本节点就是出块节点。

因此,可以通过两个指定区块的hash值进行计算,得到的计算结果和提议者列表确定出块节点,该出块节点再向区块链中的其他节点发送投票请求。

而所述投票请求发送到其他节点后,其他节点根据投票请求向出块节点反馈投票,因此,在本步骤中出块节点就能接收投票节点反馈的投票信息。

步骤s103:所述出块节点判断收集的有效投票信息数量是否达到预设数量,若收集的有效投票信息数量达到预设数量,执行步骤s104,若收集的有效投票信息数量未达到预设数量,执行步骤s102。

需要说明的是,当有效投票信息数量达到预设数量时,则表示区块链中的大多数节点认可出块节点,故不再需要收集有效投票信息,而有效投票信息数量未达到预设数量,则表示区块链上的其他节点不认可出块节点和/或其他节点未及时对出块节点进行投票,因此需要判断收集的有效投票信息数量是否达到预设数量,若收集的有效投票信息数量达到预设数量,若收集的有效投票信息数量达到预设数量,执行步骤s104,若收集的有效投票信息数量未达到预设数量,执行步骤s102继续收集有效投票信息,直至有效投票信息数量能达到预设数量。

还需要说明的是,所述预设数量是根据实际情况而定的数量,可以为任意数值,在本申请中不做限定。

步骤s104:将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。

在步骤s104中,因为出块节点收集到的有效投票信息中存在投票节点的签名和证明,所述签名和所述证明为所述投票节点的投票依据,而在区块链中,每个区块都是通过投票确定的,投票信息中的签名和证明可以防止区块链中有人作假,所以,需要将有效的投票信息打包至出块节点对应的区块中,并向所述区块链中的其他节点进行广播,区块链中的其他节点可以通过区块中的投票信息中签名和证明,认可该区块为区块链上的区块。

优选的,当所述待共识区块的子区块数量达到预设值时,确定所述待共识区块为区块链上有效区块。

需要说明的是,在区块的子区块数量达到一定时,则表示区块被区块链中其他节点大概率确认,因此需要先获取所述区块的子区块数量,当所述区块的子区块数量达到预设值时,可以确定所述区块为区块链上有效区块,当所述区块的子区块数量未达到预设值时,此时的区块还可以改变,因此需要继续获取所述区块的子区块数量,直至所述区块的子区块数量达到预设值时。

本申请通过所述出块节点出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定;所述出块节点接收投票节点反馈的投票信息;当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。通过上述公开的共识方法,通过预设提议者节点计算确定出块节点,出块节点向投票节点发送投票请求,出块节点接收投票节点根据投票请求反馈的投票信息并进行验证,将验证通过的投票信息打包进区块链上的区块中,并广播给其他节点,区块链上的节点对出块进行投票和验证,使出块节点和投票节点达成共识,在通过提议者列表控制了参与出块计算的节点数量时,减少在提高计算能力时参与出块计算的节点数量,从而达到提高了dag性能的目的,以及区块链上每两个区块可计算出一个新区块的提议者,使得多个提议者能够同时出块,相比链式的区块链结构,本申请的区块链结构出块速度更快,效率更高。

基于上述公开的共识方法,在执行完图1中示出的步骤102的出块节点接收投票节点反馈的投票信息之后,如图3所示,至少还包括以下步骤:

步骤s301:所述出块节点基于可验证随机函数verify对所述投票信息进行验证,确定验证结果是否为true,若所述验证结果为true,执行步骤s302,若所述验证结果不为true,执行步骤s303。

在步骤s301中,因为投票节点反馈的投票信息中可能存在缺失,因此,出块节点接收到投票节点反馈的投票信息后,需对每一投票信息进行验证,如果验证结果为true,则表示投票信息有效,若验证结果为false,则表示投票信息无效。

步骤s302:确定所述投票信息有效。

步骤s303:将所述投票信息删除。

在步骤s303中,由于投票信息为无效,因此需要将无效的投票信息删除,从而节约系统的存储空间。

本申请通过所述出块节点基于可验证随机函数verify对所述投票信息进行验证,确定验证结果是否为true;若所述验证结果为true,确定所述投票信息有效;若所述验证结果不为true,将所述投票信息删除。通过上述公开的共识方法,出块节点对投票节点的投票信息进行验证,通过验证投票信息,可以防止不法分子对待共识区块进行投票,杜绝了作弊行为出现,并通过验证与投票节点达成共识。

参考图4,图4为本发明实施例提供的另一种共识方法的流程示意图,所述共识方法适用于以dag方式构成的区块链中的投票节点,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的,所示共识方法包括以下步骤:

步骤s401:所述投票节点接收出块节点广播的待共识区块。

在步骤s401中,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块。

需要说明的是,所述投票节点是区块链中具有投票资格的节点。

步骤s402:对所述待共识区块进行验证,若所述待共识区块未通过验证,执行步骤s403,若所述待共识区块通过验证,执行步骤s404。

在步骤s402中,对所述待共识区块进行验证,包括验证出块节点的基本信息是否存在hash、txs、prehash1和prehash2,若所述出块节点的基本信息中不存在所述hash、所述txs、所述prehash1和所述prehash2,或者缺少了hash、所述txs、所述prehash1和所述prehash2中任意一个,则确定所述待共识区块未通过验证,并执行步骤s403,若所述出块节点的基本信息中均存在所述hash、所述txs、所述prehash1和所述prehash2,则确定所述待共识区块通过验证,并执行步骤s404。

步骤s403:退出对所述待共识区块进行投票。

步骤s404:所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

在步骤s404中,所述投票信息是投票节点对待共识区块进行投票所产生的信息,所述投票信息中包括<sign,pk,x,p>,其中,sign是指签名,pk是指投票节点的公钥,x是指与所述消息m对应的字符串,p为投票节点的计算证明,计算证明p是投票节点验证所述区块的计算过程,因此,需要将证明p和投票信息反馈至出块节点。

本申请通过所述投票节点接收出块节点广播的待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定;对所述待共识区块进行验证;当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。通过上述公开的共识方法,投票节点根据出块节点广播的待共识区块,对待共识区块进行验证,并在验证通过后将头批信息反馈给出块节点,从而使待共识区块与投票节点达成共识的目的。

参考图5,图5为上述实施例公开的共识方法图4示出的步骤s402的具体实现过程,至少包括以下步骤:

步骤s501:验证所述待共识区块中是否包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表,若所述待共识区块中是否包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表,执行步骤s502,否则执行步骤s506。

在步骤s501中,待共识区块的基本信息包括hash、txs、prehash1和prehash2,prehash1是所述待共识区块的第一父节点的hash值,prehash2是所述待共识区块的第二父节点的hash值,待共识区块的hash值是根据prehash1、prehash2和txs计算得到的。

因此,需要对待共识区块的基本信息进行验证,当所述待共识区块的基本信息处于完整,才能表明待共识区块为一个标准的区块。

步骤s502:验证所述待共识区块和所述待共识区块对应的父区块中是否存在重复的utxo双花交易,若所述待共识区块和所述待共识区块对应的父区块中均不存在重复的utxo双花交易,执行步骤s503,若所述待共识区块和所述待共识区块对应的父区块中存在重复的utxo双花交易,执行步骤s506。

在步骤s502中,所述双花交易是指区块链上的不忠实用户对一笔钱交易进行两次花费。所述utxo是指当前区块链上已确认但未花费的数字货币,即未花费的一笔钱。

在具体实现中,需要验证所述待共识区块和所述待共识区块对应的父区块中是否存在重复的utxo双花交易,当待共识区块或者待共识区块的父区块中存在utxo和/或双花交易时,都属于不正常交易,因此,需要验证待共识区块和所述待共识区块对应的父区块中是否存在重复的utxo双花交易,若所述待共识区块和所述待共识区块对应的父区块中均不存在重复的utxo双花交易,则说明待共识区块没有问题,并执行步骤s503,若所述待共识区块和所述待共识区块对应的父区块中存在重复的utxo双花交易,说明待共识区块存在问题,并执行步骤s506。

步骤s503:所述投票节点基于私钥sk和所述待共识区块的hash值计算得到字符串x和计算证明p。

在步骤s503中,所述可验证随机函数evaluate为可验证随机函数vrf中的一种函数,可以表示为evaluate(sk,m),所述可验证随机函数evaluate通过接收投票节点的私钥sk和出块节点的m进行计算,所述m为待共识区块的hash,可以获得字符串x和计算证明p。

需要说明的是计算证明p为所述投票节点验证所述区块的计算过程。

步骤s504:判断所述字符串x的长度是否小于阈值t,若所述字符串x的长度小于阈值t,执行步骤s505,若所述字符串x的长度不小于阈值t,执行步骤s506。

在步骤s504中,所述字符串x的长度是决定本投票节点是否可以对区块进行投票,若所述字符串x的长度小于所述阈值t,则表明本投票节点可以对所述区块进行投票,并执行步骤s505;若所述字符串x的长度不小于所述阈值t,则表示本投票节点不可以对所述区块进行投票,因此,只能执行步骤s506。

步骤s505:所述投票节点对所述待共识区块投票,并将投票信息反馈至所述出块节点。

步骤s506:退出对所述待共识区块投票。

本申请通过验证所述待共识区块中是否包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表;若是,验证所述待共识区块和所述待共识区块对应的父区块中是否存在重复的utxo双花交易;若均不存在,所述投票节点基于私钥sk和所述待共识区块的hash值计算得到字符串x和计算证明p;判断所述字符串x的长度是否小于阈值t;若是,所述投票节点对所述待共识区块投票,并将投票信息反馈至所述出块节点。通过上述公开的共识方法,区块链上的出块节点对投票节点根据出块节点广播的待共识区块反馈的投票信息进行验证,并将验证通过的投票信息打包进区块链上的区块中,并广播给其他节点,区块链上的节点对出块进行投票和验证,并通过验证达成共识,使区块链上节点达成共识。

参考图6、图6为本发明实施例通过的另一种共识方法的流程示意图,所述共识方法包括以下步骤:

步骤s601:所述出块节点出块并广播待共识区块。

需要说明的是,步骤s601的执行原理及具体执行过程与如图1所示的步骤s101的执行原理及具体执行过程相同,可参见上述对应描述,这里不再进行赘述。

步骤s602:所述投票节点接收出块节点广播的待共识区块。

步骤s603:对所述待共识区块进行验证;若所述待共识区块未通过验证,执行步骤s604,若所述待共识区块通过验证,执行步骤s605。

步骤s604:退出对所述出块节点投票。

步骤s605:所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

需要说明的是,步骤s602至步骤s605的执行原理及具体执行过程与如图4所示的步骤s401至步骤s404的执行原理及具体执行过程相同,可参见上述对应描述,这里不再进行赘述。

步骤s606:所述出块节点接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的。

步骤s607:所述出块节点判断收集的有效投票信息数量是否达到预设数量,若收集的有效投票信息数量达到预设数量,执行步骤s608,若收集的有效投票信息数量未达到预设数量,执行步骤s606。

步骤s608:将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。

需要说明的是,步骤s606至步骤s608的执行原理及具体执行过程与如图1所示的步骤s102至步骤s104的执行原理及具体执行过程相同,可参见上述对应描述,这里不再进行赘述。

本发明实施例通过上述公开的共识方法,区块链上的出块节点对投票节点根据出块节点广播的待共识区块反馈的投票信息进行验证,并将验证通过的投票信息打包进区块链上的区块中,并广播给其他节点,区块链上的节点对出块进行投票和验证,并通过验证达成共识,使区块链上节点达成共识。

与上述本发明实施例公开的共识方法相对应,本发明实施例提供了一种共识系统,如图7所示,所述共识系统,包括:

出块节点701,用于出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块,所述待共识区块包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表;所述出块节点接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的;当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。

投票节点702,用于接收出块节点广播的待共识区块;对所述待共识区块进行验证;当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

需要说明的是,上述本发明实施例公开的共识系统的各个单元和模块具体的原理和执行过程,与上述本发明实施例公开的共识方法相同,可参见上述本发明实施例公开的共识方法中相应的部分,这里不再进行赘述。

本申请通过出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,所述出块节点接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的;当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播;投票节点接收出块节点广播的待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定;对所述待共识区块进行验证;当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

通过上述公开的共识系统,区块链上的出块节点对投票节点根据出块节点广播的待共识区块反馈的投票信息进行验证,并将验证通过的投票信息打包进区块链上的区块中,并广播给其他节点,区块链上的节点对出块进行投票和验证,并通过验证达成共识,使区块链上节点达成共识。

与上述本发明实施例公开的共识方法相对应,本发明实施例提供了另一种共识系统,适用于以dag方式构成的区块链中的出块节点,如图8所示,所述共识系统,包括:

第一出块单元801,用于出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块,所述待共识区块包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表。

第一接收单元802,用于所述出块节点接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的。

第一广播单元803,用于当所述出块节点收集到的有效投票信息达到预设数量时,将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。

优选的,所述共识系统,还包括:

第一验证单元,用于基于可验证随机函数verify对所述投票信息进行验证,确定验证结果是否为true,若所述验证结果为true,确定所述投票信息是否有效,若所述验证结果不为true,将所述投票信息删除。

优选的,所述共识系统,还包括:

确定单元,用于确定所述待共识区块为区块链上有效区块。

需要说明的是,上述本发明实施例公开的共识系统的各个单元和模块具体的原理和执行过程,与上述本发明实施例公开的共识方法相同,可参见上述本发明实施例公开的共识方法中相应的部分,这里不再进行赘述。

本申请通过第一出块单元出块并广播待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定;第一接收单元接收投票节点反馈的投票信息,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的;当所述出块节点收集到的有效投票信息达到预设数量时,第一广播单元将收集到的所述有效投票信息打包至所述待共识区块中,并向所述区块链中的其他节点进行广播。

通过上述公开的共识系统,预设提议者节点计算确定出块节点,出块节点向投票节点发送投票请求,出块节点接收投票节点根据投票请求反馈的投票信息并进行验证,将验证通过的投票信息打包进区块链上的区块中,并广播给其他节点,区块链上的节点对出块进行投票和验证,使出块节点和投票节点达成共识,在通过提议者列表控制了参与出块计算的节点数量时,减少在提高计算能力时参与出块计算的节点数量,从而达到提高了dag性能的目的,以及区块链上每两个区块可计算出一个新区块的提议者,使得多个提议者能够同时出块,相比链式的区块链结构,本申请的区块链结构出块速度更快,效率更高。

与上述本发明实施例公开的共识方法相对应,本发明实施例提供了另一种共识系统,适用于以dag方式构成的区块链中的投票节点,所述投票节点是通过可验证随机函数vrf在所述区块链上随机选择的,如图9所示,所述共识系统,包括:

第二接收单元901,用于接收出块节点广播的待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定,其中,所述第一区块和第二区块位于所述待共识区块的前一级且当前没有子区块;

第二验证单元902,用于对所述待共识区块进行验证,当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。

优选的,如图10所示,所述第二验证单元902,包括:

第一验证子单元1001,用于验证所述待共识区块中是否包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表;

第二验证子单元1002,用于所述待共识区块中是否包括所述待共识区块的hash值,所述第一区块的hash值,所述第二区块的hash值和交易列表,验证所述待共识区块和所述待共识区块对应的父区块中是否存在重复的utxo双花交易;

计算子单元1003,用于所述待共识区块和所述待共识区块对应的父区块中均不存在重复的utxo双花交易,所述投票节点基于私钥sk和所述待共识区块的hash值计算得到字符串x和计算证明p;

判断子单元1004,用于判断所述字符串x的长度是否小于阈值t;

投票子单元1005,用于所述字符串x的长度小于阈值t,所述投票节点对所述待共识区块投票,并将投票信息反馈至所述出块节点。

需要说明的是,上述本发明实施例公开的共识系统的各个单元和模块具体的原理和执行过程,与上述本发明实施例公开的共识方法相同,可参见上述本发明实施例公开的共识方法中相应的部分,这里不再进行赘述。

本申请通过第二接收单元接收出块节点广播的待共识区块,所述出块节点由利用提议节点确定函数对第一区块、第二区块和预设提议节点列表进行计算得到的计算结果确定;第二验证单元对所述待共识区块进行验证,当所述待共识区块通过验证,所述投票节点对所述待共识区块进行投票,并将投票信息反馈至所述出块节点。通过上述公开的共识系统,投票节点根据出块节点广播的待共识区块,对待共识区块进行验证,并在验证通过后将头批信息反馈给出块节点,从而使待共识区块与投票节点达成共识的目的。

在本实施例中,共识装置1可以是pc(personalcomputer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备终端设备。

该装置1可以是组成cdn网络或者区块链网络的节点。

如图11所示,该共识装置1可以包括存储器11、处理器12和总线13。

其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是共识装置1的内部存储单元,例如该共识装置1的硬盘。存储器11在另一些实施例中也可以是共识装置1的外部存储设备,例如共识装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括共识装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于共识装置1的应用软件及各类数据,例如共识程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行共识程序01等。

该总线13可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

进一步地,共识装置还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该装置1与其他电子设备之间建立通信连接。

可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在共识装置1中处理的信息以及用于显示可视化的用户界面。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
报告 | 高盛:你们看不懂的区块链,其实是省钱利器
钟馥百:区块链技术在企业的落地与实践|线上分享
一文说清“链上”和“链下”
【案例】中国银联、光大银行基于区块链的可信电子凭证系统
Algorand协议简介
Hash算法解决冲突的四种方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服