一种区块链共识方法及装置与流程

文档序号:20618074发布日期:2020-05-06 20:24阅读:181来源:国知局
一种区块链共识方法及装置与流程

本发明涉及区块链技术领域,特别是涉及一种区块链共识方法及装置。



背景技术:

区块链是一个分布式账本,每一个交易参与者都是区块链网络的节点,每个节点都有一份完整的公共账簿备份,上面记载着交易历史信息。任何一个节点发起交易行为都需要将相关信息更新到区块网络中的每一个节点的账簿,从而所有节点均可参与对这一笔交易的验证。怎样协调、保持各个账本之间的一致性,就是共识机制需要解决的问题。

共识机制的基本思路是每次临时选择一个节点作为记账节点,其他节点核实该记账节点记录的每一笔交易是否真实有效,如果不是则需要更换下一个记账节点。由于安全性问题,区块链设计时规定每次记账都需要重新选择记账节点,而现有的共识机制的区别主要是在记账节点的选取方式上,例如,dpos(股权授权证明)机制其核心思路就是选取见证节点轮流记账,这种方法的公正性不高,依赖于见证节点的可信度和选取见证节点的方案,该共识机制会存在见证节点的信任问题,因此无法公平的选择记账节点。



技术实现要素:

针对于上述问题,本发明提供一种区块链共识方法及装置,基于量子密钥的使用,解决了见证节点的信任问题及如何在见证节点中公平选择记账节点的问题。

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

一种区块链共识方法,包括:

确定见证节点;

基于量子密钥分发网络,为各个所述见证节点分发全局密钥;

利用所述全局密钥和交易数据选取出所述见证节点中满足预设条件的节点作为记账节点。

可选地,所述基于量子密钥分发网络,为各个所述见证节点分发全局密钥,包括:

在所述见证节点之间构建量子密钥分发网络;

在所述量子密钥分发网络中,随机选取一对量子网络节点,并生成一组对称密钥,将所述对称密钥作为全局密钥;

将所述全局密钥分发至所有量子网络节点,并指示所述见证节点从与之对应的量子网络节点中提取所述全局密钥,实现所有所述见证节点获得完全相同的全局密钥。

可选地,还包括:

当所述见证节点从与之对应的量子网络节点中提取到所述全局密钥之后,通过发送所述见证节点的摘要校验所述全局密钥的准确性,若校验成功,则指示所述见证节点记录所述全局密钥。

可选地,所述利用所述全局密钥和交易数据选取出所述见证节点中满足预设条件的节点作为记账节点,包括:

响应于交易数据积累完成前,根据所述见证节点的全局密钥生成组密钥;

将所述组密钥进行划分得到若干块组密钥,将每一块组密钥发送至各个所述见证节点,其中,所述每一块组密钥仅作为一个所述见证节点的凭证;

响应于交易数据收集完成,将交易数据和对应上一个区块的散列值组合在一起生成散列数据;

获取各个所述见证节点的差值信息,将差值最小的见证节点作为候选记账节点;

对所述候选记账节点的凭证和交易数据进行验证,若验证成功将所述候选记账节点作为记账节点。

可选地,所述响应于交易数据收集完成,将交易数据和对应上一个区块的散列值组合在一起生成散列数据,包括:

获取所述见证节点全局密钥中未使用的随机数;

将所述见证节点对应的交易数据和上一区块的散列值进行组合,生成组合后的数据;

通过所述未使用的随机数生成预设矩阵,并将所述预设矩阵与所述组合后的数据相乘,得到所述散列数据;

其中,所述差值信息表征所述散列数据与对应的见证节点的凭证之间的差值。

可选地,所述响应于交易数据收集完成,将交易数据和对应上一个区块的散列值组合在一起生成散列数据,包括:

获取所述见证节点全局密钥中未使用的随机数;

将所述见证节点对应的交易数据和上一区块的散列值进行组合,生成组合后的数据;

通过所述见证节点的凭证生成预设矩阵,并将所述预设矩阵与所述组合后的数据相乘,得到所述散列数据;

其中,所述差值信息表征所述散列数据与所述未使用的随机数之间的差值。

可选地,所述响应于交易数据收集完成,将交易数据和对应上一个区块的散列值组合在一起生成散列数据,包括:

获取所述见证节点全局密钥中未使用的随机数;

将所有所述见证节点对应的交易数据、上一区块的散列值和凭证进行组合,生成组合后的数据;

通过预设哈希函数对所述组合后的数据进行散列,得到所述散列数据;

其中,所述差值信息表征所述散列数据与所述未使用的随机数之间的差值。

一种区块链共识装置,包括:

确定单元,用于确定见证节点;

分发单元,用于基于量子密钥分发网络,为各个所述见证节点分发全局密钥;

选取单元,用于利用所述全局密钥和交易数据选取出所述见证节点中满足预设条件的节点作为记账节点。

可选地,所述分发单元包括:

构建子单元,用于在所述见证节点之间构建量子密钥分发网络;

密钥生成子单元,用于在所述量子密钥分发网络中,随机选取一对量子网络节点,并生成一组对称密钥,将所述对称密钥作为全局密钥;

密钥提取子单元,用于将所述全局密钥分发至所有量子网络节点,并指示所述见证节点从与之对应的量子网络节点中提取所述全局密钥,实现所有所述见证节点获得完全相同的全局密钥。

可选地,还包括:

校验子单元,用于当所述见证节点从与之对应的量子网络节点中提取到所述全局密钥之后,通过发送所述见证节点的摘要校验所述全局密钥的准确性,若校验成功,则指示所述见证节点记录所述全局密钥。

可选地,所述选取单元包括:

组密钥生成子单元,用于响应于交易数据积累完成前,根据所述见证节点的全局密钥生成组密钥;

划分子单元,用于将所述组密钥进行划分得到若干块组密钥,将每一块组密钥发送至各个所述见证节点,其中,所述每一块组密钥仅作为一个所述见证节点的凭证;

散列生成子单元,用于响应于交易数据收集完成,将交易数据和对应上一个区块的散列值组合在一起生成散列数据;

差值确定子单元,用于获取各个所述见证节点的差值信息,将差值最小的见证节点作为候选记账节点;

验证子单元,用于对所述候选记账节点的凭证和交易数据进行验证,若验证成功将所述候选记账节点作为记账节点。

可选地,所述散列生成子单元包括:

第一随机数获取子单元,用于获取全局密钥中未使用的随机数;

第一组合子单元,用于将所述见证节点对应的交易数据和上一区块的散列值进行组合,生成组合后的数据;

第一散列数据生成子单元,用于通过所述未使用的随机数生成预设矩阵,并将所述预设矩阵与所述组合后的数据相乘,得到所述散列数据;

其中,所述差值信息表征所述散列数据与对应的见证节点的凭证之间的差值。

可选地,所述散列生成子单元包括:

第二随机数获取子单元,用于获取全局密钥中未使用的随机数;

第二组合子单元,用于将所述见证节点对应的交易数据和上一区块的散列值进行组合,生成组合后的数据;

第二散列数据生成子单元,用于通过所述见证节点的凭证生成预设矩阵,并将所述预设矩阵与所述组合后的数据相乘,得到所述散列数据;

其中,所述差值信息表征所述散列数据与所述未使用的随机数之间的差值。

可选地,所述散列生成子单元包括:

第三随机数获取子单元,获取所述见证节点全局密钥中未使用的随机数;

第三组合子单元,用于将所有所述见证节点对应的交易数据、上一区块的散列值和凭证进行组合,生成组合后的数据;

第三散列数据生成子单元,用于通过预设哈希函数对所述组合后的数据进行散列,得到所述散列数据;

其中,所述差值信息表征所述散列数据与所述未使用的随机数之间的差值。

相较于现有技术,本发明提供了一种区块链共识方法及装置,首先确定见证节点,然后通过在见证节点中构建的量子密钥分发网络中使得各个见证节点获得相同的全局密钥,因为所有见证节点共同持有该全局密钥,利用该全局密钥选出满足预设条件的节点,即通过量子彩票机制选择得到记账节点,因此,基于量子密钥的使用,解决了见证节点的信任问题及如何在见证节点中公平选择记账节点的问题。

附图说明

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

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

图2为本发明实施例提供的一种确定全局密钥的方法的流程示意图;

图3为本发明实施例提供的一种选取记账节点的方法的流程示意图;

图4为本发明实施例提供的一种区块链共识装置的结构示意图。

具体实施方式

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

本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

在本发明实施例中提供了一种区块链共识方法,参见图1,包括:

s11、确定见证节点;

在本发明实施例中确定见证节点时,不是pow(工作证明)机制的完全去中心化信任的。量子网络与区块链结合基本只能考虑联盟链和私有链。联盟链中各成员在组建联盟链时就会投票选出见证节点(也称为见证人节点或者见证人),并为它们构建量子网络。如果是公有链,也可以参照dpos机制进行股份投票选见证人。

s12、基于量子密钥分发网络,为各个所述见证节点分发全局密钥;

在确定了见证节点之后,至少要在见证节点之间构建量子密钥分发网络。然后各个见证节点(在该量子密钥分发网络中也为量子节点)通过可信密钥中继,分发全局密钥,即让所有量子节点持续生成相同的随机数。

参见图2,在本发明实施例中提供了一种确定全局密钥的方法,包括:

s121、在所述见证节点之间构建量子密钥分发网络;

通过在见证节点之间构建量子密钥分发网络,然后各个见证节点可以基于该专用的量子密钥分发网络通过可信密钥中继,分发全局密钥,即让所有量子节点持续地生成相同的随机数,即通过量子密钥分发网络保证了节点获得的随时数是真随机数。

s122、在所述量子密钥分发网络中,随机选取一对量子网络节点,并生成一组对称密钥,将所述对称密钥作为全局密钥;

随机选择一对量子节点(量子网络节点),生成一组对称密钥。需要说明的是,量子密钥分发网和区块链网络是分开的,被选中的区块链节点通知自己的量子节点分发全局密钥,通过量子网络将全局密钥传给各个量子网络节点(即密钥中继),然后各个区块链工作节点提取全局密钥。除非被选中的一对节点(对称密钥)联合替换了量子网络中量子设备的程序,协同对密钥造假,否则就是量子随机数。替换程序会导致与其他量子设备的认证无法通过。

s123、将所述全局密钥分发至所有量子网络节点,并指示所述见证节点从与之对应的量子网络节点中提取所述全局密钥,实现所有所述见证节点获得完全相同的全局密钥。

所有见证节点都从自己的量子网络节点提取密钥后,需要发送摘要校验密钥的准确性,这样全部见证节点都得到了完全相同的随机数,即全局密钥。

s13、利用所述全局密钥和交易数据选取出所述见证节点中满足预设条件的节点作为记账节点。

生成了所有节点共同持有的全局密钥,利用全局密钥可以公平地选出记账节点(也称为记账人节点或者记账人)。在本发明实施例中是利用量子真随机数来选择由哪个节点记账,实现过程类似彩票摇奖过程,这种共识机制可以叫做量子彩票机制。

举例说明,其购买彩票的过程就是:利用量子网络的密钥分发,为每个节点分发一个随机数,且每个节点都知道其他节点被分发了什么随机数(为集体公证谁是中奖者);摇奖过程就是:当积累了足够的交易数据后,所有节点将当前交易数据和上一个区块的交易数据的散列值组合在一起计算新的散列值(哈希值),公布该新的散列值与分配给它的随机数的差值,差值最小的节点当选下一个记账节点;兑奖过程就是:所有节点验证新当选的记账节点记录地交易数据是否可靠,上一个区块的散列值是否正确,分配给它的随机数是否正确,计算的差值是否正确。当一定数量的节点确认新的记账节点无误后,区块链承认该记账节点记录的交易数据。其中,区块链是由多个区块组成的,而每个区块中会有一个时间戳即记录该区块生成的时间,这样基于时间戳就能保证整条区块链上的区块都按照时间顺序进行排列。每个区块包含两部分,即区块头和区块体,区块头记录了当前区块的元信息,区块体为实际数据,区块头中的元信息可以包括时间戳、区块体的哈希值和上一个区块的哈希值。若区块链是用来记录交易数据的,则区块体的实际数据即为交易数据,当对该区块的区块体进行哈希计算或验证时,则需要获知在该区块时间戳之前的且紧邻的区块的哈希值来进行计算。

