生成区块链中区块的方法、装置及电子设备与流程

文档序号:30495432发布日期:2022-06-22 04:09阅读:152来源:国知局
生成区块链中区块的方法、装置及电子设备与流程

1.本发明涉及区块链领域,具体而言,涉及一种生成区块链中区块的方法、装置及电子设备。


背景技术:

2.区块链是由节点参与的分布式数据库系统,其具有不可伪造、全程留痕、可以追溯、公开透明、集体维护等特点。共识算法作为区块链的核心技术,能够在缺乏中央控制的网络中,实现数据的分布式一致性,对维护系统的稳定运行和节点相互信任起着重要的作用。
3.目前,相关区块链中的出块节点在出块之前,对手容易识别该出块节点的身份并通过社会工程或技术手段影响该出块节点的出块行为,从而降低了区块链中共识机制的安全性。
4.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种生成区块链中区块的方法、装置及电子设备,以至少解决现有技术中由于区块链出块节点易被识别造成的共识机制安全性低的技术问题。
6.根据本发明实施例的一个方面,提供了一种生成区块链中区块的方法,包括:获取目标历史区块,其中,目标历史区块为区块链中记录有目标历史数据的区块,目标历史数据表征当前出块轮次中的每个出块节点所对应的出块顺序,出块轮次表征所有出块节点完成一次出块的轮次;基于目标历史区块确定公开承诺信息以及与公开承诺信息对应的环签名,其中,公开承诺信息用于表征当前出块节点在下一出块轮次中的身份;广播公开承诺信息、环签名、质押权益信息至当前出块轮次中的末位出块节点,以使末位出块节点基于公开承诺信息、环签名、质押权益信息生成目标数据,其中,质押权益信息表征当前出块节点在下一出块轮次中的重要程度,目标数据表征当前至少一个出块节点在下一出块轮次中的出块顺序;基于目标数据确定当前出块节点在出块顺序中的目标位次,以在目标位次生成目标区块。
7.进一步地,生成区块链中区块的方法还包括:基于预设公钥对目标历史区块进行签名,得到承诺凭证;对承诺凭证进行哈希计算,得到公开承诺信息;基于目标历史区块、公开承诺信息确定环签名。
8.进一步地,生成区块链中区块的方法还包括:获取目标公钥集合,目标公钥集合包括当前出块轮次中的所有出块节点的公钥;确定当前出块节点的私钥;基于目标历史区块、公开承诺信息、目标公钥集合以及私钥确定环签名。
9.进一步地,末位出块节点用于基于目标公钥集合验证环签名,并基于验证成功的环签名所对应的公开承诺信息和质押权益信息生成目标数据。
10.进一步地,目标数据中至少包括与当前至少一个出块节点中每个出块节点对应的
目标公开承诺信息、目标质押权益信息以及出块序号,生成区块链中区块的方法还包括:获取目标数据中与待出块节点的出块序号对应的目标公开承诺信息;将公开承诺信息与目标公开承诺信息进行比对;在公开承诺信息与目标公开承诺信息相同的情况下,确定待出块节点的出块序号对应的位次为目标位次,确定待出块节点为当前出块节点。
11.进一步地,生成区块链中区块的方法还包括:在基于目标数据确定当前出块节点在出块顺序中的目标位次之后,基于目标区块、承诺凭证、当前出块节点的出块序号生成交易报文;将交易报文广播给其它出块节点,以使其它出块节点对交易报文进行验证,其中,其它出块节点为当前所有出块节点中除当前出块节点以外的节点;在所有验证结果表征当前出块节点的位次为目标位次的情况下,向其它出块节点广播投票报文。
12.进一步地,生成区块链中区块的方法还包括:在向其它出块节点广播投票报文之前,对目标区块进行签名,得到目标签名;基于目标签名、目标区块、公开承诺信息生成投票报文。
13.进一步地,其它出块节点包括第一出块节点和至少一个第二出块节点;第一出块节点用于对投票报文进行验证,并在投票报文所对应的验证结果表征当前出块节点的身份为目标身份的情况下,生成应答报文,并获取至少一个第二出块节点广播的应答报文,其中,应答报文至少包括生成该应答报文的出块节点对应的公开承诺信息。
14.进一步地,第一出块节点还用于基于目标历史数据确定每个应答报文对应的出块节点的目标历史质押权益信息,并基于目标历史质押权益信息确定是否对目标区块进行上链处理。
15.进一步地,确定质押权益信息中的质押额度;在质押额度大于或等于预设数值的情况下,更新节点的类型为出块节点;在质押额度小于预设数值的情况下,更新节点的类型为普通节点,其中,普通节点为无法生成区块的节点。
16.根据本发明实施例的另一方面,还提供了一种生成区块链中区块的装置,包括:获取模块,用于获取目标历史区块,其中,目标历史区块为区块链中记录有目标历史数据的区块,目标历史数据表征当前出块轮次中的每个出块节点所对应的出块顺序,出块轮次表征所有出块节点完成一次出块的轮次;确定模块,用于基于目标历史区块确定公开承诺信息以及与公开承诺信息对应的环签名,其中,公开承诺信息用于表征当前出块节点在下一出块轮次中的身份;处理模块,用于广播公开承诺信息、环签名、质押权益信息至当前出块轮次中的末位出块节点,以使末位出块节点基于公开承诺信息、环签名、质押权益信息生成目标数据,其中,质押权益信息表征当前出块节点在下一出块轮次中的重要程度,目标数据表征当前至少一个出块节点在下一出块轮次中的出块顺序;生成模块,用于基于目标数据确定当前出块节点在出块顺序中的目标位次,以在目标位次生成目标区块。
17.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的生成区块链中区块的方法。
18.根据本发明实施例的另一方面,还提供了一种电子设备,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的生成区块链中区块的方法。
19.根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述的生成区块链中区块的方法。
20.在本发明实施例中,采用基于环签名、公开承诺信息和质押权益信息确定当前至少一个出块节点在下一出块轮次中的出块顺序的方式,通过获取目标历史区块,然后基于目标历史区块确定公开承诺信息以及与公开承诺信息对应的环签名,接着广播公开承诺信息、环签名、质押权益信息至当前出块轮次中的末位出块节点,以使末位出块节点基于公开承诺信息、环签名、质押权益信息生成目标数据,从而基于目标数据确定当前出块节点在出块顺序中的目标位次,以在目标位次生成目标区块。其中,目标历史区块为区块链中记录有目标历史数据的区块,目标历史数据表征当前出块轮次中的每个出块节点所对应的出块顺序,出块轮次表征所有出块节点完成一次出块的轮次,公开承诺信息用于表征当前出块节点在下一出块轮次中的身份,质押权益信息表征当前出块节点在下一出块轮次中的重要程度,目标数据表征当前至少一个出块节点在下一出块轮次中的出块顺序。
21.在上述过程中,由于环签名具有无条件隐匿性以及不可伪造性的特点,因此,通过采用基于环签名的排序算法隐匿选举下一出块轮次的至少一个出块节点,即隐匿选举目标数据中对应的出块节点,避免了对公开承诺信息所对应的出块节点的身份泄露,从而可以有效模糊对手攻击对象、有效抵抗自适应攻击,提高了相关共识机制的安全性。此外,由于权益信息表征了出块节点的重要性,公开承诺信息表征了出块节点的身份,因此,基于质押权益信息和公开承诺信息确定当前至少一个出块节点在下一出块轮次中的出块顺序,一方面,保证了出块顺序的合理性,另一方面,保证了在出块过程中,各出块节点可以有效识别对应于自身的目标位次,从而避免共识机制发生分叉。
22.由此可见,本技术所提供的方案达到了基于环签名、公开承诺信息和质押权益信息确定当前至少一个出块节点在下一出块轮次中的出块顺序的目的,从而实现了提高公式机制安全性的技术效果,进而解决了现有技术中由于区块链出块节点易被识别造成的共识机制安全性低技术问题。
附图说明
23.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
24.图1是根据本发明实施例的一种可选的生成区块链中区块的方法的示意图;
25.图2是根据本发明实施例的一种可选的区块链的示意图;
26.图3是根据本发明实施例的一种可选的区块链中节点的示意图;
27.图4是根据本发明实施例的一种可选的验证出块节点的示意图;
28.图5是根据本发明实施例的一种可选的生成区块链中区块的方法的流程图;
29.图6是根据本发明实施例的一种可选的生成区块链中区块的装置的示意图;
30.图7是根据本发明实施例的一种可选的电子设备的示意图。
具体实施方式
31.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是
本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
32.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
33.为了便于描述,以下对本技术实施例涉及的部分名词或术语进行说明:
34.无利害攻击:区块链网络中,当出现高度一致分叉时,节点为了维持自己短期的利益,可以分别在两条分叉上进行出块,从而造成区块链网络中长期存在分叉链的情况,分叉链之间的竞争相对没有分叉来说会降低它们的总体价值,这样的现象称为无利害攻击。
35.自适应腐化:在高额利益引诱下,对手经过长期观察某一区块链,并能大概率预估区块链出块节点,在出块节点出块前,通过社会工程或技术手段影响出块节点出块行为,从而实现攻击,这样的现象称为自适应腐化。
36.需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
37.实施例1
38.根据本发明实施例,提供了一种生成区块链中区块的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
39.图1是根据本发明实施例的一种可选的生成区块链中区块的方法的示意图,如图1所示,该方法包括如下步骤:
40.步骤s101,获取目标历史区块,其中,目标历史区块为区块链中记录有目标历史数据的区块,目标历史数据表征当前出块轮次中的每个出块节点所对应的出块顺序,出块轮次表征所有出块节点完成一次出块的轮次。
41.可选的,如图2所示,区块链中包括出块节点和普通节点,如图3所示,出块节点和普通节点均设置有账户模块和存储模块,其中,账户模块可以为区块链中的节点提供账户功能,账户内设置有权益额度,可以基于节点是否将账户内的权益额度作为质押以及所质押的权益额度来确定该节点为出块节点还是普通节点,存储模块持久化三部分信息,分别是区块上的区块信息(如目标历史数据)、整个区块链在某一出块轮次中所有出块节点的公开承诺信息、环签名等。此外,账户模块可以在区块链中的节点成为出块节点时,对外提供其他节点可调用的查询接口,以使其他节点基于查询接口确定该出块节点对外公开的质押权益信息是否合法。出块轮次表征所有可靠的出块节点完成一次出块的轮次,即公开承诺信息排序列表中所有出块节点完成一次出块的轮次。
42.其中,如图2所示,出块节点是区块链中的核心节点,也是区块链中的验证节点。一方面,出块节点可以执行出块作业,另一方面,出块节点也可以接收其他出块节点所广播的最新区块进行验证以及投票,以确定该最新区块是否上链。普通节点是区块链中的参与节点,普通节点没有权利可以出块,也无法对最新区块进行投票,但可以从验证节点(也即出块节点)接受最新区块,并对最新区块进行验证,若验证通过,则同步最新区块。
43.进一步地,目标历史区块为上一轮次中的末位出块节点所生成的区块,目标历史数据可以为对上一轮次中的每个出块节点在当前轮次所对应的公开承诺信息进行排序后生成的公开承诺信息排序列表。在当前出块轮次中,区块链中的出块节点可以按照前述的公开承诺信息排序列表进行出块,当公开承诺信息排序列表中的所有出块节点均完成出块时,说明当前出块轮次结束,可以进行下一出块轮次的出块。
44.步骤s102,基于目标历史区块确定公开承诺信息以及与公开承诺信息对应的环签名,其中,公开承诺信息用于表征当前出块节点在下一出块轮次中的身份。
45.在步骤s102中,如图4所示,可以基于哈希算法、公钥密码学签名算法等算法中的至少一种算法以及环签名算法对目标历史区块进行计算,从而得到公开承诺信息以及与公开承诺信息对应的环签名,其中,在本技术中,环签名也可以称为匿名承诺信息,环签名用于验证公开承诺信息。
46.可选的,在本实施例中,公开承诺可以用于基于公开承诺信息排序列表来间接验证当前出块节点的身份的合法性,即是否轮到该出块节点进行出块,环签名具有无条件隐匿性以及不可伪造性,其可以用于验证环签名的来源的可靠性,即验证生成该环签名所对应的公开承诺信息的出块节点是否为环中成员,也即验证前述出块节点是否真实。
47.需要说明的是,通过确定公开承诺信息以及环签名,可以便于后续生成目标数据。
48.步骤s103,广播公开承诺信息、环签名、质押权益信息至当前出块轮次中的末位出块节点,以使末位出块节点基于公开承诺信息、环签名、质押权益信息生成目标数据,其中,质押权益信息表征当前出块节点在下一出块轮次中的重要程度,目标数据表征当前至少一个出块节点在下一出块轮次中的出块顺序。
49.可选的,在本实施例中,区块链中采用pos共识机制,如图3所示,区块链中的所有节点中还设置有收发模块,收发模块用于向区块链中的其它节点广播特定信息,比如区块出块交易,环签名等,另一方面还用于接受并收集其他节点广播的请求并进行应答。具体地,基于pos共识机制的特性,当当前出块节点确定了公开承诺信息、环签名之后,当前出块节点可以基于收发模块将公开承诺信息、环签名以及质押权益信息广播给当前出块轮次中的所有出块节点,以使当前出块轮次中的末位出块节点获取到前述的公开承诺信息、环签名以及质押权益信息。
50.进一步地,在生成目标数据前,末位出块节点可以基于环签名对生成公开承诺信息的出块节点进行验证,并基于验证结果从当前所有出块节点中筛选出在下一出块轮次中进行出块的至少一个出块节点,其中,在下一出块轮次中进行出块的至少一个出块节点所对应的环签名为验证成功的环签名,由此确保了下一出块轮次中的出块节点的可靠性。更进一步地,在基于环签名确定了可靠的出块节点以后,末位出块节点可以基于前述可靠的出块节点的公开承诺信息以及质押权益信息确定前述可靠的出块节点在下一出块轮次中进行出块的出块顺序,从而生成目标数据。
51.需要说明的是,由于末位出块节点在获取到公开承诺信息的同时,还会获取到环签名,因此,末位出块节点可以基于环签名直接确定出块节点的可靠性,而无需对公开承诺信息或承诺凭证进行分析,即采用基于环签名的排序算法隐匿选举每一出块轮次的出块节点,从而可以避免对公开承诺信息所对应的出块节点的身份泄露,进一步地避免了现有技术中pos机制因在出块节点出块之前相关身份信息被对手掌握造成的无法防御自适应腐化,从而达到了模糊对手攻击对象、有效抵抗自适应攻击的目的,提高了相关共识机制的安全性。此外,由于每个环签名或是公开承诺信息所对应的出块节点必不相同,因此,基于环签名确定下一出块轮次中的出块节点,并将前述出块节点对应的公开承诺信息记录在目标数据中,可以确保在每一个出块轮次中,每一个出块节点仅会出块一次,从而避免pos共识机制或其它共识机制由于出块节点的行为不可预测和在同一时间内出块节点不唯一造成的容易存在分叉的问题。
52.步骤s104,基于目标数据确定当前出块节点在出块顺序中的目标位次,以在目标位次生成目标区块。
53.在步骤s104中,当前出块节点可以将自身的公开承诺信息与目标数据中的公开承诺信息进行比对,从而基于前述二者是否相同来确定自身的目标位次。
54.需要说明的是,由于目标数据中包括有与每个出块节点对应的公开承诺信息,且每个出块节点对应的公开承诺信息不同,因此,基于目标数据确定目标位次,使得各出块节点可以有效识别对应于自身的目标位次,从而确保了在出块过程中总存在唯一的出块节点进行出块,进而避免了现有的pos共识机制或其它共识机制由于出块节点的行为不可预测和在同一时间内出块节点不唯一造成的容易存在分叉的问题。
55.基于上述步骤s101至步骤s104所限定的方案,可以获知,在本发明实施例中,采用基于环签名、公开承诺信息和质押权益信息确定当前至少一个出块节点在下一出块轮次中的出块顺序的方式,通过获取目标历史区块,然后基于目标历史区块确定公开承诺信息以及与公开承诺信息对应的环签名,接着广播公开承诺信息、环签名、质押权益信息至当前出块轮次中的末位出块节点,以使末位出块节点基于公开承诺信息、环签名、质押权益信息生成目标数据,从而基于目标数据确定当前出块节点在出块顺序中的目标位次,以在目标位次生成目标区块。其中,目标历史区块为区块链中记录有目标历史数据的区块,目标历史数据表征当前出块轮次中的每个出块节点所对应的出块顺序,出块轮次表征所有出块节点完成一次出块的轮次,公开承诺信息用于表征当前出块节点在下一出块轮次中的身份,质押权益信息表征当前出块节点在下一出块轮次中的重要程度,目标数据表征当前至少一个出块节点在下一出块轮次中的出块顺序。
56.容易注意到的是,在上述过程中,由于环签名具有无条件隐匿性以及不可伪造性的特点,因此,通过采用基于环签名的排序算法隐匿选举下一出块轮次的至少一个出块节点,即隐匿选举目标数据中对应的出块节点,避免了对公开承诺信息所对应的出块节点的身份泄露,从而可以有效模糊对手攻击对象、有效抵抗自适应攻击,提高了相关共识机制的安全性。此外,由于权益信息表征了出块节点的重要性,公开承诺信息表征了出块节点的身份,因此,基于质押权益信息和公开承诺信息确定当前至少一个出块节点在下一出块轮次中的出块顺序,一方面,保证了出块顺序的合理性,另一方面,保证了在出块过程中,各出块节点可以有效识别对应于自身的目标位次,从而避免共识机制发生分叉。
57.由此可见,本技术所提供的方案达到了基于环签名、公开承诺信息和质押权益信息确定当前至少一个出块节点在下一出块轮次中的出块顺序的目的,从而实现了提高公式机制安全性的技术效果,进而解决了现有技术中由于区块链出块节点易被识别造成的共识机制安全性低技术问题。
58.在一种可选的实施例中,在区块链初始化阶段,即区块链中还未开始第一轮出块轮次时,可以确定区块链中所存在的出块节点,并收集这些出块节点的公开承诺信息和对应的质押权益信息,从而生成关于第一轮出块轮次中的出块节点的公开承诺信息排序列表,并基于用户输入的指令确定创世区块,将前述生成的公开承诺信息排序列表加入到创世区块中进行上链,从而使得各个出块节点可以从中获取在第一轮出块轮次的公开承诺信息列表,并依此出块。进而,在后续的轮次中,各出块节点可以依据前述步骤s101-s104所描述的方法确定出块顺序并进行出块。
59.需要强调的是,在本技术中,所指的当前出块轮次均为同一轮次,所指的下一出块轮次也均为同一轮次,且下一出块轮次为在当前出块轮次之后的出块轮次。
60.在一种可选的实施例中,如图3所示,区块链中的所有节点内还设置有配置模块,配置模块可以确定质押权益信息中的质押额度,并在质押额度大于或等于预设数值的情况下,更新节点的类型为出块节点,在质押额度小于预设数值的情况下,更新节点的类型为普通节点,其中,普通节点为无法生成区块的节点。
61.可选的,在区块链初始阶段,每个节点默认都是普通节点,并分配对应的账户。如图5所示,用户可以通过节点中的配置模块设置成为出块节点所质押的权益额度,并执行成为出块节点的命令,当配置模块获取到前述命令时,配置模块可以确定质押权益信息中的质押额度,然后基于预设数值与质押额度进行比对,并在质押额度大于或等于预设数值的情况下,将该普通节点的类型更新为出块节点;反之,在后续的过程中,用户也可以改变出块节点的质押额度,然后由配置模块基于新的质押额度与预设数值进行比对,并在质押额度小于预设数值的情况下,将该出块节点的类型更新为普通节点。其中,预设阈值表征普通节点成为出块节点所需要质押的权益额度比例。且配置模块还用于配置区块链中的用户特性参数(如用户id等)、技术参数(如共识算法选用等)等节点相关参数。
62.需要说明的是,通过基于质押权益确定节点的类型,实现了出块节点与普通节点的有效区分,从而便于节点间的共识。
63.在一种可选的实施例中,在基于目标历史区块确定公开承诺信息以及与公开承诺信息对应的环签名的过程中,当前出块节点可以基于预设公钥对目标历史区块进行签名,得到承诺凭证,然后对承诺凭证进行哈希计算,得到公开承诺信息,从而基于目标历史区块、公开承诺信息确定环签名。
64.可选的,如图3、图4所示,区块链中的所有节点内还设置有承诺模块以及签名模块。在当前出块轮次中,当前出块节点可以基于公开承诺信息排序列表确定待出块的出块节点所对应的位次,当当前出块节点确定轮到末位出块节点出块时,当前出块节点中的承诺模块可以调用签名模块基于公钥密码学签名算法对目标历史区块进行签名,得到承诺凭证,公式如下所示:
65.cp=sig(lastblock)
66.其中,cp表示承诺凭证,sig()表示公钥密码学签名算法,lastblock表示目标历史
区块。
67.进一步地,在确定了承诺凭证后,承诺模块可以调用签名模块对承诺凭证进行哈希计算,得到公开承诺信息,公式如下所示:
68.comm=hash(cp)
69.其中,comm表示公开承诺信息,hash()表示哈希算法,cp表示承诺凭证。
70.更进一步地,在确定了公开承诺信息以后,承诺模块可以基于环签名算法对述目标历史区块、公开承诺信息进行处理,从而确定环签名。
71.需要说明的是,由于对手基于承诺凭证内容容易推断出该承诺凭证所对应的出块节点的身份,因此,基于哈希计算得到公开承诺信息,可以对承诺凭证的内容进行有效隐匿,进而防止对手确定出块节点的身份。从而可以有效防止自适应攻击,保证了共识机制的活性。
72.在一种可选的实施例中,在基于目标历史区块、公开承诺信息确定环签名的过程中,当前出块节点可以获取目标公钥集合,并确定当前出块节点的私钥,从而基于目标历史区块、公开承诺信息、目标公钥集合以及私钥确定环签名,其中,目标公钥集合包括当前出块轮次中的所有出块节点的公钥。
73.可选的,如图4所示,在当前出块轮次中,记目标公钥集合为l=pk1,pk2,

