CN114710512B - 共识结果的分发方法、节点和区块链系统 - Google Patents
共识结果的分发方法、节点和区块链系统 Download PDFInfo
- Publication number
- CN114710512B CN114710512B CN202210327159.9A CN202210327159A CN114710512B CN 114710512 B CN114710512 B CN 114710512B CN 202210327159 A CN202210327159 A CN 202210327159A CN 114710512 B CN114710512 B CN 114710512B
- Authority
- CN
- China
- Prior art keywords
- consensus
- node
- data blocks
- nodes
- consensus node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种共识结果的分发方法、共识节点、非共识节点和区块链系统。其中区块链系统包括共识节点以及与其对应的多个非共识节点。共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向不同的非共识节点发送不同的数据块;从共识节点接收到数据块的非共识节点向其余非共识节点广播来自共识节点的数据块;非共识节点接收到多个数据块中的至少Q个数据块后,对该至少Q个数据块进行解码以生成共识结果,其中Q的取值基于多个数据块的数量以及其中用于存储纠删码的数据块的数量确定。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种共识结果的分发方法、共识节点、非共识节点和区块链系统。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种共识结果的分发方法、共识节点、非共识节点和区块链系统。
第一方面,提供了一种区块链系统,包括共识节点以及其对应的多个非共识节点。其中所述共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向所述多个非共识节点中的至少部分非共识节点发送所述数据块,发送至不同的非共识节点的数据块不同;从所述共识节点接收到数据块的非共识节点,向所述多个非共识节点中的其余非共识节点广播其从所述共识节点接收的数据块;所述非共识节点在接收到至少Q个所述数据块后,对所述至少Q个所述数据块进行解码以生成所述共识结果,其中Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定。
第二方面,提供了一种共识结果的分发方法,应用于区块链系统中的共识节点,所述区块链系统中还包括与所述共识节点对应的多个非共识节点。所述方法包括:采用纠删码算法对共识结果进行拆分以得到多个数据块;向所述多个非共识节点中的至少部分非共识节点发送所述数据块,发送至不同的非共识节点的数据块不同,使得各个所述非共识节点生成所述共识结果。
第三方面,提供了一种共识结果的分发方法,应用于属于区块链系统的多个非共识节点中的任一非共识节点,所述多个非共识节点对应相同的共识节点。该方法包括:从所述共识节点和/或其余非共识节点中的至少Q个节点接收至少Q个数据块,所述至少Q个数据块属于由所述共识节点采用纠删码算法对共识结果进行拆分以得到的多个数据块,Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定;对所述至少Q个数据块进行解码以生成所述共识结果。
第四方面,提供了一种区块链系统中的共识节点,所述区块链系统中还包括与所述共识节点对应的多个非共识节点。所述共识节点包括:编码处理单元,配置为采用纠删码算法对共识结果进行拆分以得到多个数据块;通信处理单元,配置为向所述多个非共识节点中的至少部分非共识节点发送所述数据块,发送至不同的非共识节点的数据块不同,使得各个所述非共识节点生成所述共识结果。
第五方面,提供了一种区块链系统中的非共识节点,其与共识节点对应。所述非共识节点包括:通信处理单元,配置为从所述共识节点和/或与所述共识节点对应的其余非共识节点中的至少Q个节点接收至少Q个数据块,所述至少Q个数据块属于由所述共识节点采用纠删码算法对共识结果进行拆分以得到的多个数据块,Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定;解码处理单元,配置为对所述至少Q个数据块进行解码以生成所述共识结果。
上述实施例中,共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向与其对应的不同的非共识节点分发不同的数据块;非共识节点之间可以广播其从共识节点接收的数据块,进而使得单个非共识节点从共识节点和或其余非共识节点接收到满足相应数量的数据块后,可以对这些数据块进行解码以获得前述共识结果。如此,共识节点向非共识节点分发的数据量并不会随非共识节点的规模的增大而增大,共识节点向非共识节点的数据量相对较小,可以更为快速的完成向大规模非共识节点分发共识结果,效率相对较高。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例中示例性提供的PBFT共识算法中的共识过程示意图;
图2为本说明书实施例中示例性提供的区块链系统的示意图;
图3为本说明书实施例中提供的一种共识结果的分发方法的流程图;
图4为本说明书实施例中示例性提供的共识节点分发共识结果的示意图之一;
图5为本说明书实施例中示例性提供的默克尔树的示意图;
图6为本说明书实施例中示例性提供的共识节点分发共识结果的示意图之二;
图7为本说明书实施例中示例性提供的共识节点分发共识结果的示意图之三;
图8为本说明书实施例中示例性提供的共识节点分发共识结果的示意图之四;
图9为本说明书实施例中提供的一种共识节点的示意图;
图10为本说明书实施例中提供的一种非共识节点的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
区块链系统中,不同参与方通过部署的节点(Node)可以建立一个分布式的区块链网络。利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链网络中的每个节点(或大多节点上,如共识节点)上。这样的区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,将交易打包成区块并基于相同交易的执行结果更新世界状态。其中当前主流的共识机制包括但不限于:工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine FaultTolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等等。
图1为PBFT共识算法中的共识过程示意图。如图1所示,根据PBFT共识算法,可将共识过程划分为请求、预备、准备和提交四个阶段。假设一区块链中包括节点n1-节点n4四个共识节点,其中,节点n1例如为主节点,节点n2-节点n4例如为从节点,根据PBFT算法,在节点n1-节点n4中可容忍f=1个恶意节点。具体是,在请求阶段,区块链的用户可通过其用户设备向节点n1发送请求,该请求例如为区块链交易的形式。在预备阶段,节点n1在从一个或多个用户设备接收到多个交易之后,可将该多个交易打包为共识提议,将该共识提议及节点n1对该共识提议的签名发送给其他共识节点(即节点n2-节点n4),以用于生成区块,该共识提议中可包括该多个交易的交易体和该多个交易的提交顺序等信息。在准备阶段,各个从节点可对共识提议进行签名并发送给其他各个节点。假设节点n4为恶意节点,节点n1、节点n2和节点n3在分别接收到2f=2个其他共识节点的对共识提议的签名之后,可确定准备阶段完成,可进入提交阶段。例如,如图1中所示,节点n1在接收到节点n2和节点n3的签名之后,验证节点n2和节点n3的签名都是正确的对共识提议的签名,则确定准备阶段完成,节点n2在接收到节点n3的签名和预备阶段节点n1的签名并验证通过之后,确定准备阶段完成。在提交阶段,各个共识节点对共识提议进行提交阶段的签名并发送给其他各个共识节点,各个共识节点在接收到2f=2个其他共识节点的提交阶段的签名之后,可确定提交阶段完成,共识成功。例如,节点n1在接收到节点n2和节点n3的提交阶段的签名并验证之后,确定提交阶段完成,从而,节点n1可执行根据共识提议执行所述多个交易,生成并存储包括所述多个交易的区块(例如区块B1),根据多个交易的执行结果更新世界状态,并将多个交易的执行结果返回给用户设备。类似地,节点n2和节点n3在确定提交阶段完成之后,执行所述多个交易,生成并存储区块B1,并根据多个交易的执行结果更新世界状态。通过上述过程,实现了节点n1、节点n2和节点n3的存储一致性。也就是说,节点n1-节点n4在存在一个恶意节点的情况下仍可以实现对共识提议的共识成功,完成对区块的执行。
对于由大规模节点组建的区块链系统,可以从大规模节点中选取少量节点作为参与执行共识机制的共识节点。由数量相对较少的共识节点参与执行共识机制以得到的共识结果,可以由共识节点将其分发到大规模节点中未被选取为共识节点的其它非共识节点,从而可以提高区块链系统的共识效率。参见图2示例性提供的区块链系统,该区块链系统中例如可以选取Node 1、Node 2、Node 3和Node 4作为共识节点组成共识节点集合,除共识节点以外的非共识节点例如可以划分为与前述4个共识节点对应的节点分组1、节点分组2、节点分组3和节点分组4;其中前述4个共识节点联合执行某种共识机制获得共识结果后,各共识节点均可以向其对应的节点分组中的非共识节点分发共识结果,以便非共识节点基于共识结果获得相应的区块并对应的更新其存储的世界状态。其中需要特别说明的是,前述的共识结果例如可以为区块或者用于生成区块的相关数据。
共识节点可以向对应的非共识节点直接发送共识结果,例如Node 1可以向节点分组1中的节点11~节点1n等n个非共识节点完整发送共识结果。该实施方式中可能会因与共识节点对应的非共识节点的规模较大而增加共识节点向非共识节点分发的数据量,导致共识节点需要花费更多的时间来完成向大规模非共识节点分发共识结果,共识结果的分发效率相对较低。
本说明书实施例中提供了一种共识结果的分发方法、共识节点、非共识节点和区块链系统。共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向与其对应的不同的非共识节点分发不同的数据块;非共识节点之间可以广播其从共识节点接收的数据块,进而使得单个非共识节点从共识节点和/或其余非共识节点接收到满足相应数量的数据块后,可以对这些数据块进行解码以获得前述共识结果。如此,共识节点向非共识节点分发的数据量并不会随非共识节点的规模的增大而增大,共识节点向非共识节点的数据量相对较小,可以更为快速的完成向大规模非共识节点分发共识结果,效率相对较高。
图3为本说明书实施例中提供的一种共识结果的分发方法的流程图。该方法涉及区块链系统中的共识节点以及与该共识节点对应的多个非共识节点,如图3所示,该方法可以包括但不限于如下方法步骤32~步骤36。
首先,在步骤32,共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向共识节点对应的多个非共识节点中的至少部分非共识节点发送数据块。其中发送至不同的非共识节点的数据块不同。
纠删码(Erasure Coding,EC)算法是一种编码容错技术,最早用于通信行业中数据传输中的数据恢复。通过在原始数据中加入校验数据,使拆分后的各个数据块产生关联;在一定范围的数据出错情况下,通过纠删码技术可以对原始数据进行恢复。例如可以将原始数据通过EC算法生成N个data blocks,其中N个data blocks中例如可以包括对原始数据进行拆分以得到的p个data blocks,此外还增加了用来存储erasure编码的q个datablocks;如此则可以通过p+q个data blocks中的任意p个data blocks数据,解码出原始数据。
如前所述的是单个共识节点可以对应由多个非共识节点组成的节点分组,换而言之即单个共识节点可以对应多个非共识节点。共识节点采用纠删码算法对共识结果进行拆分以得到的数据块的数量,可以相同于与其对应的多个非共识节点的数量;或者该多个数据块的数量也可以是不小于预定数值且不大于n+f的其它取值,其中n表征与共识节点对应的多个非共识节点的数量,f表征多个数据块中用于存储纠删码的数据块的数量。
请参见图4,共识节点Node 1可以通过前文所述的各种共识机制获得共识结果b0。此处假设Node 1对应Node 11、Node 12、Node 13和Node 14等四个非共识节点,Node1例如可以采用纠删码算法将共识结果b0拆分为4个data blocks,分别是b1、b2、b3和b4。对于前述的4个数据块,其可以分别具有对应的hash值,例如b1对应的hash值记为h1,b2对应的对应的hash值记为h2,b3对应的hash值记为h3,b4对应的hash值记为h4。
共识节点还可以为共识结果对应的多个数据块构建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所示的默克尔树。
进而对于共识结果对应的每个数据块,共识节点可以为其生成对应的merkleproof(默克尔证明)。例如对于前述示例的四个数据块b1、b2、b3、b4,Node 1为b1生成的默克尔证明可以包括h2、h34和h14,为b2生成的默克尔证明可以包括h1、h34和h14,为b3生成的默克尔证明可以包括h4、h12和h14,为b4生成的默克尔证明可以包括h3、h12和h14。结合前述示例可见,数据块对应的默尔克证明是hash值的有序集合,通过这样的有序集合以及数据块自身的哈希值可以对数据块的有效性进行验证。
共识节点向非共识节点发送的数据块可以通过共识节点向非共识节点发送相应的第一消息(下文中记为消息m1)来承载,换而言之即共识节点向非共识节点发送的数据块可以位于共识节点向非共识节点发送的消息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,Node1可以利用自身的私钥对b1和/或其对应的默克尔证明进行加密,得到该消息m1的签名。此外共识节点也可以对消息m1的净荷部分计算hash值(即摘要值),进而再利用自身的私钥对该摘要值进行加密以得到对消息m1的签名。
接着,在步骤34,从共识节点接收到数据块的非共识节点,向多个非共识节点中的其余非共识节点广播其从共识节点接收的数据块。
共识节点对共识结果进行拆分以得到的多个数据块的数量,可能小于该共识节点对应的多个非共识节点的数量,因此与共识节点对应的非共识节点可能并不会从共识节点接收到数据块。此外共识节点向与其对应的非共识节点发送的数据块/消息m1可能因丢包或其它问题,导致非共识节点并不能从其对应的共识节点成功接收共识节点向其分发的数据块。因此前述步骤24是针对能够从对应的共识节点接收到数据块的非共识节点。
非共识节点从共识节点接收的数据块可以位于来自共识节点的消息m1中,而消息m1中除了包括相应的数据块外,还可能包括该数据块对应的默克尔证明和/或共识节点对消息m1的签名。因此对于从共识节点接收到消息m1的非共识节点,其还可以执行对消息m1中的签名进行验证,和/或,对消息m1中的数据块和默克尔证明进行验证,从而完成对来自共识节点的消息m1的正确性进行验证,当且仅当来自共识节点的消息m1的通过正确性验证,从共识节点接收到消息m1的非共识节点即可执行向共识节点对应的其余非共识节点广播来自共识节点的数据块。示例性的,Node 11可以从Node 1接收到消息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和其对应的默克尔证明通过验证。
请继续参考图4,Node 11例如从Node 1成功接收包含b1的消息m1,Node 12例如从Node 1成功接收包含b2的消息m1,Node 13例如从Node 1成功接收包含b3的消息m1,Node14例如从Node 1成功接收包含b4的消息m1,并且前述Node 11、Node 12、Node 13以及Node14等非共识节点从Node 1接收到消息m1的正确性均通过验证。那么,Node 11即可向Node12、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。
任意非共识节点向其余非共识节点广播的来自共识节点的数据块,可以位于该任意非共识节点向其余非共识节点广播的第二消息(下文中记为消息m2)中。与前述的消息m1类似,消息m2中还可以包括非共识节点对消息m2的签名;此外在消息m1中包括位于其中的数据块所对应的默克尔证明的情况下,消息m2中还可以包括相应的默克尔证明。例如对于Node 11向Node 12广播的消息m2中,不仅包括Node 11对该消息m2的签名,还可以包括Node11从Node 1接收的消息m1所包括的数据块b1和以及数据块b1对应的默克尔证明h2、h34和h14。
接着,在步骤36,非共识节点接收到至少Q个数据块后,对至少Q个数据块进行解码以生成共识结果。其中Q的取值基于共识节点对共识结果进行拆分以得到的多个数据块的数量以及该多个数据块中用于存储纠删码的数据块的数量确定,例如Q的取值为多个数据块的数量与用于存储纠删码的数据块的数量间的差值,即Q的取值不小于前述纠删码算法中所述的p的取值。
非共识节点可能无法从共识节点接收到数据块,然而其可能基于来自其余非共识节点的至少Q个数据块解码出共识结果。例如请参见图6,共识节点Node 1对应的多个非共识节点中还包括Node 15;Node 1将共识结果b0拆分为b1、b2、b3和b4等4个数据块,并将前述4个数据块分别发送给Node 11、Node 12、Node 13、Node 14,意味着Node 15无法从Node1接收到对b0进行拆分以得到的数据块,然而Node 15却可能从Node 11、Node 12、Node 13、Node 14接收到至少Q个数据块来生成共识结果。
非共识节点可能无法从对应相同共识节点的某些非共识节点接收到数据块,然而其只要能够搜集到至少Q个数据块即可解码出共识结果。例如请继续参见图7,Node 13可能因故障或作为恶意节点,不会将其接收自Node 1的b3进行广播,这就导致Node 11、Node12、Node 14无法从Node 13接收到b3,然而Node 11可能从Node 1、Node 12、Node 14接收到至少Q个数据块来生成共识结果,Node 12可能从Node 1、Node 11、Node 14接收到至少Q个数据块来生成共识结果,Node 14可能从Node 1、Node 11、Node 12接收到至少Q个数据块来生成共识结果。
如前所述,非共识节点从共识节点接收的数据块可以位于来自共识节点的消息m1中,任意非共识节点从其余非共识节点消息接收的数据块可以位于来自其余非共识节点的消息m2中。与验证消息m1的正确性的原理类似,非共识节点还可以验证其接收的消息m2的正确性;当且仅当消息m2通过正确性验证的情况下,才允许使用消息m2中的数据块生成共识结果。请继续参见图8,假设Node 13作为恶意节点,或者Node 13广播的消息m2被入侵者恶意更改,则可能导致Node 11、Node 12、Node 14从Node 13接收的消息m2无法通过正确性验证,换而言之即从Node 13接收的消息m2中所包含的数据块可能并非Node 1向Node 13分发的b3;此时Node 11、Node 12以及Node 14不会使用从Node 13接收的消息m2所包含的数据块,而是使用通过正确性验证的消息m1以及其它通过正确性验证的消息m2所包含的b1、b2、b4等数据块生成共识结果。
非共识节点可能无法在有效的时间间隔内完成生成共识结果,该有效的时间间隔的起始时刻可以是非共识节点首次接收到对共识结果进行拆分以得到的某个数据块的时刻。与之相应的是,为了保证区块链系统中全部节点的区块状态一致,可以按照相应的区块同步机制来实现同步区块高度。在一种可能的实施方式中,非共识节点可以按照某个时间步长向与其对应的共识节点或与该共识节点对应的其余非共识节点发送区块高度查询请求,使共识节点或其余非共识节点返回用于指示区块高度的指示信息;或者共识节点可以按照某个时间步长向与其对应的非共识节点发送用于指示其区块高度的指示信息。接着非共识节点可以基于指示信息指示的区块高度确定其是否存在需要同步的区块,如果是则向共识节点或其余非共识节点发送区块同步请求,使共识节点或其余非共识节点返回其请求同步的区块,并对返回的区块执行相应的安装过程,进而确保非共识节点与共识节点的区块高度、世界状态等信息一致。
上述实施例中,共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向与共识节点对应的不同的共识节点发送不同的数据块,共识节点无需完整传输数据量相对较大的共识结果到与其对应的全部非共识节点,可以降低共识节点向非共识节点传输的数据的数据量,降低分发共识结果的过程对共识节点的带宽资源的占用量,有利于共识节点更好的执行共识机制。此外,由于共识节点向非共识节点分发的数据量并不会随非共识节点的规模的增大而增大,共识节点向非共识节点的数据量相对较小,共识节点可以更为快速的完成向大规模非共识节点分发共识结果,效率相对较高。
图9为本说明书实施例中提供的一种区块链系统中的共识节点的示意图。其中该区块链系统中还包括与该共识节点对应的多个非共识节点。如图9所示,该共识节点包括:编码处理单元92,配置为采用纠删码算法对共识结果进行拆分以得到多个数据块;通信处理单元94,配置为向所述多个非共识节点中的至少部分非共识节点发送所述数据块,发送至不同的非共识节点的数据块不同,使得各个非共识节点生成共识结果。
图10为本说明书实施例中提供的一种区块链系统中的非共识节点的示意图。其中该非共识节点为与共识节点对应的多个非共识节点中的一个。如图10所示,该装置包括:通信处理单元102,配置为从所述共识节点和/或与共识节点对应的其余非共识节点中的至少Q个节点接收至少Q个数据块,所述至少Q个数据块属于由所述共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定;解码处理单元104,配置为对所述至少Q个数据块进行解码以生成所述共识结果。
本说明书实施例中还提供了一种区块链系统,包括共识节点以及其对应的多个非共识节点。其中,所述共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向所述多个非共识节点中的至少部分非共识节点发送所述数据块,其中发送至不同的非共识节点的数据块不同;从所述共识节点接收到数据块的非共识节点向所述多个非共识节点中的其余非共识节点广播来自所述共识节点的数据块;所述非共识节点非共识节点在接收到至少Q个所述数据块后,对所述至少Q个所述数据块进行解码以生成所述共识结果,其中Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定。
在一种可能的实施方式中,所述多个数据块的数量相等于所述多个非共识节点的数量。
在一种可能的实施方式中,所述共识节点向所述非共识节点发送的数据块位于所述共识节点向所述非共识节点发送的第一消息中;所述第一消息中还包括所述共识节点对所述第一消息的签名,和/或,所述第一消息中还包括位于其中的数据块所对应的默克尔证明。所述非共识节点从所述共识节点接收到所述第一消息后,对所述第一消息的签名进行验证,和/或,对所述第一消息中的数据块和默克尔证明进行验证。
在一种可能的实施方式中,所述非共识节点非共识节点从其余非共识节点接收的数据块位于所述非共识节点非共识节点从其余非共识节点接收的第二消息中,所述第二消息中还包括对应的非共识节点对所述第二消息的签名,和/或,所述第二消息中还包括位于其中的数据块所对应的默克尔证明。所述非共识节点非共识节点接收到所述第二消息后,对所述第二消息的签名进行验证,和/或,对所述第二消息中的数据块和默克尔证明进行验证。
在一种可能的实施方式中,所述共识节点向所述非共识节点发送用于指示所述共识节点的区块高度的指示信息。
在一种可能的实施方式中中,所述共识节点响应于来自所述非共识节点的区块同步请求,向所述非共识节点发送其请求同步的区块。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包括”或者其任何其他变体意在涵盖非排他性的包括,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包括有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包括在权利要求范围之内。
Claims (20)
1.一种区块链系统,包括多个共识节点以及其各自对应的多个非共识节点,其中,
所述共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,并向其对应的多个非共识节点中的至少部分非共识节点发送所述数据块,发送至不同的非共识节点的数据块不同;
从对应的共识节点接收到数据块的非共识节点,向与其对应相同共识节点的其余非共识节点广播其从对应的共识节点接收的数据块;
所述非共识节点在接收到至少Q个所述数据块后,对所述至少Q个所述数据块进行解码以生成所述共识结果,其中Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定。
2.根据权利要求1所述的区块链系统,其中,所述多个数据块的数量相等于所述共识节点对应的多个非共识节点的数量。
3.根据权利要求1所述的区块链系统,其中,所述共识节点向所述非共识节点发送的数据块位于所述共识节点向所述非共识节点发送的第一消息中;所述第一消息中还包括所述共识节点对所述第一消息的签名,和/或,所述第一消息中还包括位于其中的数据块所对应的默克尔证明;
所述非共识节点从所述共识节点接收到所述第一消息后,对所述第一消息的签名进行验证,和/或,对所述第一消息中的数据块和默克尔证明进行验证。
4.根据权利要求3所述的区块链系统,其中,所述非共识节点从其余非共识节点接收的数据块位于所述非共识节点从其余非共识节点接收的第二消息中,所述第二消息中还包括对应的非共识节点对所述第二消息的签名,和/或,所述第二消息中还包括位于其中的数据块所对应的默克尔证明;
所述非共识节点接收到所述第二消息后,对所述第二消息的签名进行验证,和/或,对所述第二消息中的数据块和默克尔证明进行验证。
5.根据权利要求1-4中任一项所述的区块链系统,其中,所述共识节点向所述非共识节点发送用于指示所述共识节点的区块高度的指示信息。
6.根据权利要求5所述的区块链系统,其中,所述共识节点响应于来自所述非共识节点的区块同步请求,向所述非共识节点发送其请求同步的区块。
7.一种共识结果的分发方法,应用于区块链系统中的任一个共识节点,所述区块链系统中包括多个共识节点以及其各自对应的多个非共识节点,所述方法包括:
采用纠删码算法对共识结果进行拆分以得到多个数据块;
向对应的多个非共识节点中的至少部分非共识节点发送所述数据块,发送至不同的非共识节点的数据块不同,使得各个所述非共识节点生成所述共识结果。
8.根据权利要求7所述的方法,其中,所述多个数据块的数量相等于与所述共识节点对应的多个非共识节点的数量。
9.根据权利要求7所述的方法,其中,所述共识节点向所述非共识节点发送的数据块位于所述共识节点向所述非共识节点发送的第一消息中;所述第一消息中还包括所述共识节点对所述第一消息的签名,和/或,所述第一消息中还包括位于其中的数据块所对应的默克尔证明。
10.根据权利要求7-9中任一项所述的方法,所述方法还包括:向所述非共识节点发送用于指示所述共识节点的区块高度的指示信息。
11.根据权利要求10所述的方法,所述方法还包括:响应于来自所述非共识节点的区块同步请求,向所述非共识节点发送其请求同步的区块。
12.一种共识结果的分发方法,应用于区块链系统中的任一个非共识节点,所述区块链系统中包括多个共识节点以及其各自对应的多个非共识节点,所述方法包括:
从对应的共识节点和/或与其对应相同共识节点的其余非共识节点中的至少Q个节点接收至少Q个数据块,其中所述至少Q个数据块属于由对应的共识节点采用纠删码算法对共识结果进行拆分以得到的多个数据块,Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定;
对所述至少Q个数据块进行解码以生成所述共识结果。
13.根据权利要求12所述的方法,其中,所述多个数据块的数量相等于所述共识节点对应的多个非共识节点的数量。
14.根据权利要求12所述的方法,其中,从所述共识节点接收的数据块位于所述共识节点向所述非共识节点发送的第一消息中;所述第一消息中还包括所述共识节点对所述第一消息的签名,和/或,所述第一消息中还包括位于其中的数据块所对应的默克尔证明;
所述方法还包括:对所述第一消息的签名进行验证,和/或,对所述第一消息中的数据块和默克尔证明进行验证。
15.根据权利要求14所述的方法,其中,从其余非共识节点接收的数据块位于从其余非共识节点接收的第二消息中,所述第二消息中还包括对应的非共识节点对所述第二消息的签名,和/或,所述第二消息中还包括位于其中的数据块所对应的默克尔证明;
所述方法还包括:对所述第二消息的签名进行验证,和/或,对所述第二消息中的数据块和默克尔证明进行验证。
16.根据权利要求12-15中任一项所述的方法,所述方法还包括:从所述共识节点接收用于指示所述共识节点的区块高度的指示信息,并根据所述指示信息指示的区块高度确定是否存在需要同步的区块。
17.根据权利要求16所述的方法,所述方法还包括:向所述共识节点发送区块同步请求,使所述共识节点返回请求同步的区块。
18.根据权利要求12所述的方法,所述方法还包括:向所述多个非共识节点中的其余非共识节点广播从所述共识节点接收的数据块。
19.一种区块链系统中的共识节点,所述区块链系统中包括多个共识节点以及其各自对应的多个非共识节点,所述共识节点包括:
编码处理单元,配置为采用纠删码算法对共识结果进行拆分以得到多个数据块;
通信处理单元,配置为向对应的多个非共识节点中的至少部分非共识节点发送数据块,发送至不同的非共识节点的数据块不同,使得各个所述非共识节点生成所述共识结果。
20.一种区块链系统中的非共识节点,所述区块链系统中包括多个共识节点以及其各自对应的多个非共识节点,所述非共识节点包括:
通信处理单元,配置为从对应的共识节点和/或与其对应相同共识节点的其余非共识节点中的至少Q个节点接收至少Q个数据块,其中所述至少Q个数据块属于由对应的共识节点采用纠删码算法对共识结果进行拆分以得到多个数据块,Q的取值基于所述多个数据块的数量以及所述多个数据块中用于存储纠删码的数据块的数量确定;
解码处理单元,配置为对所述至少Q个数据块进行解码以生成所述共识结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210327159.9A CN114710512B (zh) | 2022-03-30 | 2022-03-30 | 共识结果的分发方法、节点和区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210327159.9A CN114710512B (zh) | 2022-03-30 | 2022-03-30 | 共识结果的分发方法、节点和区块链系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114710512A CN114710512A (zh) | 2022-07-05 |
CN114710512B true CN114710512B (zh) | 2023-09-29 |
Family
ID=82170301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210327159.9A Active CN114710512B (zh) | 2022-03-30 | 2022-03-30 | 共识结果的分发方法、节点和区块链系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114710512B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450981A (zh) * | 2017-05-31 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法及设备 |
CN111526219A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN113761069A (zh) * | 2021-09-24 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 一种区块链的共识方法、系统、节点及电子设备 |
CN113783708A (zh) * | 2021-08-25 | 2021-12-10 | 山东区块链研究院 | 一种基于可靠广播的可再投票二元共识方法及装置 |
CN113852691A (zh) * | 2021-09-24 | 2021-12-28 | 支付宝(杭州)信息技术有限公司 | 一种区块链的共识方法、共识节点及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109345386B (zh) * | 2018-08-31 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
WO2020035092A2 (en) * | 2019-11-13 | 2020-02-20 | Alipay (Hangzhou) Information Technology Co., Ltd. | Blockchain data storage based on error correction code for permissioned blockchain network |
-
2022
- 2022-03-30 CN CN202210327159.9A patent/CN114710512B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450981A (zh) * | 2017-05-31 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法及设备 |
CN111526219A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN113783708A (zh) * | 2021-08-25 | 2021-12-10 | 山东区块链研究院 | 一种基于可靠广播的可再投票二元共识方法及装置 |
CN113761069A (zh) * | 2021-09-24 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 一种区块链的共识方法、系统、节点及电子设备 |
CN113852691A (zh) * | 2021-09-24 | 2021-12-28 | 支付宝(杭州)信息技术有限公司 | 一种区块链的共识方法、共识节点及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114710512A (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111681003B (zh) | 资源跨链转移方法、装置、计算机设备以及存储介质 | |
US11265173B2 (en) | Methods and systems for consensus in blockchains | |
CN111311414A (zh) | 一种基于一致性哈希算法的区块链多方共识方法 | |
US11036760B2 (en) | Method for parallel maintenance of data consistency | |
CN113837760B (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN113810465B (zh) | 一种异步二元共识方法及装置 | |
Wang et al. | Byzantine fault tolerant algorithm based on vote | |
CN114240433A (zh) | 基于区块链的数据处理方法及系统 | |
US11809453B2 (en) | Two-round byzantine fault tolerant (BFT) state machine replication (SMR) protocol with linear authenticator complexity and optimistic responsiveness | |
CN113794576B (zh) | 一种可再投票的二元共识方法及装置 | |
CN117251889B (zh) | 区块链共识方法、相关装置和介质 | |
CN114710512B (zh) | 共识结果的分发方法、节点和区块链系统 | |
CN111061813B (zh) | 用于区块链网络中的数据同步的方法、装置和计算设备 | |
CN110730241B (zh) | 面向全局规模的区块链基础设施 | |
CN114710238B (zh) | 纠删码算法冗余度确定方法及区块链节点 | |
CN115086337B (zh) | 文件处理方法、装置、存储介质以及电子设备 | |
CN115766038A (zh) | 区块链中的交易发送方法和区块链节点 | |
CN114499874A (zh) | 一种应用于工业互联网的拜占庭容错共识优化方法 | |
CN117221337A (zh) | 区块链共识方法、装置、介质及电子设备 | |
CN115296843B (zh) | 区块链系统中的交易执行方法、第一节点和第二节点 | |
CN113051622A (zh) | 索引构建方法、装置、设备和存储介质 | |
CN115134145B (zh) | 区块链系统中的共识方法、装置、计算设备和计算机可读存储介质 | |
CN116777631B (zh) | 基于区块链的交易上链方法及装置、设备、介质 | |
CN117614611B (zh) | 一种区块链共识方法、系统和存储介质 | |
Beltrando et al. | TenderTee: Increasing the Resilience of Tendermint by using Trusted Environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |