1.一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述方法包括:S1、对联盟链服务器中各个非记账的普通节点进行投票,选择出候选节点;从候选节点中选择出能够记账且参与共识的超级节点;联盟链服务器根据安全参数生成系统公共参数;
S2、各个超级节点根据系统发送的公共参数,通过相互交互和认证来生成各自的公/私钥对,并作为系统的公/私钥对,使候选节点通过系统的公/私钥对生成其公/私钥;具体的:S21、接收系统发送的公共参数后,联盟链服务器中的超级节点生成多项式;
S22、各个超级节点根据该多项式计算其自身的私钥,计算其自身的公钥,并广播;
S23、各个超级节点验证接受到的秘密值的有效性,若无效,则要求错误的超级节点重新发送秘密值;否则进入步骤S24;
S24、超级节点通过任意多个秘密值份额恢复出联合生成的随机秘密值;
S25、候选节点从超级节点中申请部分密钥,通过验证等式验证其有效性;
S26、如果部分密钥无效,候选节点公开部分密钥请求其他超级节点认证,否则候选节点计算其自身的密钥;
S3、根据当前块高度和超级节点的数量,从超级节点中选择出一个主节点,并向其他超级节点即副节点发送提案请求,即发起新一轮共识;
S4、副节点收到提案请求后,验证主节点的签名,通过验证则广播提案响应信息,副节点使用基于身份的聚合签名对接收到的提案响应信息进行签名验证;主节点及副节点接收到超过三分之二的其他副节点发送的提案响应信息,则广播提交信息,副节点接收提交信息,若超过三分之二的副节点同意则发送块;
S5、普通节点接收到块,完成事件触发后,返回步骤S3,重新进行初始化。
2.根据权利要求1所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述方法还包括步骤S6,其他副节点等待主节点的提案请求超时或等待提案响应超时,则广播视图更改请求更换主节点;其中,所述步骤S6具体包括:v+2
S61、将主节点的超时时间设置为2 *Tblock;令视图递增编号k=1,S62、v_k=v+k;副节点向其他副节点发出第v_k个视图更改请求;
S63、广播视图更改请求信息,并检查已收到的视图更改请求数目:若收到超过n‑f个超级节点发出的视图更改请求,即更改视图达成共识,则改变本地视图,初始化本地共识信息,并根据新的视图编号确认下一轮共识的主节点;
S64、如果在经过时间间隔后,视图更改仍未达成共识,则令k=k+1并返回到步骤S62;
其中,v表示当前视图的编号。
3.根据权利要求2所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述步骤S1中根据所选参数生成系统公共参数包括联盟链服务器随机选择一个素数p作为安全参数,联盟链服务器公开系统公共参数params={G,GT,p,g,e,t,n,Ai,k,Bj};其中,G和GT是两个阶为q的乘法循环群,g是G的生成元,双线性映射e:G×G→GT;其中t为门限值,n为超级节点个数;Ai,k表示第i个超级节点在第k个门限的公钥;i=[1,n],k=[0,t‑1];Bj表示第yjj个超级节点的公钥,Bj=g ;y表示超级节点的共享秘密份额;j=[1,n];并为主节点和副节点设置初始超时时间;主节点的初始超时时间设置为Tblock,副节点的初始超时时间设置v+1为2 *Tblock;Tblock表示区块周期,v表示当前视图编号。
4.根据权利要求2所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述步骤S3包括:S31、设置编号为(h‑v)mod N的超级节点为本轮共识的主节点,其他超级节点设置为副节点;其中,h为区块高度,v为当前视图编号,N为超级节点数目;
S32、当出块条件满足后,主节点向其他副节点发送提案请求。
5.根据权利要求4所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述步骤S31包括:S331、在经过主节点的超时时间后,按照共识策略从内存池中选取交易,取哈希打包为提案请求并广播,发起新一轮共识;
(v+1)
S332、将主节点的超时时间设置为(2 ‑k(v))*T_block;
S333、副节点在超时时间范围内未能广播则进入步骤S6进行视图更改。
6.根据权利要求2所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述步骤S4包括:S41、其他副节点验证主节点发送的提案请求的合法性,以及是否符合本地共识状态;
若验证通过,则广播提案响应信息;
S42、任意一个副节点收到其他副节点发送的提案响应信息,利用基于身份的聚合签名算法验证消息合法性;
S43、将副节点的超时时间延长;
S44、更新本地共识状态;
S45、对于交易消息包含的交易哈希,从内存池或未确认的交易中获取相应交易,并添加至共识模块;
S46、向副节点查询步骤S44中未在本地找到的交易信息,若未在其超时时间前接收到主节点发出的提案请求,则进入步骤S6,改变视图。
7.根据权利要求6所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述步骤S41包括:S411、计算出超级节点的公钥为 k=0,1,…,t‑1;其私钥为Si=ai,0;ai,k表示第i个超级节点在第k个门限的私钥;
S412、计算出主节点对副节点的验证签名: H(M)表示对消息M进行哈希运算;
S413、副节点接收区块消息M与其签名δ;验证等式e(δ,g)=e(H(M),Ai,0)是否成立,即验证主节点发送的消息和签名是否正确;如果等式成立,则认为认证成立,否则认证失败;
S414、副节点签名并广播提案响应信息。
8.根据权利要求6所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述步骤S42包括:S421、副节点收到超过三分之二个其他副节点发送的提议响应信息时,则进行基于身份的聚合签名认证;对于超级节点集合子集,在消息mj上提供一个签名;聚合签名当需要批量验证n条来自于n个签名者id1,id2,…,idn的签名时,这n条签名δj=(Ajk,Sj)对应于n个消息mj,其中j=1,…,n,k=0,1,…,t‑1;
S422、验证等式 是否成立;即其
他副节点对收到的提案响应信息进行验证;如果等式成立,则认为认证成立,否则认证失败;
S423、若在主节点的超时时间前,主节点收集到至少M个副节点的提案响应信息,包括:验证每一条提案响应信息中消息的合法性、是否符合本地共识状态,若通过验证,则将本节点的超时时间延长以及广播提交信息;
S424、若步骤S423出现验证错误时进入步骤S6,进行视图更改;
其中,H(M)表示对消息M进行哈希运算;y表示多项式值;Sj表示第j个节点选择的随机值。
9.根据权利要求1所述的一种基于分布式密钥的拜占庭容错共识方法,其特征在于,所述步骤S5包括:S51、每个已收集齐提案请求中交易信息的超级节点,若超级节点在超时时间范围前收集到至少M个超级节点的提交信息,包括:验证消息的合法性,以及是否符合本地共识状态,若通过验证,则将本节点的超时时间延长以及生成并广播新块;
S52、若步骤S51出现错误,则广播警告信息,并将超时时间设置为2*Tblock,重新返回步骤S3。