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

申请号 : CN202010028968.0

文献号 : CN111275437A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

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

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

摘要 :

本发明提供一种平行链共识方法、设备和存储介质,该方法包括:从主链区块同步本平行链的各平行链交易以生成第一平行链区块;判断第一平行链区块中是否存在跨链交易:是,则判断第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:否,则根据第一平行链区块生成第一共识数据,并分别对共识高度后和第一区块高度前的各平行链区块生成对应的第二共识数据;以及,按照区块高度从小到大的顺序根据第一共识数据和各第二共识数据生成第二共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第二共识交易进行平行链共识;以及,从主链同步各第二共识交易以进行平行链自共识。本申请节省平行链共识机制所产生的手续费。

权利要求 :

1.一种平行链共识方法,其特征在于,适用于平行链的授权节点,所述方法包括:从主链区块同步本平行链的各平行链交易以生成第一平行链区块;

判断所述第一平行链区块中是否存在跨链交易:

是,则判断所述第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:是,则根据所述第一平行链区块生成第一共识交易并发送至主链节点;

否,则根据所述第一平行链区块生成第一共识数据,并分别对所述共识高度后和所述第一区块高度前的各平行链区块生成对应的第二共识数据;以及,按照区块高度从小到大的顺序根据所述第一共识数据和各所述第二共识数据生成第二共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第二共识交易进行平行链共识;以及,从主链同步各所述第二共识交易以进行平行链自共识;

其中,根据各所述第二共识交易进行平行链共识或平行链自共识包括:分别对各所述第二共识交易执行:解析所述第二共识交易以获取对应的各第二共识数据和第一共识数据,依次执行对应的各第二共识数据和第一共识数据,并在执行完成时缓存对应的执行结果;

判断当前平行链的共识高度加一的共识数据是否达成共识:

否,则将所述共识高度回滚为未执行所述第二共识交易前的共识高度;

是,则将当前平行链的共识高度加一以更新所述共识高度,并判断是否存在待共识的共识数据:是,则返回所述判断当前平行链的共识高度加一的共识数据是否达成共识。

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

在所述第一平行链区块中不存在跨链交易时,判断所述共识高度后各平行链区块对应的共识数据的数据量总和是否不小于预配置的第一数值:是,则按照区块高度从小到大的顺序根据所述共识高度后和所述第一区块高度前的各平行链区块对应的共识数据生成第三共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第三共识交易进行平行链共识;

从主链同步各所述第三共识交易以进行平行链自共识;

其中,根据各所述第三共识交易进行平行链共识或平行链自共识包括:分别对各所述第三共识交易执行:解析所述第三共识交易以获取对应的各共识数据,依次执行对应的各共识数据,并在执行完成时缓存对应的执行结果;

判断当前平行链的共识高度加一的共识数据是否达成共识:

否,则将所述共识高度回滚为未执行所述第三共识交易前的共识高度;

是,则将当前平行链的共识高度加一以更新所述共识高度,并判断是否存在待共识的共识数据:是,则返回所述判断当前平行链的共识高度加一的共识数据是否达成共识。

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

在所述数据量总和小于所述第一数值时,判断所述第一区块高度与当前平行链的共识高度的差值是否达到预配置的第二数值:是,则分别对所述共识高度后和所述第一区块高度前的各平行链区块生成对应的共识数据;以及,按照区块高度从小到大的顺序根据所述共识高度后和所述第一区块高度前的各平行链区块对应的共识数据生成第三共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第三共识交易进行平行链共识。

4.一种平行链共识方法,其特征在于,适用于主链节点,所述方法包括:接收第一平行链的各授权节点分别生成的第一共识交易或第二共识交易;其中,所述第一共识交易由各所述授权节点从主链区块同步所述第一平行链的各平行链交易以生成第一平行链区块,判断所述第一平行链区块中是否存在跨链交易:是,则判断所述第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:是,则根据所述第一平行链区块所生成并发送至主链节点;所述第二共识交易由各所述授权节点判断所述第一平行链区块的第一区块高度不为当前平行链的共识高度加一时,根据所述第一平行链区块生成第一共识数据,并分别对所述共识高度后和所述第一区块高度前的各平行链区块生成对应的第二共识数据;以及,按照区块高度从小到大的顺序根据所述第一共识数据和各所述第二共识数据所生成并发送至主链节点;

根据各所述第一共识交易或各所述第二共识交易进行平行链共识,以供所述第一平行链的各平行链节点从主链同步各所述第一共识交易或各所述第二共识交易以进行平行链自共识;

其中,根据各所述第二共识交易进行平行链共识或平行链自共识包括:分别对各所述第二共识交易执行:解析所述第二共识交易以获取对应的各第二共识数据和第一共识数据,依次执行对应的各第二共识数据和第一共识数据,并在执行完成时缓存对应的执行结果;

判断当前平行链的共识高度加一的共识数据是否达成共识:

否,则将所述共识高度回滚为未执行所述第二共识交易前的共识高度;

是,则将当前平行链的共识高度加一以更新所述共识高度,并判断是否存在待共识的共识数据:是,则返回所述判断当前平行链的共识高度加一的共识数据是否达成共识。

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

在所述第一平行链区块中不存在跨链交易时,接收第一平行链的各授权节点分别生成的第三共识交易;其中,所述第三共识交易由各所述授权节点:判断所述共识高度后各平行链区块对应的数据量总和是否不小于预配置的第一数值:是,则按照区块高度从小到大的顺序根据所述共识高度后和所述第一区块高度前的各平行链区块对应的共识数据所生成;

根据各所述第三共识交易进行平行链共识,以供所述第一平行链的各平行链节点从主链同步各所述第三共识交易进行平行链自共识;

其中,根据各所述第三共识交易进行平行链共识或平行链自共识包括:分别对各所述第三共识交易执行:解析所述第三共识交易以获取对应的各共识数据,依次执行对应的各共识数据,并在执行完成时缓存对应的执行结果;

判断当前平行链的共识高度加一的共识数据是否达成共识:

否,则将所述共识高度回滚为未执行所述第三共识交易前的共识高度;

是,则将当前平行链的共识高度加一以更新所述共识高度,并判断是否存在待共识的共识数据:是,则返回所述判断当前平行链的共识高度加一的共识数据是否达成共识。

6.根据权利要求5所述的方法,其特征在于,所述第三共识交易由各所述授权节点在所述数据量总和小于所述第一数值时,判断所述第一区块高度与当前平行链的共识高度的差值是否达到预配置的第二数值:是,则分别对所述共识高度后和所述第一区块高度前的各平行链区块生成对应的共识数据;以及,按照区块高度从小到大的顺序根据所述共识高度后和所述第一区块高度前的各平行链区块对应的共识数据所生成并发送至主链节点。

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

一个或多个处理器;

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

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

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

说明书 :

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

技术领域

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

背景技术

[0002] 当前的主链-平行链机制中,交易手续费分段式收取,例如,0~1000字节的交易的手续费为0.1,1000~2000字节的交易的手续费为0.2,依次类推;而一笔共识交易大约为100字节,每生成一个平行链区块就生成对应的共识交易并发送至主链节点的机制将花费较多的手续费。

发明内容

