平行链共识方法、设备和存储介质转让专利

申请号 : CN202010631494.9

文献号 : CN111798238A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马登极王志文吴思进

申请人 : 杭州复杂美科技有限公司

摘要 :

本发明提供一种平行链共识方法、设备和存储介质,该方法包括:向其它平行链节点广播所生成的第一区块高度的平行链区块的第一签名数据,并接收其它平行链节点分别生成并广播的第一区块高度的平行链区块的各第二签名数据;响应于确定第一区块高度的各共识签名数据由当前节点聚合,根据第一共识内容和各第二共识内容进行平行链自共识,在自共识成功时根据自共识成功的各共识内容对应的签名数据聚合生成第一聚合签名数据,根据第一聚合签名数据和自共识成功的各共识内容对应的平行链节点的标识信息生成第一聚合共识交易;以及,将第一聚合共识交易发送至对应的主链节点。本申请降低主链节点消耗的存储空间,并减少发送共识交易的手续费。

权利要求 :

1.一种平行链共识方法,其特征在于,主链上、当前平行链上记录有当前平行链的各平行链节点的聚合签名公钥,平行链节点间可相互通信,所述方法适用于平行链节点,所述方法包括:向其它平行链节点广播所生成的第一区块高度的平行链区块的第一签名数据,并接收其它平行链节点分别生成并广播的所述第一区块高度的平行链区块的各第二签名数据;其中,所述第一签名数据由当前节点根据预配置的聚合签名算法对第一共识内容进行签名所生成,所述第一共识内容由当前节点执行所述第一区块高度的平行链区块得到,所述第二签名数据由其它平行链节点根据预配置的聚合签名算法对相应的第二共识内容进行签名所生成,所述第二共识内容由其它平行链节点执行所述第一区块高度的平行链区块得到;

响应于根据预配置的规则确定所述第一区块高度的各共识签名数据由当前节点聚合,根据所述第一共识内容和各所述第二共识内容进行平行链自共识,若所述自共识成功,则根据自共识成功的各共识内容对应的签名数据聚合生成第一聚合签名数据,根据所述第一聚合签名数据和自共识成功的各共识内容对应的平行链节点的标识信息生成第一聚合共识交易;以及,将所述第一聚合共识交易发送至对应的主链节点,以供主链节点:根据各所述标识信息获取对应的平行链节点的聚合签名公钥;

根据各所述聚合签名公钥生成第一聚合公钥信息,结合所述第一聚合共识交易中的共识内容,根据双线性映射加密算法判断所述第一聚合签名数据和所述第一聚合公钥信息是否相匹配:否,则所述第一聚合共识交易执行失败。

2.根据权利要求1所述的方法,其特征在于,还包括:

向其它平行链节点广播所述第一聚合共识交易,以供其它平行链节点:根据各所述标识信息获取对应的平行链节点的聚合签名公钥;

根据各所述聚合签名公钥生成第一聚合公钥信息,结合所述第一聚合共识交易中的共识内容,根据双线性映射加密算法判断所述第一聚合签名数据和所述第一聚合公钥信息是否相匹配:是,则判断所述第一聚合共识交易中的共识内容与所生成的第二共识内容是否相同:否,则暂停运行并生成报错信息。

3.根据权利要求1所述的方法,其特征在于,主链上记录的执行成功的所述第一聚合共识交易还用于供其它平行链节点:根据各所述标识信息获取对应的平行链节点的聚合签名公钥;

根据各所述聚合签名公钥生成第一聚合公钥信息,结合所述第一聚合共识交易中的共识内容,根据双线性映射加密算法判断所述第一聚合签名数据和所述第一聚合公钥信息是否相匹配:是,则判断所述第一聚合共识交易中的共识内容与所生成的第二共识内容是否相同:否,则暂停运行并生成报错信息。

4.根据权利要求1-3任一项所述的方法,其特征在于,所述聚合签名算法为bls聚合签名算法。

5.一种设备,其特征在于,所述设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-4中任一项所述的方法。

6.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的方法。

说明书 :

平行链共识方法、设备和存储介质

技术领域

[0001] 本申请涉及区块链技术领域,具体涉及一种平行链共识方法、设备和存储介质。

背景技术

[0002] 当前平行链的共识机制是各平行链的共识节点发送共识交易到主链参与共识,对应于同一个第一平行链的第一平行链区块,主链上都会有多条相同高度的共识交易;上述机制将造成主链区块大量存储冗余的平行链共识交易,消耗主链区块的存储空间;且多笔共识交易将产生多笔手续费。

发明内容

