1.本发明属于区块链技术领域,特别是涉及一种基于后量子门限签名的区块链共识系统。
背景技术:2.区块链是一种可信的、可追溯、不可篡改、去中心的分布式数据库。区块链由p2p网络用户节点管理。区块链最成功的应用是比特币,它是2008年诞生的。从那以后,区块链技术就被广泛应用于密码货币、金融、银行、供应链和物流等领域。
3.区块链是一种只能添加的数据管理系统,由p2p网络运维。每个p2p网络的节点维护一个完整的区块链。区块链的区块存储了信息,例如交易数据。当新的交易发生,所有节点必须对交易达成共识,才能够存储到区块链的区块中。
4.共识算法是区块链最重要的算法之一。区块链共识算法主要基于算力,主要有pow、pbft等算法,需要很长的运算时间。例如,比特币需要60分钟才能确认一笔交易。所以,改进区块链共识算法非常重要。
技术实现要素:5.本发明的目的是提供一种基于后量子门限签名的区块链共识系统,以解决上述现有技术存在的问题。
6.为实现上述目的,本发明提供了一种基于后量子门限签名的区块链共识系统,包括:区块生成者选举模块、区块生成模块、区块验证模块及区块链更新模块,其中所述区块生成者选举模块、所述区块生成模块、所述区块验证模块及所述区块链更新模块依次连接;
7.所述区块生成者选举模块,用于获取用户组,其中用户组包括管理节点及用户节点,基于用户组选取初始用户节点;
8.所述区块生成模块,基于初始用户节点生成新区块;
9.所述区块验证模块,基于后量子门限签名方法,通过管理节点及用户节点对所述新区块进行真实性验证;
10.所述区块链更新模块,用于将验证后的新区块添加至区块链以实现区块链共识。
11.优选地,区块生成者选举模块中选取初始用户节点的过程包括:对不同用户组中的用户节点进行交换,得到新的用户组;随机从新的用户组中选取一个用户组;并将选取的一个用户组中的一个用户节点作为初始用户节点。
12.优选地,区块生成模块中生成新区块的过程包括:基于初始用户节点生成新区块,其中所述新区块中存储有交易信息及哈希值。
13.优选地,区块验证模块中对所述新区块进行真实性验证的过程包括:
14.基于新区块,管理节点使用私钥计算得到管理节点签名;
15.管理节点依次将新区块及管理节签名发送给同一用户组下的不同用户节点,依次通过用户节点对新区块及管理节签名进行用户节点验证;
16.若用户节点通过私钥验证所述新区块通过时,则基于管理节点签名计算用户节点签名,并将用户节点签名传输给管理节点,管理节点通过获取用户节点的公钥对所述用户节点签名进行公钥验证,若公钥验证通过则对用户节点签名进行存储,并将新区块及管理节签名发送下一用户节点,若公钥验证不通过则认为用户节点验证不通过;
17.若用户节点验证不通过时,则用户节点不向管理节点发送用户签名,管理节点对管理节点签名进行更新,将更新后的管理节点签名传输给下一个用户节点进行验证,直到同一用户组下的不用用户节点验证完成,得到用户组完整签名,对用户组完整签名进行判断,若判断结果为通过则真实性验证通过,并输出用户组完整签名及公钥,若判断结果为不通过则真实性验证不通过。
18.优选地,所述用户节点验证的过程包括:若所述新区块中交易数据与原始交易数据一致并且交易数据的哈希值与原始交易数据哈希运算后的数值一致,则用户节点验证通过;否则用户节点验证不通过。
19.优选地,公钥验证的过程:管理节点基于用户节点的公钥和用户节点签名计算公钥验证数据,若公钥验证数据与管理节点签名相等,则公钥验证通过,否则公钥验证不通过。
20.优选地,对用户组完整签名进行判断的过程包括:若用户组完整签名个数小于50%,则该签名不成立;否则用户组完整签名判断通过。
21.优选地,区块链更新模块中将验证后的新区块添加至区块链的过程包括:将所述新区块和所述用户节点签名进行广播到其他用户组,其他用户组基于区块验证模块输出的公钥对用户组完整签名进行验证,基于验证结果,将所述新区块添加至区块链以实现区块链共识。
22.本发明的技术效果为:本发明提供了一种基于后量子门限签名的区块链共识系统,通过区块生成者选举模块选取用户节点,基于用户节点通过区块生成模块生成新区块,基于后量子门限签名通过区块验证模块对生成的新区块进行验证,通过区块链更新模块将生成的新区块添加至区块链,本发明基于后量子门限签名的区块链共识系统能够有效执行区块链的共识过程,效率高,并且能够抵御量子计算攻击。
附图说明
23.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
24.图1为本发明实施例中的系统结构示意图。
具体实施方式
25.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
26.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
27.如图1所示,本实施例中提供一种基于后量子门限签名的区块链共识系统,包括:
区块生成者选举模块,用于选举负责生成区块的节点。
28.区块生成模块,用于生成新的区块。
29.区块验证模块,用于区块的真实性验证。
30.区块链更新模块,用于添加新的区块至区块链。
31.区块生成者选举模块,是在区块链网络的所有节点中,选举负责生成区块的节点。该区块链网络由m个管理节点和若干个用户节点组成。每个管理节点管理一个用户组,每个用户组包含若干用户。所有区块链节点被分为m组。当一个新的用户加入区块链网络,它被随机分配到一个用户组。每个用户节点仅属于一个用户组。
32.区块生成者选举模块,选举负责生成区块链的节点的流程如下:
33.1.每个管理节点将用户组内各用户节点与其他任意组内的任意用户节点进行交换。最终形成m个新的用户组。
34.2.在m个新的用户组中,随机选取一个用户组,负责生成新区块。假定第t个用户组被选定。
35.3.假定第t个用户组有n个用户节点,该用户组的管理节点在n个用户节点中随机一个节点负责生成新区块。
36.4.所有过程是在第t个用户组组内进行,全程匿名。
37.区块生成模块,是被选中负责生成区块的节点,将当前提交至区块链网络的所有交易信息打包,并生成新区块的过程。
38.区块生成模块,生成新区块的流程如下:
39.1.被选中负责生成区块的节点开始生成新区块。
40.2.当前提交至区块链网络的所有交易信息被打包到区块的区块体内。
41.3.被选中负责生成区块的节点对区块的区块体生成哈希值,并写入区块的区块哈希内。
42.4.被选中负责生成区块的节点将新的区块发送给第t个用户组的管理节点。
43.区块验证模块,是第t个用户组组内所有用户节点和管理节点验证新区块的过程,也是一种基于后量子门限签名的区块链共识系统的核心。
44.区块验证模块,验证新区块m的流程如下:
45.1.第t个用户组的管理节点计算m
′
=t(m),然后计算m
′
的哈希值,即h(m
′
)。t是消息变换模块。
46.2.管理节点使用它的私钥计算f是多变量方程求值模块,l是线性变换模块,kr是管理节点的私钥。
47.3.管理节点将m和s
r1
发给第一个用户节点。
48.4.如果第一个用户同意接受验证,并验证m通过,即m中交易数据与原始交易数据一致并且交易数据的哈希值与原始交易数据哈希运算后的数值一致,它使用它的私钥k1计算f1是多变量方程求值模块,l1是线性变换模块,k1是第一个用户节点的私钥。
49.5.第一个用户将s1发给管理节点。
50.6.管理节点使用第一个用户的公钥p1验证签名s1,计算如果结果等于s
r1
,则签名s1被接收,否则拒绝该签名。是多变量多项式求值模块。
51.7.如果第一个用户未发送签名回到管理节点,管理节点则将将m和s
r1
发给下一个用户节点,并等待接收s1。否则,管理节点计算m
″
=t(m
′
),然后计算m
″
的哈希值,即h(m
″
)。t是消息变换模块。
52.8.管理节点使用它的私钥计算f是多变量方程求值模块,l是线性变换模块,kr是管理节点的私钥。
53.9.管理节点将m和s
r2
发给下一个用户节点,并等待接收s2。
54.10.s3,s4,...,s
l
的计算过程与前面的流程类似,直到完成最后一个用户节点的询问。
55.11.管理节点收集s1,s2,...,s
l
作为完整的签名。如果l≤n/2,则该签名不成立,因为参与的人数少于50%。否则,该签名(s1,s2,...,s
l
)是m的一个有效签名。
56.12.管理节点输出签名(s1,s2,...,s
l
),和公钥pr,p1,p2,...,p
l
。
57.区块链更新模块,是被选中负责生成区块的节点将新区块加到区块链的过程。
58.区块链更新模块,更新区块链的流程如下:
59.1.被选中负责生成区块将新的区块加到区块链上。
60.2.新的区块和签名(s1,s2,...,s
l
)被广播到区块链网络的其他节点。
61.3.其他节点获得新的区块和签名(s1,s2,...,s
l
),并使用公钥pr,p1,p2,...,p
l
验证签名。
62.4.如果验证通过,则将新区块加到区块链上。
63.节点验证签名(s1,s2,...,s
l
)的过程如下:
64.1.使用公钥p1计算如果结果等于s
r1
,则继续,否则拒绝该签名,是多变量多项式求值模块。
65.2.继续计算m
′
=t(m),然后计算m
′
的哈希值,即h(m
′
)。t是消息变换模块。
66.3.使用公钥pr计算如果结果等于h(m
′
),则继续,否则拒绝该签名,是多变量多项式求值模块。
67.4.(s
r2
,s
r3
,...,s
rl
,s2,s3,...,s
l
)的验证过程使用公钥pr,p2,p3,...,p
l
,方法类似。
68.5.如果(s
r1
,s
r2
,...,s
rl
,s1,s2,...,s
l
)被验证通过,则该签名是真,否则拒绝该签名。
69.多变量方程求值模块,被函数f,f1,f2,...,fn调用。
70.多变量方程求值模块的输入是x。
71.多变量方程求值模块的输出是y。
72.多变量方程求值模块的多变量多项式如下:
73.∑α
ijoivj
+∑βioi+∑χ
ijvivj
+∑δ
ivi
+ε.
74.多变量方程求值模块的运算过程如下:
75.1.醋变量随机生成并被代入多变量方程组。
76.2.α,β,χ,δ,ε是私钥,被代入多变量方程组。
77.3.多变量方程组被转换成只关于油变量的线性方程组。
78.4.使用高斯消元或高斯约当消元求解线性方程组。
79.5.醋变量和求解得的油变量是输出。
80.线性变换模块,被函数l,l1,l2,...,ln调用。
81.线性变换模块的输入是x。
82.线性变换模块的输出是y。
83.线性变换模块的运算过程如下:
84.1.输入x被代入y=ax+b。
85.2.a是私钥矩阵,被代入计算矩阵向量乘法ax。
86.3.b是私钥向量,被代入计算向量加法ax+b。
87.4.y是输出。
88.多变量多项式求值模块,被函数调用。
89.多变量多项式求值模块的输入是x。
90.多变量多项式求值模块的输出是y。
91.多变量多项式求值模块的运算过程如下:
92.1.输入x被代入一组多变量多项式计算。
93.2.公钥被代入这组多变量多项式,作为多项式的系数。
94.3.多变量多项式进行求值,结果是y。
95.消息变换模块,被函数t调用。
96.消息变换模块的运算过程如下:
97.1.输入m被表示成二进制形式,然后进行循环右移一位,变换成m
′
。
98.2.m
′
是输出。
99.本实施例的一种基于后量子门限签名的区块链共识系统的工作过程如下:
100.1.每个管理节点将用户组内各用户节点与其他任意组内的任意用户节点进行交换。最终形成m个新的用户组。
101.2.在m个新的用户组中,随机选取一个用户组,负责生成新区块。假定第t个用户组被选定。
102.3.假定第t个用户组有n个用户节点,该用户组的管理节点在n个用户节点中随机一个节点负责生成新区块。
103.4.所有过程是在第t个用户组组内进行,全程匿名。
104.5.被选中负责生成区块的节点开始生成新区块。
105.6.当前提交至区块链网络的所有交易信息被打包到区块的区块体内。
106.7.被选中负责生成区块的节点对区块的区块体生成哈希值,并写入区块的区块哈希内。
107.8.被选中负责生成区块的节点将新的区块发送给第t个用户组的管理节点。
108.9.第t个用户组的管理节点计算m
′
=t(m),然后计算m
′
的哈希值,即h(m
′
)。t是消
息变换模块。
109.10.管理节点使用它的私钥计算f是多变量方程求值模块,l是线性变换模块,kr是管理节点的私钥。
110.11.管理节点将m和s
r1
发给第一个用户节点。
111.12.如果第一个用户同意接受验证,并验证m通过,即m中交易数据与原始交易数据一致并且交易数据的哈希值与原始交易数据哈希运算后的数值一致,它使用它的私钥k1计算f1是多变量方程求值模块,l1是线性变换模块,k1是第一个用户节点的私钥。
112.13.第一个用户将s1发给管理节点。
113.14.管理节点使用第一个用户的公钥p1验证签名s1,计算如果结果等于s
r1
,则签名s1被接收,否则拒绝该签名。是多变量多项式求值模块。
114.15.如果第一个用户未发送签名回到管理节点,管理节点则将将m和s
r1
发给下一个用户节点,并等待接收s1。否则,管理节点计算m
″
=t(m
′
),然后计算m
″
的哈希值,即h(m
″
)。t是消息变换模块。
115.16.管理节点使用它的私钥计算f是多变量方程求值模块,l是线性变换模块,kr是管理节点的私钥。
116.17.管理节点将m和s
r2
发给下一个用户节点,并等待接收s2。
117.18.s3,s4,...,s
l
的计算过程与前面的流程类似,直到完成最后一个用户节点的询问。
118.19.管理节点收集s1,s2,...,s
l
作为完整的签名。如果l≤n/2,则该签名不成立,因为参与的人数少于50%。否则,该签名(s1,s2,...,s
l
)是m的一个有效签名。
119.20.管理节点输出签名(s1,s2,...,s
l
),和公钥pr,p1,p2,...,p
l
。
120.21.被选中负责生成区块将新的区块加到区块链上。
121.22.新的区块和签名(s1,s2,...,s
l
)被广播到区块链网络的其他节点。
122.23.其他节点获得新的区块和签名(s1,s2,...,s
l
),并使用公钥pr,p1,p2,...,p
l
验证签名。
123.24.如果验证通过,则将新区块加到区块链上。
124.以上所述,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。