[0003] 鉴于现有技术中的上述缺陷或不足,期望提供一种节省手续费的平行链共识方法、设备和存储介质。
[0004] 第一方面,本发明提供一种适用于平行链的授权节点的平行链共识方法,上述方法包括:
[0005] 从主链区块同步本平行链的各平行链交易以生成第一平行链区块;
[0006] 判断第一平行链区块中是否存在跨链交易:
[0007] 是,则判断第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:
[0008] 是,则根据第一平行链区块生成第一共识交易并发送至主链节点;
[0009] 否,则根据第一平行链区块生成第一共识数据,并分别对共识高度后和第一区块高度前的各平行链区块生成对应的第二共识数据;以及,
[0010] 按照区块高度从小到大的顺序根据第一共识数据和各第二共识数据生成第二共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第二共识交易进行平行链共识;以及,
[0011] 从主链同步各第二共识交易以进行平行链自共识;
[0012] 其中,根据各第二共识交易进行平行链共识或平行链自共识包括:
[0013] 分别对各第二共识交易执行:解析第二共识交易以获取对应的各第二共识数据和第一共识数据,依次执行对应的各第二共识数据和第一共识数据,并在执行完成时缓存对应的执行结果;
[0014] 判断当前平行链的共识高度加一的共识数据是否达成共识:
[0015] 否,则将共识高度回滚为未执行第二共识交易前的共识高度;
[0016] 是,则将当前平行链的共识高度加一以更新共识高度,并判断是否存在待共识的共识数据:是,则返回判断当前平行链的共识高度加一的共识数据是否达成共识。
[0017] 第二方面,本发明提供一种适用于主链节点的平行链共识方法,上述方法包括:
[0018] 接收第一平行链的各授权节点分别生成的第一共识交易或第二共识交易;其中,第一共识交易由各授权节点从主链区块同步第一平行链的各平行链交易以生成第一平行链区块,判断第一平行链区块中是否存在跨链交易:是,则判断第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:是,则根据第一平行链区块所生成并发送至主链节点;第二共识交易由各授权节点判断第一平行链区块的第一区块高度不为当前平行链的共识高度加一时,根据第一平行链区块生成第一共识数据,并分别对共识高度后和第一区块高度前的各平行链区块生成对应的第二共识数据;以及,按照区块高度从小到大的顺序根据第一共识数据和各第二共识数据所生成并发送至主链节点;
[0019] 根据各第一共识交易或各第二共识交易进行平行链共识,以供第一平行链的各平行链节点从主链同步各第一共识交易或各第二共识交易以进行平行链自共识;
[0020] 其中,根据各第二共识交易进行平行链共识或平行链自共识包括:
[0021] 分别对各第二共识交易执行:解析第二共识交易以获取对应的各第二共识数据和第一共识数据,依次执行对应的各第二共识数据和第一共识数据,并在执行完成时缓存对应的执行结果;
[0022] 判断当前平行链的共识高度加一的共识数据是否达成共识:
[0023] 否,则将共识高度回滚为未执行第二共识交易前的共识高度;
[0024] 是,则将当前平行链的共识高度加一以更新共识高度,并判断是否存在待共识的共识数据:是,则返回判断当前平行链的共识高度加一的共识数据是否达成共识。
[0025] 第三方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的平行链共识方法。
[0026] 第四方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的平行链共识方法。
[0027] 本发明诸多实施例提供的平行链共识方法、设备和存储介质通过从主链区块同步本平行链的各平行链交易以生成第一平行链区块;判断第一平行链区块中是否存在跨链交易:是,则判断第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:是,则根据第一平行链区块生成第一共识交易并发送至主链节点;否,则根据第一平行链区块生成第一共识数据,并分别对共识高度后和第一区块高度前的各平行链区块生成对应的第二共识数据;以及,按照区块高度从小到大的顺序根据第一共识数据和各第二共识数据生成第二共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第二共识交易进行平行链共识;从主链同步各第二共识交易以进行平行链自共识的方法,节省平行链共识机制所产生的手续费,提高用户体验。
[0028] 本发明一些实施例提供的平行链共识方法、设备和存储介质进一步通过在第一平行链区块中不存在跨链交易时,判断共识高度后各平行链区块对应的共识数据的数据量总和是否不小于预配置的第一数值:是,则按照区块高度从小到大的顺序根据共识高度后和第一区块高度前的各平行链区块对应的共识数据生成第三共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第三共识交易进行平行链共识;从主链同步各第三共识交易以进行平行链自共识的方法,在节省平行链共识机制所产生的手续费的同时,保证了平行链共识机制的效率。
[0029] 本发明一些实施例提供的平行链共识方法、设备和存储介质进一步通过在数据量总和小于第一数值时,判断第一区块高度与当前平行链的共识高度的差值是否达到预配置的第二数值:是,则分别对共识高度后和第一区块高度前的各平行链区块生成对应的共识数据;以及,按照区块高度从小到大的顺序根据共识高度后和第一区块高度前的各平行链区块对应的共识数据生成第三共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第三共识交易进行平行链共识的方法,在节省平行链共识机制所产生的手续费的同时,保证了平行链共识机制的效率。

附图说明

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

具体实施方式