具体的,参见图3,本发明实施例提供的确认记账节点的方法,可以包括以下步骤:

s131、响应于交易数据积累完成前,根据所述见证节点的全局密钥生成组密钥;

每次交易数据积累完成前,生成一串全局密钥(真随机数),又称为组密钥,即将每个见证节点对应的全局密钥存放至密钥池中,这样该密钥池就会对应一串全局密钥即组密钥。

s132、将所述组密钥进行划分得到若干块组密钥,将每一块组密钥发送至各个所述见证节点,其中,所述每一块组密钥仅作为一个所述见证节点的凭证;

将上述的组密钥分成若干个块,每个节点从中认领一块作为凭证。

s133、响应于交易数据收集完成,将交易数据和对应上一个区块的散列值组合在一起生成散列数据;

s134、获取各个所述见证节点的差值信息,将差值最小的见证节点作为候选记账节点,其中,所述差值信息表征所述散列数据与对应的见证节点的凭证之间的差值;

交易数据收集完成时,所有节点取出全局密钥中未使用的随机数,将交易数据和上一个区块的散列值组合在一起进行散列,生成散列数据。散列的方式为使用取出的随机数生成toeplitz矩阵,与组合后的数据相乘,各个节点公布散列后的数据与自己凭证的差值,差值最小的节点获得记账权,也就是根据差值的大小设定了记账节点应该满足的预设条件。

s135、对所述候选记账节点的凭证和交易数据进行验证,若验证成功将所述候选记账节点作为记账节点。

由于各个节点均知道其他节点的凭证,也知道交易数据、上一个区块的散列值和本次散列所用的随机数,可以对记账权和交易数据进行核实。

还包括:重新生成新的全局密钥,供下一次共识使用。例如,参考表1,表1为全局密钥池内密钥用途表。

表1

无论交易数据传播,还是共识时数据传递均采用量子随机数,加上共识的抽奖机制也采用量子随机数,杜绝了外部节点攻击或参与记账的可能。

对应的,在确定记账节点时,在本发明实施例中还可以包括如下方法:

方法一为:

获取所述见证节点全局密钥中未使用的随机数;

将所述见证节点对应的交易数据和上一区块的散列值进行组合,生成组合后的数据;

通过所述见证节点的凭证生成预设矩阵,并将所述预设矩阵与所述组合后的数据相乘,得到所述散列数据;

各个所述见证节点公布所述散列数据与所述未使用的随机数的差值,将差值最小的见证节点作为候选记账节点。

方法二为:

获取所述见证节点全局密钥中未使用的随机数;

将所有所述见证节点对应的交易数据、上一区块的散列值和凭证进行组合,生成组合后的数据;

使用预设哈希函数对所述组合后的数据进行散列,得到所述散列数据;

各个所述见证节点公布所述散列数据与所述未使用的随机数的差值,将差值最小的见证节点作为候选记账节点。

具体的,根据上述实施例中的描述,确定记账节点的方法为上述量子彩票机制中的摇奖算法,则该摇奖算法可以替换为以下几种:

所有节点将交易数据和上一个区块的散列值组合在一起,使用自己的凭证随机数构建toeplitz矩阵进行散列,然后与全局密钥中没有被认领的第n+1片段随机数比较。最接近的节点就是新的记账节点。

或者所有节点将交易数据、上一个区块的散列值和自己的凭证随机数组合在一起,使用普通的hash函数进行散列,然后与全局密钥中没有被认领的第n+1片段随机数比较。最接近的节点就是新的记账节点。

由于本发明的前提是让所有节点相信随机数是真随机数,不是由某个节点特意制作的随机数。相当于发行彩票需要保证足够的公正、随机,能使所有节点都信服,而且能实现记账人的真随机性,而不会被人为操控。根据物理量子不可克隆原理和微观世界随机概率的特性,使用量子密钥分发网络能够实现上述要求。因此,选择记账节点可以做到公平和真随机性,完全无规律,杜绝了一些见证人节点通过寻找轮流记账规律预知和联合控制区块链走向的可能性。随机数来自量子密钥分发,所有节点可以相信随机数不会被人篡改和操纵。利用量子密钥的不可窃听原理保证共识机制免于外部节点的攻击,只要网内大部分量子节点是可信的,区块链的共识过程就是安全的。由于公平和真随机性,攻击该共识机制需要联合51%的节点,而不是51%的计算力,可以避免个别节点使用超级计算机或量子计算机实现算例攻击,提升安全性。