[0003] 鉴于现有技术中的上述缺陷或不足,期望提供一种降低消耗的主链区块存储空间,及,减少手续费的平行链共识方法、设备和存储介质。
[0004] 第一方面,本发明提供一种适用于平行链节点的平行链共识方法,主链上、当前平行链上记录有当前平行链的各平行链节点的聚合签名公钥,平行链节点间可相互通信,上述方法包括:
[0005] 向其它平行链节点广播所生成的第一区块高度的平行链区块的第一签名数据,并接收其它平行链节点分别生成并广播的第一区块高度的平行链区块的各第二签名数据;其中,第一签名数据由当前节点根据预配置的聚合签名算法对第一共识内容进行签名所生成,第一共识内容由当前节点执行第一区块高度的平行链区块得到,第二签名数据由其它平行链节点根据预配置的聚合签名算法对相应的第二共识内容进行签名所生成,第二共识内容由其它平行链节点执行第一区块高度的平行链区块得到;
[0006] 响应于根据预配置的规则确定第一区块高度的各共识签名数据由当前节点聚合,根据第一共识内容和各第二共识内容进行平行链自共识,若自共识成功,则根据自共识成功的各共识内容对应的签名数据聚合生成第一聚合签名数据,根据第一聚合签名数据和自共识成功的各共识内容对应的平行链节点的标识信息生成第一聚合共识交易;以及,[0007] 将第一聚合共识交易发送至对应的主链节点,以供主链节点:
[0008] 根据各标识信息获取对应的平行链节点的聚合签名公钥;
[0009] 根据各聚合签名公钥生成第一聚合公钥信息,结合第一聚合共识交易中的共识内容,根据双线性映射加密算法判断第一聚合签名数据和第一聚合公钥信息是否相匹配:
[0010] 否,则第一聚合共识交易执行失败。
[0011] 第二方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的平行链共识方法。
[0012] 第三方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的平行链共识方法。
[0013] 本发明诸多实施例提供的平行链共识方法、设备和存储介质通过向其它平行链节点广播所生成的第一区块高度的平行链区块的第一签名数据,并接收其它平行链节点分别生成并广播的第一区块高度的平行链区块的各第二签名数据;响应于确定第一区块高度的各共识签名数据由当前节点聚合,根据第一共识内容和各第二共识内容进行平行链自共识,在自共识成功时根据自共识成功的各共识内容对应的签名数据聚合生成第一聚合签名数据,根据第一聚合签名数据和自共识成功的各共识内容对应的平行链节点的标识信息生成第一聚合共识交易;以及,将第一聚合共识交易发送至对应的主链节点的方法,降低主链区块消耗的存储空间,并减少发送共识交易的手续费。

附图说明

[0014] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0015] 图1为本发明一实施例提供的一种平行链共识方法的流程图。
[0016] 图2为本发明一实施例提供的一种设备的结构示意图。

具体实施方式

[0017] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
[0018] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0019] 当前平行链的共识机制是各平行链的共识节点发送共识交易到主链参与共识,对应于同一个第一平行链的第一平行链区块,主链上都会有多条相同高度的共识交易;例如,平行链节点为a、b、c、d,a~d都需要对生成的第一平行链区块生成共识交易tx_a、tx_b、tx_c、tx_d;上述机制将造成主链节点大量存储冗余的平行链共识交易,消耗主链的存储空间;且多笔共识交易将产生多笔手续费。
[0020] 图1为本发明一实施例提供的一种平行链共识方法的流程图。如图1所示,在本实施例中,本发明提供一种适用于平行链节点的平行链共识方法,主链上、当前平行链上记录有当前平行链的各平行链节点的聚合签名公钥,平行链节点间可相互通信,上述方法包括:
[0021] S12:向其它平行链节点广播所生成的第一区块高度的平行链区块的第一签名数据,并接收其它平行链节点分别生成并广播的第一区块高度的平行链区块的各第二签名数据;其中,第一签名数据由当前节点根据预配置的聚合签名算法对第一共识内容进行签名所生成,第一共识内容由当前节点执行第一区块高度的平行链区块得到,第二签名数据由其它平行链节点根据预配置的聚合签名算法对相应的第二共识内容进行签名所生成,第二共识内容由其它平行链节点执行第一区块高度的平行链区块得到;
[0022] S14:响应于根据预配置的规则确定第一区块高度的各共识签名数据由当前节点聚合,根据第一共识内容和各第二共识内容进行平行链自共识,若自共识成功,则根据自共识成功的各共识内容对应的签名数据聚合生成第一聚合签名数据,根据第一聚合签名数据和自共识成功的各共识内容对应的平行链节点的标识信息生成第一聚合共识交易;以及,[0023] S16:将第一聚合共识交易发送至对应的主链节点,以供主链节点:
[0024] 根据各标识信息获取对应的平行链节点的聚合签名公钥;
[0025] 根据各聚合签名公钥生成第一聚合公钥信息,结合第一聚合共识交易中的共识内容,根据双线性映射加密算法判断第一聚合签名数据和第一聚合公钥信息是否相匹配:
[0026] 否,则第一聚合共识交易执行失败。
[0027] 具体地,假设当前平行链为chain1,chain1上有四个平行链节点a、b、c、d;a对应的主链节点为A;预配置的规则为:a负责生成每一个区块高度的共识签名数据的聚合;预配置的聚合签名算法为bls签名算法;平行链节点的标识信息为根据a、b、c、d顺序设置的各节点的bitmap;
[0028] 主链上,chain1上记录有a、b、c、d的聚合签名公钥pub(bls_a)、pub(bls_b)、pub(bls_c)、pub(bls_d);a、b、c、d可相互通信;
[0029] 以当前节点为a,第一区块高度为100,第一区块高度的平行链区块对应的主链区块为block(200)_主,block(200)_主中的chain1的平行链交易为tx1、tx2为例:
[0030] a执行步骤S12,从主链同步block(200)_主,并获取chain1的各平行链交易tx1、tx2,根据tx1、tx2生成block(100)_a,a执行block(100)_a以获得共识内容msg(100)_a;a根据bls聚合签名算法对msg(100)_a进行签名获得签名数据(msg(100)_a)bls_a;a将(msg(100)_a)bls_a广播给b、c、d;同理,b根据tx1、tx2生成block(100)_b,b执行block(100)_b获得共识内容msg(100)_b,b根据bls聚合签名算法对msg(100)_b进行签名获得签名数据(msg(100)_b)bls_b,b将(msg(100)_b)bls_b广播给a、c、d;c、d的原理相同,此处不再赘述;在a、b、c、d都运行良好的情况下,a收到(msg(100)_b)bls_b、(msg(100)_c)bls_c、(msg(100)_d)bls_d;
[0031] 由于a负责生成每一个区块高度的共识签名数据的聚合,a执行步骤S14,根据msg(100)_a、msg(100)_b、msg(100)_c、msg(100)_d进行平行链自共识,假设msg(100)_a、msg(100)_c、msg(100)_d相同,msg(100)_a与msg(100)_b不同,则自共识成功,根据(msg(100)_a)bls_a、(msg(100)_c)bls_c、(msg(100)_d)bls_d聚合生成聚合签名数据(msg(100))bls_acd;a根据(msg(100))bls_acd和bitmap(1,0,1,1)(1表示对应节点的共识内容为平行链自共识成功的共识内容)生成聚合共识交易tx100((msg(100))bls_acd,bitmap(1,0,1,1))secp_a);以及,
[0032] a执行步骤S16,将tx100发送至对应的主链节点A;A向其它主链节点广播tx100;
[0033] 各主链节点根据bitmap(1,0,1,1)获取对应的平行链节点的聚合签名公钥pub(bls_a)、pub(bls_c)、pub(bls_d);
[0034] 各主链节点根据pub(bls_a)、pub(bls_c)、pub(bls_d)生成聚合公钥信息pub(bls_acd);结合tx100中的共识内容msg(100),根据双线性映射加密算法判断(msg(100))bls_acd和pub(bls_acd)是否相匹配(即E((msg(100))bls_acd,G)=E(msg(100),pub(bls_acd))?):
[0035] 否,则tx100执行失败。
[0036] 上述实施例以当前平行链为chain1,chain1上有四个平行链节点a、b、c、d;a对应的主链节点为A;a负责生成每一个区块高度的共识签名数据的聚合;预配置的聚合签名算法为bls签名算法;平行链节点的标识信息为根据a、b、c、d顺序设置的各节点的bitmap为例对本申请的平行链共识原理进行了详细阐述;
[0037] 在更多实施例中,预配置的规则还可以根据实际需求进行配置,例如配置为:a负责区块高度为n+1的各共识签名数据的聚合,b负责区块高度为n+2的各共识签名数据的聚合,c负责区块高度为n+3的各共识签名数据的聚合,d负责区块高度为n的各共识签名数据的聚合,n为正整数;可实现相同的技术效果。
[0038] 由于a、b、c、d可以根据预配置的规则判断各区块高度的负责聚合签名数据的节点,在更多实施例中,a还可以不向b、c、d广播第一共识内容,仅接收b、c、d广播的第二共识内容,可实现相同的技术效果。
[0039] 在更多实施例中,平行链节点的标识信息还可以根据实际需求进行配置,例如配置为自共识成功的各共识内容对应的平行链节点的地址,则tx100为((msg(100))bls_acd,[addr(a),(addr(c),(addr(d)])secp_a),只要主链节点可以通过该标识信息找到需要聚合的平行链节点的聚合签名公钥,可实现相同的技术效果。
[0040] 优选地,上述方法还包括:
[0041] 向其它平行链节点广播第一聚合共识交易,以供其它平行链节点:
[0042] 根据各标识信息获取对应的平行链节点的聚合签名公钥;
[0043] 根据各聚合签名公钥生成第一聚合签名信息,判断第一聚合签名信息和第一聚合共识交易中的共识内容是否和第一聚合签名数据相匹配:
[0044] 是,则判断第一聚合共识交易中的共识内容与所生成的第二共识内容是否相同:
[0045] 否,则暂停运行并生成报错信息。
[0046] 具体地,a向b、c、d广播tx100;
[0047] 以当前节点为b为例:
[0048] b根据bitmap(1,0,1,1)获取对应的平行链节点的聚合签名公钥pub(bls_a)、pub(bls_c)、pub(bls_d);
[0049] b根据pub(bls_a)、pub(bls_c)、pub(bls_d)生成聚合签名信息pub(bls_acd);结合tx100中的共识内容msg(100),根据双线性映射加密算法判断(msg(100))bls_acd和pub(bls_acd)是否相匹配(即E((msg(100))bls_acd,G)=E(msg(100),pub(bls_acd))?):
[0050] 相匹配,则判断msg(100)与msg(100)_b是否相同。
[0051] msg(100)与msg(100)_b不同,则b暂停运行并生成报错信息。
[0052] c、d的原理与b相同,此处不再赘述。
[0053] 上述实施例使得b发现当前节点与其它节点的状态不同,通过暂停运行并生成报错信息的方式尽快获得恢复,以使得当前节点尽快与其它节点的状态相同。
[0054] 优选地,主链上记录的执行成功的第一聚合共识交易还用于供其它平行链节点:
[0055] 根据各标识信息获取对应的平行链节点的聚合签名公钥;
[0056] 根据各聚合签名公钥生成第一聚合公钥信息,结合第一聚合共识交易中的共识内容,根据双线性映射加密算法判断第一聚合签名数据和第一聚合公钥信息是否相匹配:
[0057] 是,则判断第一聚合共识交易中的共识内容与所生成的第二共识内容是否相同:
[0058] 否,则暂停运行并生成报错信息。
[0059] 上述实施例与图1所示的实施例的一优选实施例的不同之处在于,a不会向b、c、d广播tx100,b、c、d需要去主链同步tx100。
[0060] 优选地,聚合签名算法为bls聚合签名算法。
[0061] 上述实施例的平行链共识原理可参考图1所示的方法,此处不再赘述。
[0062] 本发明还提供一种适用于平行链节点的平行链共识方法,主链上、当前平行链上记录有当前平行链的各平行链节点的聚合签名公钥,平行链节点间可相互通信,上述方法包括:
[0063] 生成的第一区块高度的平行链区块的第一签名数据,根据第一签名数据生成第一共识交易,并向其它平行链节点广播第一共识交易;其中,第一签名数据由当前节点根据预配置的聚合签名算法对第一共识内容进行签名所生成,第一共识内容由当前节点执行第一区块高度的平行链区块得到;
[0064] 接收其它平行链节点分别生成并广播的第一区块高度的平行链区块的各第二共识交易;其中,第二共识交易根据第二签名数据生成,第二签名数据根据其它平行链节点根据预配置的聚合签名算法对第二共识内容进行签名所生成,第二共识内容由其它平行链节点执行第一区块高度的平行链区块得到;
[0065] 响应于根据预配置的规则确定第一区块高度的各共识签名数据由当前节点聚合,根据第一共识内容和各第二共识内容进行平行链自共识,若自共识成功,则根据自共识成功的各共识内容对应的签名数据聚合生成第一聚合签名数据,根据第一聚合签名数据和自共识成功的各共识内容对应的平行链节点的标识信息生成第一聚合共识交易;以及,[0066] 将第一聚合共识交易发送至对应的主链节点,以供主链节点:
[0067] 根据各标识信息获取对应的平行链节点的聚合签名公钥;
[0068] 根据各聚合签名公钥生成第一聚合公钥信息,结合第一聚合共识交易中的共识内容,根据双线性映射加密算法判断第一聚合签名数据和第一聚合公钥信息是否相匹配:
[0069] 否,则第一聚合共识交易执行失败。
[0070] 图2为本发明一实施例提供的一种设备的结构示意图。
[0071] 如图2所示,作为另一方面,本申请还提供了一种设备200,包括一个或多个中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM203中,还存储有设备200操作所需的各种程序和数据。CPU201、ROM202以及RAM203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
[0072] 以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
[0073] 特别地,根据本公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。
[0074] 作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请提供的方法。
[0075] 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
[0076] 描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
[0077] 以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。