纠删码算法冗余度确定方法及区块链节点与流程

allin2023-02-05  68



1.本说明书实施例属于计算机技术领域,尤其涉及一种纠删码算法冗余度确定方法及区块链节点。


背景技术:

2.区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。


技术实现要素:

3.本发明的目的在于提供一种纠删码算法冗余度确定方法及区块链节点。
4.第一方面,提供了一种纠删码算法冗余度确定方法,应用于区块链系统中的区块链节点。所述方法包括:确定向与所述区块链节点对应的其余区块链节点分发采用纠删码算法对第一消息进行拆分以得到的多个数据块后,在第一时间间隔内从其余区块链节点接收的第二消息的数量,所述第二消息指示对应的区块链节点已在其从所述区块链节点接收数据块后的第二时间间隔内获得所述第一消息;根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。
5.第二方面,提供了一种纠删码算法冗余度确定方法,应用于区块链系统中的区块链节点。所述方法包括:确定从对应的区块链节点接收数据块的第一时刻,所述数据块属于所述对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块;当所述区块链节点在所述第一时刻之后的第二时间间隔内,基于所述多个数据块中的至少q个数据块获得所述第一消息的情况下,向所述对应的区块链节点发送第二消息,使所述对应的区块链节点确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,所述至少q个数据块由所述对应的区块链节点和/或与所述对应的区块链节点相对应的其余区块链节点中的至少q个节点发送。
6.第三方面,提供了一种区块链系统中的区块链节点,包括:数量确定单元,配置为确定向与所述区块链节点对应的其余区块链节点分发采用纠删码算法对第一消息进行拆分以得到的多个数据块后,在第一时间间隔内从其余区块链节点接收的第二消息的数量,所述第二消息指示对应的区块链节点已在其从所述区块链节点接收数据块后的第二时间间隔内获得所述第一消息;冗余度确定单元,配置为根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。
7.第四方面,提供了一种区块链系统中的区块链节点,包括:时刻确定单元,配置为确定从对应的区块链节点接收数据块的第一时刻,所述数据块属于所述对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块;数据发送单元,配置为当所述区块链节点在所述第一时刻之后的第二时间间隔内,基于所述多个数据块中的至少q个数
据块获得所述第一消息的情况下,向所述对应的区块链节点发送第二消息,使所述对应的区块链节点确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,所述至少q个数据块由所述对应的区块链节点和/或与所述对应的区块链节点相对应的其余区块链节点中的至少q个节点发送。
8.上述实施例中,当某个区块链节点从与其对应的区块链节点接收到数据块后的第二时间间隔内,基于对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块中的至少q个数据块获得该第一消息的情况下,可以向对应的区块链节点返回第二消息;对应的区块链节点可以基于其向与其对应的多个区块链节点分发该多个数据块后的第一时间间隔内接收的第二消息的数量,动态调整采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。如此,有利于实现在确保其余区块链节点能够准确解码出第一消息的情况下,尽可能的降低拆分第一消息的区块链节点向与其对应的其余区块链节点分发的数据量,从而更进一步的提高第一消息的分发效率。
附图说明
9.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
10.图1为示例性提供的pbft共识算法中的共识过程示意图;
11.图2为本说明书实施例中示例性提供的区块链系统的示意图;
12.图3为本说明书实施例中提供的一种纠删码算法冗余度确定方法的流程图;
13.图4为本说明书实施例中示例性提供的共识节点分发共识结果的示意图之一;
14.图5为本说明书实施例中提供的默克尔树的示意图;
15.图6为本说明书实施例中示例性提供的共识节点分发共识结果的示意图之二;
16.图7为本说明书实施例中示例性提供的共识节点分发共识结果的示意图之三;
17.图8为本说明书实施例中提供的一种区块链节点的示意图;
18.图9为本说明书实施例中提供的一种区块链节点的示意图。
具体实施方式
19.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
20.区块链系统中,不同参与方通过部署的节点(node)可以建立一个分布式的区块链网络。利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链网络中的每个节点(或大多节点上,如共识节点)上。这样的区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠
诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,将交易打包成区块并基于相同交易的执行结果更新世界状态。其中当前主流的共识机制包括但不限于:工作量证明(proof of work,pow)、股权证明(proof of stake,pos)、委任权益证明(delegated proof of stake,dpos)、实用拜占庭容错(practical byzantine fault tolerance,pbft)算法,蜜獾拜占庭容错(honeybadgerbft)算法等等。
21.图1为pbft共识算法中的共识过程示意图。如图3所示,根据pbft共识算法,可将共识过程划分为请求、预备、准备和提交四个阶段。假设一区块链中包括节点n1-节点n4四个共识节点,其中,节点n1例如为主节点,节点n2-节点n4例如为从节点,根据pbft算法,在节点n1-节点n4中可容忍f=1个恶意节点。具体是,在请求阶段,区块链的用户可通过其用户设备向节点n1发送请求,该请求例如为区块链交易的形式。在预备阶段,节点n1在从一个或多个用户设备接收到多个交易之后,可将该多个交易打包为共识提议,将该共识提议及节点n1对该共识提议的签名发送给其他共识节点(即节点n2-节点n4),以用于生成区块,该共识提议中可包括该多个交易的交易体和该多个交易的提交顺序等信息。在准备阶段,各个从节点可对共识提议进行签名并发送给其他各个节点。假设节点n4为恶意节点,节点n1、节点n2和节点n3在分别接收到2f=2个其他共识节点的对共识提议的签名之后,可确定准备阶段完成,可进入提交阶段。例如,如图3中所示,节点n1在接收到节点n2和节点n3的签名之后,验证节点n2和节点n3的签名都是正确的对共识提议的签名,则确定准备阶段完成,节点n2在接收到节点n3的签名和预备阶段节点n1的签名并验证通过之后,确定准备阶段完成。在提交阶段,各个共识节点对共识提议进行提交阶段的签名并发送给其他各个共识节点,各个共识节点在接收到2f=2个其他共识节点的提交阶段的签名之后,可确定提交阶段完成,共识成功。例如,节点n1在接收到节点n2和节点n3的提交阶段的签名并验证之后,确定提交阶段完成,从而,节点n1可执行根据共识提议执行所述多个交易,生成并存储包括所述多个交易的区块(例如区块b1),根据多个交易的执行结果更新世界状态,并将多个交易的执行结果返回给用户设备。类似地,节点n2和节点n3在确定提交阶段完成之后,执行所述多个交易,生成并存储区块b1,并根据多个交易的执行结果更新世界状态。通过上述过程,实现了节点n1、节点n2和节点n3的存储一致性。也就是说,节点n1-节点n4在存在一个恶意节点的情况下仍可以实现对共识提议的共识成功,完成对区块的执行。
22.对于由大规模节点组建的区块链系统,可以从大规模节点中选取少量节点作为参与执行共识机制的共识节点。由数量相对较少的共识节点参与执行共识机制以得到的共识结果,可以由共识节点将其发送到大规模节点中未被选取为共识节点的其它非共识节点,从而可以提高区块链系统的共识效率。参见图2示例性提供的区块链系统,该区块链系统中例如可以选取node 1、node 2、node 3和node 4作为共识节点组成共识节点集合,除共识节点以外的非共识节点例如可以划分为与前述4个共识节点对应的节点分组1、节点分组2、节点分组3和节点分组4;其中前述4个共识节点联合执行某种共识机制获得共识结果后,各共识节点均可以向其对应的节点分组中的非共识节点分发共识结果,以便非共识节点基于共识结果获得相应的区块并对应的更新其存储的世界状态。其中需要特别说明的是,前述的共识结果例如可以为区块或者用于生成区块的相关数据。
23.共识节点可以向对应的非共识节点直接发送共识结果,例如node 1可以向节点分组1中的节点11~节点1n等n个非共识节点完整发送共识结果。该实施方式中可能会因与共
识节点对应的非共识节点的规模较大而增加共识节点向非共识节点分发的数据量,导致共识节点需要花费更多的时间来完成向大规模非共识节点分发共识结果,共识结果的分发效率相对较低。
24.共识节点还可以采用纠删码算法对其获取的共识结果进行拆分以得到多个数据块,并向与其对应的多个非共识节点中的不同非共识节点分发不同的数据块;从共识节点接收到数据块的非共识节点可以向其余非共识节点广播其从共识节点接收的数据块,进而使得单个非共识节点从共识节点和/或其余非共识节点接收到满足相应数量的数据块后,对满足相应数量的数据块进行解码以获得前述共识结果。该实施方式中,采用纠删码算法对共识结果进行拆分时使用的冗余度越高,则共识节点需要向非共识节点分发的数据量越大;然而如果冗余度过小又可能导致非共识节点无法搜集满足相应数量的数据块来解码出共识结果。
25.本说明书实施例中还提供了一种纠删码算法冗余度确定方法和区块链节点。当某个区块链节点从与其对应的区块链节点接收到数据块后的第二时间间隔内,基于对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块中的至少q个数据块获得该第一消息的情况下,可以向对应的区块链节点返回第二消息;对应的区块链节点可以基于其向与其对应的多个区块链节点分发该多个数据块后的第一时间间隔内接收的第二消息的数量,动态调整采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。如此,有利于实现在确保其余区块链节点能够准确解码出第一消息的情况下,尽可能的降低拆分第一消息的区块链节点向与其对应的其余区块链节点分发的数据量,从而更进一步的提高第一消息的分发效率。
26.图3为本说明书实施例中提供的一种纠删码算法冗余度确定方法。该方法涉及区块链系统中的多个区块链节点,该方法可以包括如下步骤32~步骤36。
27.首先,在步骤32,区块链节点确定从与其对应的区块链节点接收数据块的第一时刻,其中该数据块属于对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块。
28.纠删码(erasure coding,ec)算法是一种编码容错技术,最早用于通信行业中数据传输中的数据恢复。通过在原始数据中加入校验数据,使拆分后的各个数据块产生关联;在一定范围的数据出错情况下,通过纠删码技术可以对原始数据进行恢复。例如可以将原始数据通过ec算法生成n个data blocks,其中n个data blocks中例如可以包括对原始数据进行拆分以得到的p个data blocks,此外还增加了用来存储erasure编码的q个data blocks;如此则可以通过p+q个data blocks中的任意p个data blocks数据,解码出原始数据。其中前述的q与(p+q)的比值即为采用纠删码算法对原始数据进行拆分时使用的冗余度。
29.下文中将主要以对应的区块链节点(即用于拆分第一消息的区块链节点)是共识节点,与该区块链节点对应的其余区块链节点是与共识节点对应的多个非共识节点为例示例性说明本说明书实施例中的技术方案,显然该多个区块链节点也可能全部为共识节点或全部为非共识节点。其中当拆分第一消息的区块链节点是共识节点时,第一消息例如可以是共识结果;当多个区块链节点均为共识节点时,该第一消息也可能时包含多个交易的交易列表。
30.共识节点采用纠删码算法对第一消息进行拆分以得到的多个数据块的数量,通常可以相同于与该共识节点对应的多个非共识节点的数量。或者该多个数据块的数量也可以是不小于预定数值且不大于n+q的其它取值,其中n表征与共识节点对应的多个非共识节点的数量,q表征多个数据块中用于存储纠删码的数据块的数量。下文中以多个数据块的数量相等于多个数据块的数量的情况为例,示例性说明本说明书实施例中提供的技术方案。
31.请参见图4,共识节点node 1可以通过前文所述的各种共识机制获得第一消息b0。此处假设node 1对应node 11、node 12、node 13和node 14等4个非共识节点,node1例如可以采用纠删码算法将b0拆分为4个data blocks,分别是b1、b2、b3和b4。对于前述的4个数据块,其可以分别具有对应的hash值,例如b1对应的hash值记为h1,b2对应的对应的hash值记为h2,b3对应的hash值记为h3,b4对应的hash值记为h4。
32.共识节点还可以为第一消息对应的多个数据块构建merkle tree(默克尔树,通常也被称作hash tree)。如前所述,4个数据块b1、b2、b3、b4的hash值分别是h1、h2、h3、h4,两两构建hash值可以得到哈希值h12和h34,其中h12可以是通过对h1和h2顺序拼接后计算得到的哈希值,h34可以是通过对h3和h4顺序拼接后计算得到的哈希值;与之相应的是还可以对h12和h34顺序拼接后计算得到哈希值h14,最终构成如图5所示的默克尔树。
33.进而对于第一消息对应的每个数据块,共识节点可以为其生成对应的merkle proof(默克尔证明)。例如对于前述示例的4个数据块b1、b2、b3、b4,node 1为b1生成的默克尔证明可以包括h2、h34和h14,为b2生成的默克尔证明可以包括h1、h34和h14,为b3生成的默克尔证明可以包括h4、h12和h14,为b4生成的默克尔证明可以包括h3、h12和h14。结合前述示例可见,数据块对应的默尔克证明是hash值的有序集合,通过这样的有序集合以及数据块自身的哈希值可以对数据块的有效性进行验证。
34.非共识节点从共识节点接收的数据块可以位于来自共识节点的消息m1中。消息m1中还可以包括位于消息m1中的数据块所对应的默克尔证明;例如,node 1可以发送消息m1到node 11,该消息m1中具体可以包括b1和其对应的默克尔证明h2、h34和h14;发送消息m1到node 12,该消息m1中具体可以包括b2和其对应的默克尔证明h1、h34和h14;发送消息m1到node 13,该消息m1中可以包括b3和其对应的默克尔证明h4、h12和h14;发送消息m1到node 14,该消息m1中具体可以包括b4和其对应的默克尔证明h3、h12和h14。此外消息m1中还可以包括共识节点对消息m1的签名,其中共识节点具体可以用自身的私钥对消息m1的payload(净荷)部分签名;例如对于node 1向node 11发送的消息m1,node 1可以利用自身的私钥对b1和/或其对应的默克尔证明进行加密,得到该消息m1的签名;此外共识节点也可以对消息m1的净荷部分计算hash值(即摘要值),进而再利用自身的私钥对该摘要值进行加密以得到对消息m1的签名。
35.非共识节点还可以执行对消息m1中的签名进行验证,和/或,对消息m1中的数据块和默克尔证明进行验证,从而完成对消息m1的正确性进行验证。举例来说,node 11可以从node1接收到消息m1,该消息m1中例如可以包括node 1对该消息m1的签名,因此node 11可以利用node 1的公钥对该消息m1的签名进行验证;此外假设该消息m1中还包括b1对应的默克尔证明h2、h34和h14,则node 11还可以对消息m1中的b1和其对应的默克尔证明h2、h34和h14进行验证,具体例如node 11可以计算该消息m1中的b1的hash值,利用该hash值以及h2、h34计算得到相应的根hash,如果根hash与h14相同,则该消息m1中的b1以及其对应的默克
尔证明通过验证。
36.对于与相同共识节点对应的不同非共识节点,其各自从共识节点接收到数据块的第一时刻可能有所不同。例如请继续参照图4,node 1在时刻t0完成向node 11、node 12、node 13以及node 14分别发送前述消息m1;然而node 13可能在时刻t2接收到消息m1,即node 13会将时刻t2确定为从node 1接收数据块的第一时刻;node 14却可能在不同于时刻t2的时刻t1接收到消息m1,即node 14会将时刻t1确定为从node 1接收数据块的第一时刻。
37.非共识节点需要向与其对应相同共识节点的其余非共识节点广播来自共识节点的数据块。更具体地说,非共识节点完成对消息m1的正确性进行验证后,需要向其余非共识节点广播位于该消息m1中的数据块。请继续参考图4,node 11从node 1接收包含b1的消息m1,node 12从node 1接收包含b2的消息m1,node 13从node 1成功接收包含b3的消息m1,node 14从node 1接收包含b4的消息m1,并且前述node 11、node 12、node 13以及node 14各自从node 1接收的消息m1的正确性均通过验证。那么,node 11即可向node 12、node 13以及node 14广播其从node 1接收的b1;node 12即可向node 11、node 13以及node 14广播其从node 1接收的b2;node 13即可向node 11、node 12以及node 14广播其从node 1接收的b3;node 14即可向node 11、node 12以及node 13广播其从node 1接收的b4。
38.非共识节点广播的数据块可以位于其广播的消息m2中。与前述的消息m1类似,消息m2中还可以包括对应的非共识节点对消息m2的签名;此外在消息m1中包括位于其中的数据块所对应的默克尔证明的情况下,消息m2中还可以包括相应的默克尔证明。例如对于由node 11广播的消息m2中,其不仅包括b1,还可以包括node 11对该消息m2的签名,此外还可以包括node 11从node 1接收的消息m1中与b1对应的默克尔证明h2、h34和h14。
39.由于单个非共识节点可能是故障节点或作为恶意节点,因此多个非共识节点中的任意非共识节点均可能无法从与其对应相同共识节点的某些非共识节点接收到数据块。例如请参见图6,node 11可能因发生硬件故障或作为恶意节点,不会对其接收自node 1的b1进行广播,如此则会导致node 12、node 13、node 14无法从node 11接收到b1,然而node 12可能从node 1、node 13、node 14接收到至少q个数据块来生成共识结果,node 13可能从node 1、node 12、node 14接收到至少q个数据块来生成共识结果,node 14可能从node 1、node 12、node 13接收到至少q个数据块来生成共识结果。其中q的取值基于共识节点对共识结果进行拆分以得到的多个数据块的数量以及该多个数据块中用于存储纠删码的数据块的数量确定,例如q的取值可以为多个数据块的数量与该多个数据块中用于存储纠删码的数据块的数量间的差值。
40.单个非共识节点从其它非共识节点接收的数据块可以位于来自其它非共识节点的消息m2中。其中与验证消息m1的正确性的原理类似,非共识节点可以验证其接收的消息m2的正确性,当消息m2通过正确性验证的情况下,才允许使用消息m2中的数据块生成共识结果。请参见图7,假设node 12作为恶意节点,或者node 12广播的消息m2被入侵者恶意更改,则可能导致node 11、node 13、node 14从node 12接收的消息m2无法通过正确性验证,换而言之即从node 12接收的消息m2中所包含的数据块可能并非node 1向node 12分发的b2;此时node 11、node 13以及node 14均不会使用从node 12接收的消息m2所包含的数据块,而是使用通过正确性验证的消息m1、以及其它通过正确性验证的消息m2所包含的b1、b2、b4等数据块生成共识结果。
41.在步骤34,当区块链节点在第一时刻之后的第二时间间隔内,基于多个数据块中的至少q个数据块获得第一消息的情况下,向对应的区块链节点发送第二消息。
42.下文中将第二消息记为消息m3,消息m3中可以包括指示信息和非共识节点对消息m3的签名,指示信息用于指示对应的非共识节点已在其从共识节点接收到数据块后的第二时间间隔内,基于共识节点采用纠删码算法对共识结果进行拆分以得到的多个数据块中的至少q个数据块生成该共识结果,该指示信息例如为第一消息或第一消息的哈希值。
43.前述第二时间间隔例如可以基于多个非共识节点中任意两个非共识节点间的最大数据传输时延t1进行确定,例如该第二时间间隔为的取值为2*t1。
44.请继续参见图4、图6和图7,时刻t1和时刻t3之间的时间间隔为第二时间间隔,时刻t2和时刻t4之间的时间间隔为该第二时间间隔。如果node13能够在t4时刻之前,完成从node 1、node 11、node 12、node 14中的至少q个节点对应接收至少q个数据块,并基于该至少q个数据块解码出b0,则node 13向node 1返回消息m3。如果node14能够在t3时刻之前,完成从node 1、node 11、node 12、node 13中的至少q个节点对应接收至少q个数据块,并基于该至少q个数据块解码出b0,则node 13向node 1返回消息m3。
45.在步骤36,对应的区块链节点确定向其余区块链节点分发采用纠删码算法对第一消息进行拆分以得到的多个数据块后,在第一时间间隔内从其余区块链节点接收的第二消息的数量。
46.前述第一时间间隔例如可以基于多个非共识节点中任意两个非共识节点间的最大数据传输时延t1,以及共识节点与多个非共识节点中任意非共识节点间的最大数据传输时t2进行确定,例如该第一时间间隔的取值为2*t1+2*t2。
47.请继续参见图4、图6和图7,node 1例如在t1时刻完成向node 11、node 12、node 13和node 14分发b1、b2、b3和b4;时刻t1和时刻t5之间的时间间隔为第一时间间隔,node 1则可以在当前时刻达到时刻t5后,确定其从node 11、node 12、node 13和node 14等4个非共识节点中接收的消息m3的数量。
48.最后,在步骤38,对应的区块链节点根据第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。
49.对于共识节点分发的第1个共识结果,或者说由共识节点集合中的各个共识节点基于前述各种共识机制得到并需要分发给非共识节点的第1个共识结果,例如可以基于拜占庭容错机制将共识节点采用纠删码算法对该区块进行拆分时使用的冗余度设置为f/n,其中共识节点对应的多个非共识节点的数量为3f+1或3f+2。除第1个共识结果以外的其它消息均可采用前述步骤22~步骤28的方案,获得采用纠删码算法对其进行拆分时使用的冗余度。
50.前述步骤28中所述的其它消息例如是指,共识节点获取的并且需要分发至与其对应的多个非共识节点并且在当前时刻并未成功完成分发的共识结果或者包含多个交易的交易列表。例如前文提到共识结果可以是区块,继续假设前述步骤22中提及的第一消息是区块高度/编号为h的区块,那么其它消息例如可以是区块高度/编号大于h的其它区块,例如是区块高度为h+1的区块。
51.共识节点具体可以根据第二消息的数量m和多个非共识节点的数量n,计算采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。例如具体可以将(n-m)与n的比值
确定为采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。
52.当第二消息的数量m不大于2q时,具体可以通过增大采用纠删码算法对共识结果进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其中q表征多个数据块中用于存储纠删码的数据块的数量。例如具体可以按照取值为或1或其它预设数值的固定步长d增大q的取值,那么采用纠删码算法对其它消息进行拆分时使用的冗余度例如可以被确定为(q+d)/n。此处需要特别说明的是,当第二消息的数量m的不大于2q时,说明多个非共识节点中的故障节点和恶意节点数量过多,而采用纠删码算法对第一消息进行拆分时使用的冗余度又偏小,导致处于正常工作状态的非共识节点未能搜集到足够数量的数据块来解码出第一消息,此种情况下通过在较小的范围内增大冗余度,可以使处于正常工作状态的非共识节点通过搜集更少的数据块来解码出共识节点获得的其它消息,有利于实现在并不大幅度的增加共识节点向非共识节点分发的数据量的情况下,确保非共识节点能够在后续过程中准确解码出共识节点获得的其它消息。
53.此外当第二消息的数量m不大于2q时,说明多个非共识节点中故障节点和恶意节点的数量不小于n-m,因此可以基于第二消息的数量m设置最小冗余度,例如将最小冗余度设置为(n-m)确保后续过程中调整采用纠删码算法对其它消息进行拆分时使用的冗余度时,避免因冗余度过小而导致处于正常工作状态的非共识节点无法准确的解码出其它消息。
54.当第二消息的数量m大于2q时,具体可以通过减小采用纠删码算法对第一消息进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其q表征多个数据块中用于存储纠删码的数据块的数量。例如具体可以按照取值为或1或其它预设数值的固定步长d减小q的取值,则采用纠删码算法对其它消息进行拆分时使用的冗余度例如可以被确定为(q-d)/n。此处需要特别说明的是,当第二消息的数量m的大于2q时,说明处于正常工作状态的非共识节点能够搜集到足够数量的数据块来解码出第一消息,此种情况下在较小的范围内减小冗余度,可以使处于正常工作状态的非共识节点通过搜集更多的数据块来解码出共识节点获得的其它消息,有利于实现在确保非共识节点能够准确解码出共识节点获得的其它消息的情况下,降低共识节点向非共识节点分发的数据量。
55.其中为了确保非共识节点能够准确解码出共识节点获取的其它消息,采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,应当不小于在采用纠删码算法对第一消息进行拆分前设置的最小冗余度。此外考虑到故障节点或恶意节点可能被修复为出于正常工作状态的非共识节点,还可以按照按照预定时间间隔周期性减小最小冗余度。
56.如前文所述,即使处于正常工作状态的非共识节点也可能无法解码出共识节点期望分发的共识节点。因此为了保证区块链系统中全部节点的区块状态一致,可以按照相应的区块同步机制来实现同步区块高度。在一种可能的实施方式中,非共识节点可以按照某个时间步长向与其对应的共识节点或与该非共识节点属于相同节点分组的其余非共识节点发送区块高度查询请求,使共识节点或其余非共识节点返回用于指示共识节点或其余非共识节点的区块高度的指示信息;或者共识节点可以按照某个时间步长向与其对应的非共识节点发送用于指示其区块高度的指示信息。接着,非共识节点可以基于指示信息指示的区块高度确定其是否存在需要同步的区块,如果是则向共识节点或其余非共识节点发送区
块同步请求,使共识节点或其余非共识节点返回其请求同步的区块,并对返回的区块执行相应的安装过程,进而确保非共识节点与共识节点的区块高度、世界状态等信息一致。
57.与方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链系统中的区块链节点。如图8所示,该区块链节点包括:数量确定单元82,配置为确定向与所述区块链节点对应的其余区块链节点分发采用纠删码算法对第一消息进行拆分以得到的多个数据块后,在第一时间间隔内从其余区块链节点接收的第二消息的数量,所述第二消息指示对应的区块链节点已在其从所述区块链节点接收数据块后的第二时间间隔内获得所述第一消息;冗余度确定单元84,配置为根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。
58.在一种可能的实施方式中,所述冗余度确定单元84,配置为根据所述第二消息的数量和对应的其余区块链节点的数量,计算采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。
59.在一种可能的实施方式中,所述冗余度确定单元84,配置为当所述第二消息的数量不大于2q时,增大采用纠删码算法对所述第一消息进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其中q表征所述多个数据块中用于存储纠删码的数据块的数量。
60.在一种可能的实施方式中,所述冗余度确定单元84,还配置为基于所述第二消息的数量以及所述多个非共识节点的总量,设置最小冗余度。
61.在一种可能的实施方式中,所述冗余度确定单元,还配置为周期性减小所述最小冗余度。
62.在一种可能的实施方式中,所述冗余度确定单元84,配置为当所述第二消息的数量大于2q时,减小采用纠删码算法对所述第一消息进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其中q表征所述多个数据块中用于存储纠删码的数据块的数量。
63.在一种可能的实施方式中,采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,不小于在采用纠删码算法对所述第一消息进行拆分前设置的最小冗余度。
64.与方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链系统中的区块链节点。如图9所示,该区块链节点包括:时刻确定单元92,配置为确定从对应的区块链节点接收数据块的第一时刻,所述数据块属于所述对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块;数据发送单元94,配置为当所述区块链节点在所述第一时刻之后的第二时间间隔内,基于所述多个数据块中的至少q个数据块获得所述第一消息的情况下,向所述对应的区块链节点发送第二消息,使所述对应的区块链节点确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,所述至少q个数据块由所述对应的区块链节点和/或与所述对应的区块链节点相对应的其余区块链节点中的至少q个节点发送。
65.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行
处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包括”或者其任何其他变体意在涵盖非排他性的包括,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
66.本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
67.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
68.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
69.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
70.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
71.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
72.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包括有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
73.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
74.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
75.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包括在权利要求范围之内。