[0036] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
[0037] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0038] 需要说明的是,区块链的所有交易中包括有效载荷payload,通过有效载荷中的各参数信息执行区块链的交易,本申请的共识数据为共识交易的有效载荷中的各参数信息。
[0039] 图1为本发明一实施例提供的一种平行链共识方法的流程图。如图1所示,在本实施例中,本发明提供一种适用于平行链的授权节点的平行链共识方法,上述方法包括:
[0040] S1200:从主链区块同步本平行链的各平行链交易以生成第一平行链区块;
[0041] S1201:判断第一平行链区块中是否存在跨链交易:
[0042] 是,则执行步骤S1202:判断第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:
[0043] 是,则执行步骤S1203:根据第一平行链区块生成第一共识交易并发送至主链节点;
[0044] 否,则执行步骤S12041:根据第一平行链区块生成第一共识数据,并分别对共识高度后和第一区块高度前的各平行链区块生成对应的第二共识数据;以及,
[0045] S12042:按照区块高度从小到大的顺序根据第一共识数据和各第二共识数据生成第二共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第二共识交易进行平行链共识;以及,
[0046] S12043:从主链同步各第二共识交易以进行平行链自共识;
[0047] 其中,根据各第二共识交易进行平行链共识或平行链自共识包括:
[0048] 分别对各第二共识交易执行:解析第二共识交易以获取对应的各第二共识数据和第一共识数据,依次执行对应的各第二共识数据和第一共识数据,并在执行完成时缓存对应的执行结果;
[0049] 判断当前平行链的共识高度加一的共识数据是否达成共识:
[0050] 否,则将共识高度回滚为未执行第二共识交易前的共识高度;
[0051] 是,则将当前平行链的共识高度加一以更新共识高度,并判断是否存在待共识的共识数据:是,则返回判断当前平行链的共识高度加一的共识数据是否达成共识。
[0052] 具体地,以本平行链为第一平行链,第一平行链有四个授权节点a、b、c、d,以主链区块中包括第一平行链的平行链交易tx1、tx2,第一平行链区块为block(50_parachain1)为例;
[0053] 主链节点从内存池中拉取包括tx1、tx2的若干交易以生成主链区块;
[0054] a执行步骤S1200,从主链区块同步tx1、tx2以生成block(50_parachain1);
[0055] a执行步骤S1201,判断第一平行链区块中是否存在跨链交易:
[0056] 若tx1和tx2中包括跨链交易,则a执行步骤S1202:判断50是否为当前平行链的共识高度加一:
[0057] 若共识高度为49,则a执行步骤S1203:根据block(50_parachain1)生成第一共识交易并发送至主链节点;
[0058] 若共识高度为47,则a执行步骤S12041:根据block(50_parachain1)生成第一共识数据,并分别对block(48_parachain1)、block(49_parachain1)生成对应的第二共识数据48_a,49_a,50_a;以及,
[0059] a执行步骤S12042,按照区块高度从小到大的顺序根据第一共识数据和各第二共识数据生成第二共识交易tx(48_a,49_a,50_a)并发送至主链节点;
[0060] 同理,b、c、d执行步骤S1200~步骤S12042,b生成tx(48_b,49_b,50_b),c生成tx(48_c,49_c,50_c),d生成(48_d,49_d,50_d);
[0061] 主链节点根据tx(48_a,49_a,50_a)、tx(48_b,49_b,50_b)、tx(48_c,49_c,50_c)、tx(48_d,49_d,50_d)进行平行链共识:
[0062] 主链节点解析tx(48_a,49_a,50_a)以获取48_a,49_a,50_a;主链节点执行48_a,在执行完成时缓存R(48_a),主链节点执行49_a,在执行完成时缓存R(49_a),主链节点执行50_a,在执行完成时缓存R(50_a);同理,主链节点解析并执行tx(48_b,49_b,50_b)后,缓存R(48_b)~R(50_b),主链节点解析并执行tx(48_c,49_c,50_c)后,缓存R(48_c)~R(50_c),tx(48_c,49_c,50_c),主链节点解析并执行tx(48_d,49_d,50_d)后,缓存R(48_d)~R(50_d);
[0063] 若48~50均可以达成共识:
[0064] 主链节点判断R(48_a)、R(48_b)、R(48_c)、R(48_d)是否达成共识:
[0065] 是,则将共识高度更新为48,并判断是否存在待共识的共识数据:
[0066] 是,则判断R(49_a)、R(49_b)、R(49_c)、R(49_d)是否达成共识:
[0067] 是,则将共识高度更新为49,并判断是否存在待共识的共识数据:
[0068] 是,则判断R(50_a)、R(50_b)、R(50_c)、R(50_d)是否达成共识:
[0069] 是,则将共识高度更新为50,并判断是否存在待共识的共识数据:
[0070] 否,则结束。
[0071] 若48~50中有区块高度无法达成共识,以49无法达成共识为例:
[0072] 主链节点判断R(48_a)、R(48_b)、R(48_c)、R(48_d)是否达成共识:
[0073] 是,则将共识高度更新为48,并判断是否存在待共识的共识数据:
[0074] 是,则判断49的共识数据是否达成共识:
[0075] 否,将共识高度回滚为47。
[0076] a执行步骤S12043,从主链同步tx(48_a,49_a,50_a)、tx(48_b,49_b,50_b)、tx(48_c,49_c,50_c)、tx(48_d,49_d,50_d)以进行平行链自共识;同理,b、c、d和第一平行链的各非授权节点也从主链同步tx(48_a,49_a,50_a)、tx(48_b,49_b,50_b)、tx(48_c,49_c,50_c)、tx(48_d,49_d,50_d)以进行平行链自共识;
[0077] a~d和第一平行链的各非授权节点进行平行链自共识的方法与主链节点执行平行链共识的原理相同,只是执行主体不同,此处不再赘述;
[0078] 若tx1和tx2中不包括跨链交易,则结束。
[0079] 其中,第一共识交易也需要通过平行链共识和平行链自共识,第一共识交易的平行链共识或平行链自共识原理与现有技术相同,此处不再赘述。
[0080] 上述实施例以本平行链为第一平行链,第一平行链有四个授权节点a、b、c、d,以主链区块中包括第一平行链的平行链交易tx1、tx2,第一平行链区块为block(50_parachain1)为例对本申请的平行链共识原理进行了详细的阐述;在更多实施例中,第一平行链的授权节点的数量还可以根据实际需求进行配置,可实现相同的技术效果。
[0081] 若共识高度为47,在现有技术中,a~d在生成block(48_parachain1)时,生成block(48_parachain1)的共识交易;a~d在生成block(49_parachain1)时,生成block(49_parachain1)的共识交易,a~d在生成block(50_parachain1)时,生成block(50_parachain1)的共识交易;若block(48_parachain1)~block(50_parachain1)的共识交易均为100字节,则总共需花费的手续费为0.3*4=1.2;在当前申请的平行链共识机制中,a生成tx(48_a,49_a,50_a),b生成tx(48_b,49_b,50_b),c生成tx(48_c,49_c,50_c),d生成tx(48_d,49_d,50_d),且tx(48_a,49_a,50_a)~tx(48_d,49_d,50_d)均小于1000字节,则总共需花费的手续费为0.1*4=0.4;使用本申请的平行链共识机制可以大量节省平行链共识机制所产生的手续费,提高用户体验。
[0082] 图2为图1所示方法的一种优选实施方式的流程图。如图2所示,在一优选实施例中,上述方法还包括:
[0083] S1205:在第一平行链区块中不存在跨链交易时,判断共识高度后各平行链区块对应的共识数据的数据量总和是否不小于预配置的第一数值:
[0084] 是,则执行步骤S1206:按照区块高度从小到大的顺序根据共识高度后和第一区块高度前的各平行链区块对应的共识数据生成第三共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第三共识交易进行平行链共识;
[0085] S1207:从主链同步各第三共识交易以进行平行链自共识;
[0086] 其中,根据各第三共识交易进行平行链共识或平行链自共识包括:
[0087] 分别对各第三共识交易执行:解析第三共识交易以获取对应的各共识数据,依次执行对应的各共识数据,并在执行完成时缓存对应的执行结果;
[0088] 判断当前平行链的共识高度加一的共识数据是否达成共识:
[0089] 否,则将共识高度回滚为未执行第三共识交易前的共识高度;
[0090] 是,则将当前平行链的共识高度加一以更新共识高度,并判断是否存在待共识的共识数据:是,则返回判断当前平行链的共识高度加一的共识数据是否达成共识。
[0091] 具体地,以共识高度为47,预配置的第一数值为1000(kb)为例;
[0092] a执行步骤S1205,在block(50_parachain1)中不存在跨链交易时,判断47后各平行链区块对应的共识数据的数据量总和是否不小于1000(kb):
[0093] 否,则结束;
[0094] 是,则a执行步骤S1206,按照区块高度从小到大的顺序根据共block(48_parachain1)的共识数据和block(49_parachain1)的共识数据生成第三共识交易tx(48_a,49_a)并发送至主链节点;同理,b、c、d同样执行S1205和S1206,分别生成tx(48_b,49_b)、tx(48_c,49_c)和tx(48_d,49_d);
[0095] 主链节点根据tx(48_a,49_a)、tx(48_b,49_b)、tx(48_c,49_c)和tx(48_d,49_d)进行平行链共识;
[0096] a执行步骤S1207,从主链同步tx(48_a,49_a)、tx(48_b,49_b)、tx(48_c,49_c)和tx(48_d,49_d)以进行平行链自共识;同理,b、c、d和第一平行链的非授权节点同样执行S1207,从主链同步tx(48_a,49_a)、tx(48_b,49_b)、tx(48_c,49_c)和tx(48_d,49_d)以进行平行链自共识。
[0097] 上述实施例与图1所示的实施例中的平行链共识和平行链自共识的的原理相同,只是上述实施例的第三共识交易根据block(48_parachain1)的共识数据和block(49_parachain1)的共识数据生成,图1所示的实施例中的第二共识交易根据block(48_parachain1)的共识数据、block(49_parachain1)的共识数据和block(50_parachain1)的共识数据生成,此处不再赘述。
[0098] 在更多实施例中,还可以根据实际需求将第一数值配置为其它数值,例如,配置为800(kb),可实现相同的技术效果。
[0099] 在图1所示的平行链共识方法中,当平行链区块存在跨链交易时,才会对应的去生成共识交易;由于跨链交易数量较少,在图1所示的机制中,需要经历较多的平行链区块才会生成共识交易,例如,a、b、c、d的block(48_parachain1)~block(98_parachain1)的共识数据相同,而a、b的block(99_parachain1)的共识数据相同,c、d的block(99_parachain1)的共识数据与a、b的不同,在block(100_parachain1)时存在跨链交易,此时由于a、b、c、d的block(99_parachain1)的共识数据达不成共识,共识高度需要回滚到47,再重新检查是哪些授权节点出错,平行链共识效率差,且在较长的时间内,共识高度都不增长,容易产生平行链停止运行的假象。
[0100] 在上述实施例中,在节省平行链共识机制所产生的手续费的同时,保证平行链共识机制的效率。
[0101] 图3为图2所示方法的一种优选实施方式的流程图。如图3所示,在一优选实施例中,上述方法还包括:
[0102] S1208:在数据量总和小于第一数值时,判断第一区块高度与当前平行链的共识高度的差值是否达到预配置的第二数值:
[0103] 是,则执行步骤S1209:分别对共识高度后和第一区块高度前的各平行链区块生成对应的共识数据;以及,
[0104] S1210:按照区块高度从小到大的顺序根据共识高度后和第一区块高度前的各平行链区块对应的共识数据生成第三共识交易并发送至主链节点,以供主链节点根据各授权节点分别生成的第三共识交易进行平行链共识。
[0105] 具体地,以共识高度为47,预配置的第二数值为3为例;
[0106] a执行步骤S1208:在数据量总和小于第一数值时,判断50与47的差值是否达到3:
[0107] 是,则a执行步骤S1209,分别对block(48_parachain1)和block(49_parachain1)生成对应的共识数据;以及,
[0108] a执行步骤S1210,按照区块高度从小到大的顺序根据block(48_parachain1)的共识数据和block(49_parachain1)的共识数据生成第三共识交易tx(48_a,49_a)并发送至主链节点。
[0109] 主链节点根据tx(48_a,49_a)、tx(48_b,49_b)、tx(48_c,49_c)和tx(48_d,49_d)进行平行链共识。
[0110] 在更多实施例中,还可以根据实际需求将第二数值配置为其它数值,例如,配置为5,可实现相同的技术效果。
[0111] 在上述实施例中,在节省平行链共识机制所产生的手续费的同时,保证平行链共识机制的效率。
[0112] 图4为本发明一实施例提供的另一种平行链共识方法的流程图。如图4所示,在本实施例中,本发明提供一种适用于主链节点的平行链共识方法,上述方法包括:
[0113] S22:接收第一平行链的各授权节点分别生成的第一共识交易或第二共识交易;其中,第一共识交易由各授权节点从主链区块同步第一平行链的各平行链交易以生成第一平行链区块,判断第一平行链区块中是否存在跨链交易:是,则判断第一平行链区块的第一区块高度是否为当前平行链的共识高度加一:是,则根据第一平行链区块所生成并发送至主链节点;第二共识交易由各授权节点判断第一平行链区块的第一区块高度不为当前平行链的共识高度加一时,根据第一平行链区块生成第一共识数据,并分别对共识高度后和第一区块高度前的各平行链区块生成对应的第二共识数据;以及,按照区块高度从小到大的顺序根据第一共识数据和各第二共识数据所生成并发送至主链节点;
[0114] 根据各第一共识交易或各第二共识交易进行平行链共识,以供第一平行链的各平行链节点从主链同步各第一共识交易或各第二共识交易以进行平行链自共识;
[0115] 其中,根据各第二共识交易进行平行链共识或平行链自共识包括:
[0116] 分别对各第二共识交易执行:解析第二共识交易以获取对应的各第二共识数据和第一共识数据,依次执行对应的各第二共识数据和第一共识数据,并在执行完成时缓存对应的执行结果;
[0117] 判断当前平行链的共识高度加一的共识数据是否达成共识:
[0118] 否,则将共识高度回滚为未执行第二共识交易前的共识高度;
[0119] 是,则将当前平行链的共识高度加一以更新共识高度,并判断是否存在待共识的共识数据:是,则返回判断当前平行链的共识高度加一的共识数据是否达成共识。
[0120] 上述实施例的平行链共识原理可参考图1所示的方法,此处不再赘述。
[0121] 优选地,在一优选实施例中,上述方法还包括:
[0122] 在第一平行链区块中不存在跨链交易时,接收第一平行链的各授权节点分别生成的第三共识交易;其中,第三共识交易由各授权节点:判断共识高度后各平行链区块对应的数据量总和是否不小于预配置的第一数值:是,则按照区块高度从小到大的顺序根据共识高度后和第一区块高度前的各平行链区块对应的共识数据所生成;
[0123] 根据各第三共识交易进行平行链共识,以供第一平行链的各平行链节点从主链同步各第三共识交易进行平行链自共识;
[0124] 其中,根据各第三共识交易进行平行链共识或平行链自共识包括:
[0125] 分别对各第三共识交易执行:解析第三共识交易以获取对应的各共识数据,依次执行对应的各共识数据,并在执行完成时缓存对应的执行结果;
[0126] 判断当前平行链的共识高度加一的共识数据是否达成共识:
[0127] 否,则将共识高度回滚为未执行第三共识交易前的共识高度;
[0128] 是,则将当前平行链的共识高度加一以更新共识高度,并判断是否存在待共识的共识数据:是,则返回判断当前平行链的共识高度加一的共识数据是否达成共识。
[0129] 上述实施例的平行链共识原理可参考图2所示的方法,此处不再赘述。
[0130] 优选地,在一优选实施例中,第三共识交易由各授权节点在数据量总和小于第一数值时,判断第一区块高度与当前平行链的共识高度的差值是否达到预配置的第二数值:是,则分别对共识高度后和第一区块高度前的各平行链区块生成对应的共识数据;以及,按照区块高度从小到大的顺序根据共识高度后和第一区块高度前的各平行链区块对应的共识数据所生成并发送至主链节点。
[0131] 上述实施例的平行链共识原理可参考图3所示的方法,此处不再赘述。
[0132] 图5为本发明一实施例提供的一种设备的结构示意图。
[0133] 如图5所示,作为另一方面,本申请还提供了一种设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
[0134] 以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
[0135] 特别地,根据本公开的实施例,上述任一实施例描述的平行链共识方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行平行链共识方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
[0136] 作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的平行链共识方法。
[0137] 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
[0138] 描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
[0139] 以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。