,pkn,其中,n表示当前出块节点的总个数。具体地,出块节点先对目标历史区块进行哈希计算,公式如下所示:
74.h1=hash(lastblock)
75.其中,h1表示目标历史区块所对应的哈希值,hash()表示哈希算法,lastblock表示目标历史区块。
76.之后,可以对目标公钥集合和目标历史区块所对应的哈希值进行哈希计算,公式如下:
77.h=hash(l||h1)
78.其中,h表示第一结果,第一结果表征对目标公钥集合和目标历史区块所对应的哈希值的结合进行哈希计算得到的结果,l表示目标公钥集合,h1表示目标历史区块所对应的哈希值。
79.进一步地,可以确定当前出块节点的私钥,并基于承诺模块对第一结果以及当前出块节点的私钥进行计算,公式如下:
80.link=h
sk
81.其中,link表示承诺关联,h表示第一结果,sk表示当前出块节点的私钥。
82.跟进一步地,承诺模块可以调用签名模块采用环签名算法对前述的承诺关联、目标公钥集合以及公开承诺信息进行计算,公式如下:
83.acomm=ringsig(l,comm,link)
84.其中,acomm表示环签名,ringsig()表示环签名算法,l表示目标公钥集合,comm表示公开承诺信息,link表示承诺关联。
85.需要说明的是,通过对公开承诺信息进行环签名运算得到与公开承诺信息的环签名,使得在生成目标数据时,可以避免直接对公开承诺信息进行验证,而是通过验证环签名的方式验证出块节点的可靠性,从而可以隐藏出块节点的身份,从而提高共识机制的安全
性。
86.在一种可选的实施例中,末位出块节点用于基于目标公钥集合验证环签名,并基于验证成功的环签名所对应的公开承诺信息和质押权益信息生成目标数据。
87.可选的,如图3所示,区块链中的所有节点内还设置有验签模块和排序模块,其中,验签模块对应于签名模块具备的签名功能,其针对不同的签名提供相应的验签功能,可用于验证交易或承诺合法性,排序模块用于输出公开承诺信息排序列表。具体地,如图4所示,在当前出块轮次中,当轮到最后一个出块节点出块时,该出块节点可以收集其它出块节点基于收发模块广播的公开承诺信息和环签名,并基于验签模块对环签名进行验证,公式如下所示:
88.isverified=ringverify(l,acomm)
89.其中,isverified表示验证结果,ringverify()表示对应于环签名算法的验签算法,l表示目标公钥集合,acomm表示环签名。
90.进一步地,当末位出块节点确定环签名验证成功时,末位出块节点对与该环签名对应的公开承诺信息进行标记,并基于排序模块将所有与验证成功的环签名对应的公开承诺信息进行排序,反之,当末位出块节点确定环签名验证失败时,不对该环签名对应的出块节点进行排序或取消当前轮次出块。具体地,排序模块可以基于前述公开承诺信息所对应的质押权益以及其它信息确定各出块节点的顺序,其中,在其它信息相同的情况下,质押权益对应的质押额度越高的出块节点的出块顺序越靠前。更进一步地,在排序模块确定了各出块节点的出块顺序后,排序模块可以将各出块节点对应的出块序号、公开承诺信息以及质押权益记录在公开承诺信息排序列表(即目标数据)内,以实现对各出块节点的出块顺序的表征,并将公开承诺信息排序列表记录在末位出块节点生成的区块上,从而使得区块链中其它所有出块节点获知。
91.需要说明的是,通过基于目标公钥集合验证环签名,实现了对环签名的有效验证,从而便于从当前所有出块节点中筛选出可靠的出块节点,以使得仅有可靠的出块节点在下一出块轮次中进行出块。
92.在一种可选的实施例中,在基于目标数据确定当前出块节点在出块顺序中的目标位次,以在目标位次生成目标区块的过程中,当前出块节点可以获取目标数据中与待出块节点的出块序号对应的目标公开承诺信息,然后将公开承诺信息与目标公开承诺信息进行比对,从而在公开承诺信息与目标公开承诺信息相同的情况下,确定待出块节点的出块序号对应的位次为目标位次,确定待出块节点为当前出块节点。其中,目标数据中至少包括与当前至少一个出块节点中每个出块节点对应的目标公开承诺信息、目标质押权益信息以及出块序号。
93.可选的,如图5所示,在下一出块轮次中,当前出块节点可以从当前出块轮次生成的公开承诺信息排序列表中确定待出块节点的出块序号,并选择与待出块节点的出块序号对应的目标公开承诺信息comm
block
,然后将表征自身下一出块轮次的身份的公开承诺信息comm
prev
与前述目标公开承诺信息进行比对,当当前出块节点确定目标公开承诺信息comm
block
与公开承诺comm
prev
相同时,确定当前出块节点为即将出块的出块节点,反之,等待其他出块节点进行出块,并在下一个出块序号与下一个出块序号对应的目标公开承诺信息进行比对,从而实现对自身出块位次的确定,并在目标位次生成目标区块。
94.需要说明的是,通过将自身公开承诺信息与目标公开承诺信息进行比对来确定目标位次,避免了在出块前对出块节点身份信息的泄露,从而提高了共识机制以及区块链的安全性。
95.在一种可选的实施例中,在基于目标数据确定当前出块节点在出块顺序中的目标位次之后,当前出块节点可以基于目标区块、承诺凭证、当前出块节点的出块序号生成交易报文,然后将交易报文广播给其它出块节点,以使其它出块节点对交易报文进行验证,从而在所有验证结果表征当前出块节点的位次为目标位次的情况下,向其它出块节点广播投票报文。其中,其它出块节点为当前所有出块节点中除当前出块节点以外的节点。
96.可选的,如图3、图5所示,区块链中所有节点中还设置有交易组装模块以及交易验证模块,其中,交易组装模块用于在对外广播相关信息前,收集相应数据并按照特定数据结构组装发送报文,交易验证模块用于在区块链中的节点接受到其他交易信息时,对交易合法性提供验证手段。在本实施例中,验证手段可以是借助哈希算法进行比对,也可以是调用验签模块进行验证。具体地,在下一出块轮次中,当当前出块节点确定了轮到自身出块时,当前出块节点可以收集最近提交至区块链的交易打包成目标区块,并基于交易组装模块将目标区块、当前出块轮次确定的承诺凭证、以及自身在当前出块轮次生成的公开承诺信息排序列表中的出块序号组装成交易报文,然后基于收发模块将交易报文广播给下一出块轮次中的其它出块节点。
97.进一步地,如图4所示,当区块链中其它出块节点接收到当前出块节点所广播的交易报文,其它出块节点可以获取交易报文中的承诺凭证和出块序号,并从当前出块轮次生成的公开承诺信息排序列表(即目标数据)中获取与前述出块序号对应的待验证的公开承诺信息,从而调用交易验证模块基于如下公式进行验证:
98.isverified=hash(cp)==comm
99.其中,isverified表征验证结果,has()表征哈希算法,cp表征承诺凭证,comm表征公开承诺信息。具体地,验证结果用于表征当前出块节点的位次是否为目标位次,从而实现对该交易报文合法性的验证。需要说明的是,区块链中的普通节点没有权限可以验证关于目标区块的交易报文,仅可以接收该交易报文。
100.更进一步地,当所有验证结果表征当前出块节点的位次为目标位次的情况下,即其它出块节点中的所有出块节点都承认该交易报文的合法性的情况下,当前出块节点可以向其它出块节点广播投票报文。反之,当存在验证结果表征当前出块节点的位次不是目标位次的情况下,可以取消这一轮次的出块,并重新开始计算目标数据。
101.需要说明的是,由其它出块节点对当前出块节点生成的交易报文进行验证,避免了在后续上链过程中,存在不合法的区块上链的情况,从而保证了区块链数据的安全性与真实性。
102.在一种可选的实施例中,在向其它出块节点广播投票报文之前,当前出块节点可以对目标区块进行签名,得到目标签名,从而基于目标签名、目标区块、公开承诺信息生成投票报文。
103.可选的,在下一出块轮次中,在所有验证结果表征当前出块节点的位次为目标位次之后,当前出块节点可以基于签名模块使用环签名对目标区块进行签名,得到目标签名,当前出块节点也可以基于签名模块使用公钥密码学签名对目标区块进行签名,得到目标签
名。之后,当前出块节点可以基于交易组装模块将目标签名、目标区块、以及表征出块节点在本轮次的身份的公开承诺信息组装成投票报文,并广播给其它出块节点,以使其它出块节点对目标区块进行投票。
104.需要说明的是,通过基于目标签名生成投票报文,以便于其它出块节点对投票报文的合法性进行验证。
105.在一种可选的实施例中,其它出块节点包括第一出块节点和至少一个第二出块节点;第一出块节点用于对投票报文进行验证,并在投票报文所对应的验证结果表征当前出块节点的身份为目标身份的情况下,生成应答报文,并获取至少一个第二出块节点广播的应答报文,其中,应答报文至少包括生成该应答报文的出块节点对应的公开承诺信息,应答报文即可表征投票结果。
106.可选的,如图5所示,在下一出块轮次中,当其它出块节点中的第一出块节点和至少一个第二出块节点收到当前出块节点广播的投票报文时,第一出块节点和至少一个第二出块节点可以获取投票报文中的目标签名,并基于之前对环签名的验证方法对目标签名进行验证,故此处不再赘述。
107.进一步地,当第一出块节点和至少一个第二出块节点对目标签名验证成功后,第一出块节点和至少一个第二出块节点可以生成包括公开承诺信息的应答报文,其中,公开承诺信息为当前轮次生成的公开承诺信息。然后第一出块节点将其生成的应答报文发送给至少一个第二出块节点,并收集至少一个第二出块节点生成的应答报文。
108.需要说明的是,第一出块节点通过获取至少一个第二出块节点生成的应答报文,以用于后续实现对目标区块是否上链的准确判断。
109.在一种可选的实施例中,第一出块节点还用于基于目标历史数据确定每个应答报文对应的出块节点的目标历史质押权益信息,并基于目标历史质押权益信息确定是否对目标区块进行上链处理。
110.可选的,如图3、图5所示,在下一出块轮次中,第一出块节点可以获取应答报文中的公开承诺信息,并基于公开承诺信息从上一出块轮次生成的公开承诺信息排序列表中获取与公开承诺信息对应的质押权益信息,即确定每个应答报文对应的出块节点的目标历史质押权益信息。然后,第一出块节点可以对目标区块进行哈希计算,得到目标区块的哈希值,并将目标区块的哈希值以及目标历史质押权益信息送入统计模块,其中,统计模块可以统计所有出块节点的质押权益的总和,也可以在判断某个出块节点的合法性时,统计为该出块节点投票的所有出块节点的总和。在预设时间内,当统计模块判断关于目标区块的哈希值的目标历史质押权益信息中的质押额度超过当前所有出块节点在本出块轮次所质押权益信息中的质押额度的2/3,则可将该目标区块进行上链处理。
111.可选的,普通节点也可以获取投票报文,并可以基于统计模块依照前述的方法对目标区块的投票情况进行统计,从而确定是否将目标区块进行上链处理。
112.需要说明的是,本技术在共识机制下,尤其是pos共识机制下,利用环签名构造匿名的公开承诺信息,每个出块节点在不泄露各自承诺凭证的前提下得到关于所有可出块节点的公开承诺信息排序列表,从而可以根据当前出块轮次和公开承诺信息排序列表确定出块节点。一方面,保证了每个出块轮次在出块过程中,在同一时间只存在唯一的出块节点,另一方面,匿名的公开承诺信息能在出块节点出块前隐匿出块节点的身份,进而保证整个
区块链的活性。从而解决了区块链共识机制容易分叉的问题,并提高其应对自适应腐化的安全性。
113.由此可见,本技术所提供的方案达到了基于环签名、公开承诺信息和质押权益信息确定当前至少一个出块节点在下一出块轮次中的出块顺序的目的,从而实现了提高公式机制安全性的技术效果,进而解决了现有技术中由于区块链出块节点易被识别造成的共识机制安全性低技术问题。
114.实施例2
115.根据本发明实施例,提供了一种生成区块链中区块的方法的实施例,其中,图6是根据本发明实施例的一种可选的生成区块链中区块的装置的示意图,如图6所示,该装置包括:
116.获取模块601,用于获取目标历史区块,其中,目标历史区块为区块链中记录有目标历史数据的区块,目标历史数据表征当前出块轮次中的每个出块节点所对应的出块顺序,出块轮次表征所有出块节点完成一次出块的轮次;
117.确定模块602,用于基于目标历史区块确定公开承诺信息以及与公开承诺信息对应的环签名,其中,公开承诺信息用于表征当前出块节点在下一出块轮次中的身份;
118.处理模块603,用于广播公开承诺信息、环签名、质押权益信息至当前出块轮次中的末位出块节点,以使末位出块节点基于公开承诺信息、环签名、质押权益信息生成目标数据,其中,质押权益信息表征当前出块节点在下一出块轮次中的重要程度,目标数据表征当前至少一个出块节点在下一出块轮次中的出块顺序;
119.生成模块604,用于基于目标数据确定当前出块节点在出块顺序中的目标位次,以在目标位次生成目标区块。
120.需要说明的是,上述获取模块601、确定模块602、处理模块603、以及生成模块604对应于上述实施例中的步骤s101至步骤s104,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
121.可选的,确定模块还包括:第一签名模块,用于基于预设公钥对目标历史区块进行签名,得到承诺凭证;计算模块,用于对承诺凭证进行哈希计算,得到公开承诺信息;第一子确定模块,用于基于目标历史区块、公开承诺信息确定环签名。
122.可选的,第一子确定模块还包括:第一子获取模块,用于获取目标公钥集合,目标公钥集合包括当前出块轮次中的所有出块节点的公钥;第二子确定模块,用于确定当前出块节点的私钥;第三子确定模块,用于基于目标历史区块、公开承诺信息、目标公钥集合以及私钥确定环签名。
123.可选的,末位出块节点用于基于目标公钥集合验证环签名,并基于验证成功的环签名所对应的公开承诺信息和质押权益信息生成目标数据。
124.可选的,目标数据中至少包括与当前至少一个出块节点中每个出块节点对应的目标公开承诺信息、目标质押权益信息以及出块序号,其中,生成模块包括:第二子获取模块,用于获取目标数据中与待出块节点的出块序号对应的目标公开承诺信息;比对模块,用于将公开承诺信息与目标公开承诺信息进行比对;第四子确定模块,用于在公开承诺信息与目标公开承诺信息相同的情况下,确定待出块节点的出块序号对应的位次为目标位次,确定待出块节点为当前出块节点。
125.可选的,生成区块链中区块的方法还包括:第一子生成模块,用于基于目标区块、承诺凭证、当前出块节点的出块序号生成交易报文;第一子处理模块,用于将交易报文广播给其它出块节点,以使其它出块节点对交易报文进行验证,其中,其它出块节点为当前所有出块节点中除当前出块节点以外的节点;第二子处理模块,用于在所有验证结果表征当前出块节点的位次为目标位次的情况下,向其它出块节点广播投票报文。
126.可选的,生成区块链中区块的方法还包括:第二签名模块,用于对目标区块进行签名,得到目标签名;第二子生成模块,用于基于目标签名、目标区块、公开承诺信息生成投票报文。
127.可选的,其它出块节点包括第一出块节点和至少一个第二出块节点;第一出块节点用于对投票报文进行验证,并在投票报文所对应的验证结果表征当前出块节点的身份为目标身份的情况下,生成应答报文,并获取至少一个第二出块节点广播的应答报文,其中,应答报文至少包括生成该应答报文的出块节点对应的公开承诺信息。
128.可选的,第一出块节点还用于基于目标历史数据确定每个应答报文对应的出块节点的目标历史质押权益信息,并基于目标历史质押权益信息确定是否对目标区块进行上链处理。
129.可选的,生成区块链中区块的装置还包括:第五子确定模块,用于确定质押权益信息中的质押额度;第一更新模块,用于在质押额度大于或等于预设数值的情况下,更新节点的类型为出块节点;第二更新模块,用于在质押额度小于预设数值的情况下,更新节点的类型为普通节点,其中,普通节点为无法生成区块的节点。
130.实施例3
131.根据本发明实施例的另一方面,还提供了计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的生成区块链中区块的方法。
132.实施例4
133.根据本发明实施例的另一方面,还提供了一种电子设备,其中,图7是根据本发明实施例的一种可选的电子设备的示意图,如图7所示,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的生成区块链中区块的方法。
134.实施例5
135.根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述的生成区块链中区块的方法。
136.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
137.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
138.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间
的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
139.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
140.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
141.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
142.以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1