技术特征:
1.一种纠删码算法冗余度确定方法,应用于区块链系统中的区块链节点,所述方法包括:确定向与所述区块链节点对应的其余区块链节点分发采用纠删码算法对第一消息进行拆分以得到的多个数据块后,在第一时间间隔内从其余区块链节点接收的第二消息的数量,所述第二消息指示对应的区块链节点已在其从所述区块链节点接收数据块后的第二时间间隔内获得所述第一消息;根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。2.根据权利要求1所述的方法,所述根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,包括:根据所述第二消息的数量和对应的其余区块链节点的数量,计算采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。3.根据权利要求1所述的方法,所述根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,包括:当所述第二消息的数量不大于2q时,增大采用纠删码算法对所述第一消息进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其中q表征所述多个数据块中用于存储纠删码的数据块的数量。4.根据权利要求3所述的方法,所述方法还包括:基于所述第二消息的数量以及对应的其余区块链节点的数量,设置最小冗余度。5.根据权利要求4所述的方法,所述方法还包括:周期性减小所述最小冗余度。6.根据权利要求1所述的方法,所述根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,包括:当所述第二消息的数量大于2q时,减小采用纠删码算法对所述第一消息进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其中f表征所述多个数据块中用于存储纠删码的数据块的数量。7.根据权利要求6所述的方法,采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,不小于在采用纠删码算法对所述第一消息进行拆分前设置的最小冗余度。8.一种纠删码算法冗余度确定方法,应用于区块链系统中的区块链节点,所述方法包括:确定从对应的区块链节点接收数据块的第一时刻,所述数据块属于所述对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块;当所述区块链节点在所述第一时刻之后的第二时间间隔内,基于所述多个数据块中的至少q个数据块获得所述第一消息的情况下,向所述对应的区块链节点发送第二消息,使所述对应的区块链节点确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,所述至少q个数据块由所述对应的区块链节点和/或与所述对应的区块链节点相对应的其余区块链节点中的至少q个节点发送。9.一种区块链系统中的区块链节点,包括:数量确定单元,配置为确定向与所述区块链节点对应的其余区块链节点分发采用纠删码算法对第一消息进行拆分以得到的多个数据块后,在第一时间间隔内从其余区块链节点
接收的第二消息的数量,所述第二消息指示对应的区块链节点已在其从所述区块链节点接收数据块后的第二时间间隔内获得所述第一消息;冗余度确定单元,配置为根据所述第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。10.根据权利要求9所述的区块链节点,所述冗余度确定单元,配置为根据所述第二消息的数量和对应的其余区块链节点的数量,计算采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。11.根据权利要求9所述的区块链节点,所述冗余度确定单元,配置为当所述第二消息的数量不大于2q时,增大采用纠删码算法对所述第一消息进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其中q表征所述多个数据块中用于存储纠删码的数据块的数量。12.根据权利要求11所述的区块链节点,所述冗余度确定单元,还配置为基于所述第二消息的数量以及所述多个非共识节点的总量,设置最小冗余度。13.根据权利要求12所述的共识节点,所述冗余度确定单元,还配置为周期性减小所述最小冗余度。14.根据权利要求9所述的区块链节点,所述冗余度确定单元,配置为当所述第二消息的数量大于2q时,减小采用纠删码算法对所述第一消息进行拆分时使用的冗余度,获得采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,其中q表征所述多个数据块中用于存储纠删码的数据块的数量。15.根据权利要求14所述的区块链节点,采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,不小于在采用纠删码算法对所述第一消息进行拆分前设置的最小冗余度。16.一种区块链系统中的区块链节点,包括:时刻确定单元,配置为确定从对应的区块链节点接收数据块的第一时刻,所述数据块属于所述对应的区块链节点采用纠删码算法对第一消息进行拆分以得到的多个数据块;数据发送单元,配置为当所述区块链节点在所述第一时刻之后的第二时间间隔内,基于所述多个数据块中的至少q个数据块获得所述第一消息的情况下,向所述对应的区块链节点发送第二消息,使所述对应的区块链节点确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度,所述至少q个数据块由所述对应的区块链节点和/或与所述对应的区块链节点相对应的其余区块链节点中的至少q个节点发送。

技术总结
一种纠删码算法冗余度确定方法及区块链节点。方法包括:共识节点向多个非共识节点分发采用纠删码算法对第一消息进行拆分以得到的多个数据块后,确定在第一时间间隔内从多个非共识节点接收的第二消息的数量,第二消息用于指示对应的非共识节点已在其从共识节点接收数据块后的第二时间间隔内获得第一消息;共识节点根据第二消息的数量确定采用纠删码算法对待拆分的其它消息进行拆分时使用的冗余度。度。度。


技术研发人员:石杰
受保护的技术使用者:蚂蚁区块链科技(上海)有限公司
技术研发日:2022.03.30
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-5041.html

最新回复(0)