在本发明实施例中还提供了一种区块链共识装置,参见图4,包括:

确定单元10,用于确定见证节点;

分发单元20,用于基于量子密钥分发网络,为各个所述见证节点分发全局密钥;

选取单元30,用于利用所述全局密钥和交易数据选取出所述见证节点中满足预设条件的节点作为记账节点。

可选地,所述分发单元20包括:

构建子单元,用于在所述见证节点之间构建量子密钥分发网络;

密钥生成子单元,用于在所述量子密钥分发网络中,随机选取一对量子网络节点,并生成一组对称密钥,将所述对称密钥作为全局密钥;

密钥提取子单元,用于将所述全局密钥分发至所有量子网络节点,并指示所述见证节点从与之对应的量子网络节点中提取所述全局密钥,实现所有所述见证节点获得完全相同的全局密钥。

可选地,还包括:

校验子单元,用于当所述见证节点从与之对应的量子网络节点中提取到所述全局密钥之后,通过发送所述见证节点的摘要校验所述全局密钥的准确性,若校验成功,则指示所述见证节点记录所述全局密钥。

可选地,所述选取单元30包括:

组密钥生成子单元,用于响应于交易数据积累完成前,根据所述见证节点的全局密钥生成组密钥;

划分子单元,用于将所述组密钥进行划分得到若干块组密钥,将每一块组密钥发送至各个所述见证节点,其中,所述每一块组密钥仅作为一个所述见证节点的凭证;

散列生成子单元,用于响应于交易数据收集完成,将交易数据和对应上一个区块的散列值组合在一起生成散列数据;

差值确定子单元,用于获取各个所述见证节点的差值信息,将差值最小的见证节点作为候选记账节点;

验证子单元,用于对所述候选记账节点的凭证和交易数据进行验证,若验证成功将所述候选记账节点作为记账节点。

可选地,所述散列生成子单元包括:

第一随机数获取子单元,用于获取全局密钥中未使用的随机数;

第一组合子单元,用于将所述见证节点对应的交易数据和上一区块的散列值进行组合,生成组合后的数据;

第一散列数据生成子单元,用于通过所述未使用的随机数生成预设矩阵,并将所述预设矩阵与所述组合后的数据相乘,得到所述散列数据;

其中,所述差值信息表征所述散列数据与对应的见证节点的凭证之间的差值。

可选地,所述散列生成子单元包括:

第二随机数获取子单元,用于获取全局密钥中未使用的随机数;

第二组合子单元,用于将所述见证节点对应的交易数据和上一区块的散列值进行组合,生成组合后的数据;

第二散列数据生成子单元,用于通过所述见证节点的凭证生成预设矩阵,并将所述预设矩阵与所述组合后的数据相乘,得到所述散列数据;

其中,所述差值信息表征所述散列数据与所述未使用的随机数之间的差值。

或者,所述散列生成子单元包括:

第三随机数获取子单元,获取所述见证节点全局密钥中未使用的随机数;

第三组合子单元,用于将所有所述见证节点对应的交易数据、上一区块的散列值和凭证进行组合,生成组合后的数据;

第三散列数据生成子单元,用于通过预设哈希函数对所述组合后的数据进行散列,得到所述散列数据;

其中,所述差值信息表征所述散列数据与所述未使用的随机数之间的差值。

相较于现有技术,本发明提供了一种区块链共识装置,首先通过确定单元确定见证节点,然后通过分发单元在见证节点中构建的量子密钥分发网络中使得各个见证节点获得相同的全局密钥,因为所有见证节点共同持有该全局密钥,利用该全局密钥选出满足预设条件的节点,即通过量子彩票机制选择得到记账节点,因此,基于量子密钥的使用,解决了见证节点的信任问题及如何在见证节点中公平选择记账节点的问题。

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

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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