1.一种基于联盟链验证节点分组的交易验证方法,其特征在于,所述基于联盟链验证节点分组的交易验证方法包括:联盟区块链系统中的各验证节点通过投票从各验证节点中确定出联盟区块链系统的系统领导节点后,根据预设的分组方式将所述联盟区块链系统中剩余的验证节点进行分组,确定出各门限签名验证组;
各门限签名验证组内的验证节点通过投票,确定出各门限签名验证组的组内领导节点;
所述系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组;
在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点在组内分发所述交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将所述门限签名片段提交给所述系统领导节点;
所述系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对所述最终的签名进行验证,在验证通过的情况下,将所述交易打包上链。
2.根据权利要求1所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述预设的分组方式包括:调用函数Divide(m, n)将联盟区块链系统中剩余的m个验证节点划分为 个门限签名验证组,所述门限签名验证组的个数 为:;
其中, 为m/(n‑1)的余数,n为预设的分组的个数,n≤m/4,每个门限签名验证组中包括一个组内领导节点和Zi个验证节点,Zi+1≥4。
3.根据权利要求2所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述系统领导节点在初始化阶段生成系统公钥和系统私钥,并根据门限签名验证组的个数对系统私钥进行划分,生成各私钥片段以及各私钥片段对应的组内公钥,将各私钥片段以及各私钥片段对应的组内公钥分配给对应的门限签名验证组,包括:所述系统领导节点在初始化阶段生成两个大素数v、q,并选择双线性对e:G1×G1→G2,v 其中,e为双线性映射,G1和G2是具有相同阶数v的乘法循环群,g为G1的生成元,满足g =1(mod q);联盟区块链系统选择一个哈希函数H:{0,1}*→G1,系统公共参数Φ为Φ=(e, G1,SG2, g, v, H),选择一个随机值S∈Zp为系统私钥,并生成系统公钥P为P=g ;
所述系统领导节点调用函数KeyGen(SP, )任取随机数a1、a2、…、ak‑1,首先,令a0=S,构
2 k‑1
造多项式f(x)=a0+a1x+a2x +…+ak‑1x ,x为未知数,其次,任取 个数x1、x2、…、 分别带入f(x)中,计算出密钥片段si ,获得私钥片段集={si |i∈{1, 2, …, }},最后调用函数Broadcast(si,pi),将每个私钥片段分给 个门限签名验证组,si为第i个门限签名验证组所获得的私钥片段,pi为第i个门限签名验证组的公钥,公钥集;
其中,第i个门限签名验证组所获得的私钥片段si和公钥pi计算方式为:si=f(i),
,
2 k‑1
f(i)=(a0+a1i+a2i +…+ak‑1i ) mod q;
其中,f(i)为每个门限签名验证组的秘密值,g为G1的生成元,si为第i个门限签名验证组所获得的密钥片段,a1、 a2、… 、ak‑1为域Fq上k‑1个非零元素,q为素数,k为门限签名阈值,k≤ 。
4.根据权利要求3所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点在组内分发所述交易以及获得的私钥片段,每个门限签名验证组中的各验证节点根据获得的私钥片段对交易进行验证,验证通过之后进行签名,生成门限签名片段,由每个组内领导节点将所述门限签名片段提交给所述系统领导节点,包括:在各门限签名验证组获得所述系统领导节点分发的交易时,每个组内领导节点调用函数Broadcast(M, si)将交易M和私钥片段si广播到门限签名验证组i中的每个验证节点j,j∈{1 , ..., Zi},Zi为当前门限签名验证组i 中的验证节点的个数,;
门限签名验证组i内每个验证节点接收到交易M后,每个验证节点调用函数Sign(si, M)对交易M进行验证,并在交易M验证通过后根据私钥片段si生成关于交易M的签名片段cj,并将签名片段cj保存到签名片段集合 中, ={cj |j∈{1, ..., Zi}},签名片段cj的生成过程为:;
其中,H()为哈希运算;
每个组内领导节点收集组内各验证节点的签名片段,组内领导节点使用数据结构为map
5.根据权利要求4所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述系统领导节点根据接收到的各门限签名片段合成为最终的签名,并使用系统公钥对所述最终的签名进行验证,在验证通过的情况下,将所述交易打包上链,包括:所述系统领导节点接收 个门限签名验证组生成的门限签名片段Ci,i∈{1, 2, …, },并将各门限签名片段存入签名片段集X中,X={Ci | i∈{1, 2, …, }}, ≥k,所述系统领导节点根据签名片段集X调用函数Aggregate(X)生成最终的签名C,其中,最终的签名C的生成过程为:,
;
其中, 为门限签名验证组i所对应的拉格朗日系数, k为门限签名阈值, 为一个素数;
所述系统领导节点使用系统初始化阶段生成的系统公钥P并调用函数Verify(C, P)对最终的签名C进行验证,验证成功返回“true”,否则返回“false”;
系统领导节点验证通过则进行区块链内共识,将所述交易打包上链,否则,则在签名片段集X中重新选择k个门限签名片段进行合成并使用系统公钥P进行验证,如果仍然没有验证通过,则继续在签名片段集X中选择k个门限签名片段,若重新选择3次之后仍然验证不通过,则放弃对该交易M进行验证,验证下一个交易。
6.根据权利要求5所述的基于联盟链验证节点分组的交易验证方法,其特征在于,所述系统领导节点对最终的签名C进行验证的过程表达式为:,
,
;
其中,e为双线性映射,g为乘法循环群G1的生成元, 表示判断左式和右式是否相等。