CN111159289A - 一种区块同步的方法及装置 - Google Patents
一种区块同步的方法及装置 Download PDFInfo
- Publication number
- CN111159289A CN111159289A CN201911304348.9A CN201911304348A CN111159289A CN 111159289 A CN111159289 A CN 111159289A CN 201911304348 A CN201911304348 A CN 201911304348A CN 111159289 A CN111159289 A CN 111159289A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- nodes
- child
- height
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012545 processing Methods 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 15
- 238000012795 verification Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 15
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明涉及金融科技(Fintech)领域,并公开了一种区块同步的方法及装置,其中,方法包括:第一节点将第一区块提交后,将第一区块的块高发送至第二节点;第二节点是第一节点根据区块链网络的关系树确定的子节点;关系树用于指示区块链网络中相邻节点之间区块同步的父子关系,父节点将区块同步至子节点;第二节点若确定第一区块的块高高于第二节点的最高区块的块高,则生成并发送第一同步请求,第一节点在接收到第一同步请求之后,将第一同步请求中块高对应的区块发送至第二节点。该技术方案用以解决共识节点的实际出带宽不能满足同时向多个观察节点发送区块的需求,以及区块链网络扩展受限的问题。
Description
技术领域
本发明实施例涉及金融科技(Fintech)领域,尤其涉及区块链(Blockchain)领域中一种区块同步的方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
区块链网络中,部分节点在某段时间的区块状态可能落后于其他节点,从而引入了区块同步机制,每个节点定期向其他节点广播区块状态(一般包括块高和哈希),块高落后的节点会主动向块高最高的节点拉取最新区块,从而保障了大部分节点的块高基本一致。
现有的区块同步机制中,会存在多个观察节点向同一个共识节点同时请求区块的可能性,这样会占用共识节点较大的出带宽。举例来说,有m个观察节点同时向一个共识节点请求区块,每个区块的大小为block_size,则该共识节点的出带宽需要设置大于block_size×m。
该方式中,可能存在共识节点的实际出带宽不能满足同时向多个观察节点发送区块的需求;而且不能进一步增加观察节点的个数,存在整个区块链网络扩展受限的问题。
发明内容
本发明实施例提供一种区块同步的方法及装置,用以解决共识节点的实际出带宽不能满足同时向多个观察节点发送区块的需求,以及区块链网络扩展受限的问题。
本发明实施例提供的一种区块同步的方法,包括:
第一节点将第一区块提交后,将所述第一区块的块高发送至第二节点;所述第二节点是所述第一节点根据区块链网络的关系树确定的子节点;所述关系树用于指示所述区块链网络中相邻节点之间区块同步的父子关系,父节点将区块同步至子节点;
所述第一节点在接收到第一同步请求之后,将所述第一同步请求中块高对应的区块发送至所述第二节点;所述第一同步请求是所述第二节点在确定所述第一区块的块高高于所述第二节点的最高区块的块高之后发送的。
上述技术方案中,第一节点将第一区块提交后,将第一区块的块高发送至第二节点,若第二节点确定本地的最高块高小于第一区块的块高时,则向第一节点请求区块,其中,第二节点是第一节点根据区块链网络的关系树确定的第一节点的子节点,也就是说,第一节点在将第一区块提交后,并不会提供给其所有相邻节点同步该第一区块,而是仅提供给其子节点同步该第一区块,通过该方式,可以降低对第一节点的出带宽的要求,以使得第一节点的实际出带宽可以满足区块同步的需求,此外,还可以实现将区块链网络进行无限扩展。
可选的,所述第一节点将第一区块提交之前,还包括:
所述第一节点确定所述第一区块通过所述区块链网络的共识验证;或者
所述第一节点接收第三节点发送的第一区块,并根据所述第一节点的最高区块对所述第一区块验证通过;所述第三节点是所述第一节点的父节点。
上述技术方案中,第一节点既可以是共识节点又可以是观察节点,也即共识节点可以通过该方式将本节点的最新区块状态发送至对应的子节点上,以使子节点向该共识节点同步区块;观察节点也可以通过该方式将本节点的最新区块状态发送至对应的子节点上,以使子节点向该观察节点同步区块;从而实现子观察节点向父观察节点同步区块,观察节点向共识节点同步区块的,也即实现将共识节点的区块逐层同步至最底层的观察节点(叶子节点)。
可选的,所述第一节点将所述第一区块的块高发送至第二节点之前,还包括:
所述第一节点确定与所述第二节点之间连通成功。
可选的,所述方法还包括:
所述第一节点若确定与所述第二节点之间连通失败,则根据所述关系树确定所述第二节点的子节点;
所述第一节点确定与所述第二节点的子节点之间的连通状态,直至确定出连通成功的第四节点,将所述第一区块的块高发送至所述第四节点。
上述技术方案中,保障第一节点将第一区块的块高发送至第一节点的子节点或者孙节点,从而实现第一节点的子节点或者孙节点从第一节点处请求区块。
可选的,所述第二节点是所述第一节点根据区块链网络的关系树确定的子节点,包括:
所述第一节点从所述第一区块中读取节点列表;所述节点列表指示在提交所述第一区块时所述区块链网络中包含的所有节点、所述所有节点的连接关系;
所述第一节点根据所述所有节点、所述所有节点的连接关系,确定所述关系树;
所述第一节点根据所述关系树,将所述关系树中所述第一节点的子节点确定为所述第二节点。
上述技术方案中,区块链网络中每个节点的网络模块中相同块高所对应的节点列表是一致的,每个节点的网络模块中不同块高对应的节点列表可能不一致。也就是说,第一节点需要从第一区块中读取节点列表,然后判断当前的节点列表相比于第一区块之前一个区块的节点列表是否发生变化,若发生变化,则表示区块链网络中节点发生变化(已有节点退出区块链网络或者新节点加入区块链网络),第一节点需要基于该最新的节点列表生成区块链网络的关系树,进而根据该关系树确定第二节点。
可选的,所述方法还包括:
所述第一节点向第五节点广播第一区块的块高;所述第五节点是所述第一节点根据所述节点列表确定的与所述第一节点相邻的节点;
所述第一节点在接收到第二同步请求之后,将所述第二同步请求中块高对应的区块发送至所述第五节点;所述第二同步请求是所述第五节点在确定所述第一区块的块高高于所述第五节点的最高区块的块高之后发送的。
上述技术方案中,为了实现整个区块链网络中区块同步的稳定性,避免由于某个共识节点或者某个共识节点对应的关系树中的观察节点出现故障,导致故障节点或者故障节点的子节点或者孙节点不能同步区块,整个区块链网络还可以基于gossip协议,定时执行相邻节点之间随机拉取区块的逻辑,也即,区块链网络中任一个节点定时向相邻节点广播自己节点的最新区块状态,若其相邻节点发现自己落后该节点,则会向该节点请求区块,以从该节点中同步区块。
可选的,所述区块链网络中包括多个共识节点,每个共识节点对应一个关系树,且共识节点是与所述共识节点对应关系树的根节点;任一个关系树中,所述关系树包括多层父子关系,且每层父子关系中的父节点对应多个子节点。
上述技术方案中,基于关系树可以实现区块链网络的无限扩展,当新增共识节点时,可以配置该新增共识节点参与区块链网络的共识,且该共识节点对应有自己的关系树;当新增观察节点时,可以将该观察节点作为叶子节点增加至某个共识节点对应的关系树下,从而从该叶子节点的父节点中同步区块。
相应的,本发明实施例还提供了一种区块同步的装置,包括:
处理单元和收发单元;
所述收发单元在所述处理单元将第一区块提交后,将所述第一区块的块高发送至第二节点;所述第二节点是所述处理单元根据区块链网络的关系树确定的第一节点的子节点;所述关系树用于指示所述区块链网络中相邻节点之间区块同步的父子关系,父节点将区块同步至子节点;
所述收发单元在接收到第一同步请求之后,将所述第一同步请求中块高对应的区块发送至所述第二节点;所述第一同步请求是所述第二节点在确定所述第一区块的块高高于所述第二节点的最高区块的块高之后发送的。
可选的,所述处理单元还用于:
在所述收发单元将第一区块提交之前,确定所述第一区块通过所述区块链网络的共识验证;或者在所述收发单元接收第三节点发送的第一区块,根据所述第一节点的最高区块对所述第一区块验证通过;所述第三节点是所述第一节点的父节点。
可选的,所述处理单元还用于:
在所述收发单元将所述第一区块的块高发送至第二节点之前,确定与所述第二节点之间连通成功。
可选的,所述处理单元还用于:
若确定与所述第二节点之间连通失败,则根据所述关系树确定所述第二节点的子节点;
确定与所述第二节点的子节点之间的连通状态,直至确定出连通成功的第四节点,控制所述收发单元将所述第一区块的块高发送至所述第四节点。
可选的,所述处理单元具体用于:
从所述第一区块中读取节点列表;所述节点列表指示在提交所述第一区块时所述区块链网络中包含的所有节点、所述所有节点的连接关系;
根据所述所有节点、所述所有节点的连接关系,确定所述关系树;
根据所述关系树,将所述关系树中所述第一节点的子节点确定为所述第二节点。
可选的,所述收发单元还用于:
向第五节点广播第一区块的块高;所述第五节点是所述第一节点根据所述节点列表确定的与所述第一节点相邻的节点;
在接收到第二同步请求之后,将所述第二同步请求中块高对应的区块发送至所述第五节点;所述第二同步请求是所述第五节点在确定所述第一区块的块高高于所述第五节点的最高区块的块高之后发送的。
可选的,所述区块链网络中包括多个共识节点,每个共识节点对应一个关系树,且共识节点是与所述共识节点对应关系树的根节点;任一个关系树中,所述关系树包括多层父子关系,且每层父子关系中的父节点对应多个子节点。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块同步的方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块同步的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链网络中各节点的拓扑关系图;
图2为本发明实施例提供的另一种区块链网络中各节点的拓扑关系图;
图3为本发明实施例提供的一种区块同步的方法的流程示意图;
图4为本发明实施例提供的一种各层节点的区块提交时间的时延示意图;
图5为现有的区块同步方案中各节点的出流量;
图6为本发明提供的区块同步方案中各节点的出流量;
图7为本发明实施例提供的一种区块同步的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供的区块同步方法适用于区块链网络,区块链网络中部分节点作为共识节点参与共识,其他节点作为观察节点不参与共识但拥有区块链全量数据,观察节点向共识节点请求区块进行同步。
区块链网络中可以包括多个共识节点,设置每个共识节点对应一个关系树,且每个共识节点是与该共识节点对应关系树的根节点,关系树中除根节点为共识节点以外,其他分支节点或者叶子节点为与共识节点相关的观察节点。
如图1为本发明实施例提供的一种区块链网络中各节点的拓扑关系图,区块链网络中包括共识节点0、共识节点1和共识节点2,其中,共识节点0、共识节点1、共识节点2分别对应关系树0、关系树1、关系树2,且分别是关系树0、关系树1、关系树2的根节点。以关系树0为例,关系树0中的分支节点和叶子节点均为与共识节点0相关的观察节点。
区块链网络中还可以设置该多个共识节点中的部分共识节点分别对应关系树,且共识节点是与该共识节点对应关系树的根节点。如图2为本发明实施例提供的另一种区块链网络中各节点的拓扑关系图,区块链网络中包括共识节点0、共识节点1和共识节点2,其中,共识节点0、共识节点1分别对应关系树0和关系树1,且分别是关系树0和关系树1的根节点。
关系树用于指示区块链网络中相邻节点之间区块同步的父子关系,父节点将区块同步至子节点。如图1中,关系树0中包括多个观察节点,观察节点01和观察节点02为例,观察节点01是观察节点02的父节点,也即观察节点02是观察节点01的子节点,观察节点01将区块同步至观察节点02中。
本发明实施例中,可以针对任一个关系树,设置该关系树的层数以及每层所对应的分叉数T,T大于等于1,也就是说,任一个关系树中,关系树可以包括多层父子关系,每层父子关系中的父节点可以对应多个子节点。以图1为例,T=2,观察节点01对应两个子节点,分别为观察节点02和观察节点03。
此外,同一个关系树中不同层的分叉数T可以相同或者不同,不同共识节点对应的关系树的分叉数T也可以相同或者不同。
本发明实施例基于关系树,可以实现区块链网络的无限扩展,当新增共识节点时,可以配置该新增共识节点参与区块链网络的共识,且该共识节点对应有自己的关系树;当新增观察节点时,可以将该观察节点作为叶子节点增加至某个共识节点对应的关系树下,从而从该叶子节点的父节点中同步区块。
基于上述描述,图3示例性的示出了本发明实施例提供的一种区块同步的方法的流程,该流程可以第一节点和第二节点为执行主体进行示例性的说明。
此处,第二节点是第一节点根据区块链网络的关系树确定的子节点。第一节点可以是共识节点或者观察节点。
步骤301,第一节点将第一区块提交。
步骤302,第一节点将第一区块的块高发送至第二节点;
步骤303,第二节点在确定第一区块的块高高于第二节点的最高区块的块高之后,生成第一同步请求;
步骤304,第二节点将第一同步请求发送至第一节点;
步骤305,第一节点将第一同步请求中块高对应的区块发送至第二节点。
步骤301中,当第一节点是共识节点时,则代表该第一区块是通过区块链网络中包括第一节点在内的共识节点的共识验证的,也就是说,第一节点是在确定第一区块通过区块链网络的共识验证之后,将第一区块提交至区块链上;当第一节点是观察节点时,则有第一区块是由第一节点的父节点(也即第三节点)发送至第一节点的,此时,第一节点需要根据第一节点的最高区块对该第一区块进行验证,具体的,可以是根据第一节点的区块链的最高区块的块高和最高区块的哈希对第一区块进行验证,若确定通过验证,则将第一区块提交至区块链上。也就是说,第一节点既可以是共识节点又可以是观察节点,也即共识节点可以通过该方式将本节点的最新区块状态发送至对应的子节点上,以使子节点向该共识节点同步区块;观察节点也可以通过该方式将本节点的最新区块状态发送至对应的子节点上,以使子节点向该观察节点同步区块;从而实现子观察节点向父观察节点同步区块,观察节点向共识节点同步区块的,也即实现将共识节点的区块逐层同步至最底层的观察节点(叶子节点)。
步骤302之前,也即第一节点在将第一区块的块高发送至第二节点之前,会先确定当前区块链网络中的第一节点的子节点,相当于需要先确定出第二节点。具体的,第一节点先从第一区块中读取节点列表;节点列表指示在提交第一区块时区块链网络中包含的所有节点、所有节点的连接关系;第一节点根据所有节点、所有节点的连接关系,确定关系树;第一节点根据关系树,将关系树中第一节点的子节点确定为第二节点。
需要说明的是,节点列表是存储在区块链网络的每个节点的网络模块中,每个区块都会对应一个节点列表。举例来说,区块链网络在当前时刻(块高0)包括10个节点(共识节点和观察节点),块高为0的区块对应的节点列表即包括索引为ID0至ID9的10个节点以及该10个节点之间的网络连接关系,如节点ID0分别与节点ID1、节点ID2、节点ID3连接,然后接收到一笔交易用于指示将节点ID3退出区块链网络,则区块链网络执行该笔交易后,将该笔交易打包至区块并提交至区块链,此时,块高为1的区块对应的节点列表包括索引为ID0至ID2和ID4至ID9的9个节点以及该9个节点之间的网络连接关系,如节点ID0分别与节点ID1、节点ID2连接。
基于上述描述可知,区块链网络中每个节点的网络模块中相同块高所对应的节点列表是一致的,每个节点的网络模块中不同块高对应的节点列表可能不一致。也就是说,第一节点需要从第一区块中读取节点列表,然后判断当前的节点列表相比于第一区块之前一个区块的节点列表是否发生变化,若发生变化,则表示区块链网络中节点发生变化(已有节点退出区块链网络或者新节点加入区块链网络),第一节点需要基于该最新的节点列表生成区块链网络的关系树,进而根据该关系树确定第二节点。
本发明实施例中,第一节点在确定出第二节点之后,还会判断第一节点是否与第二节点连通成功,若连通成功,则会将第一区块的块高发送至第二节点;若连通失败,则根据关系树进一步确定第二节点的子节点,第一节点再确定与第二节点的子节点之间的连通状态,直至确定出连通成功的第四节点,并将第一区块的块高发送至第四节点。通过该方式,可以保障第一节点将第一区块的块高发送至第一节点的子节点或者孙节点,从而实现第一节点的子节点或者孙节点从第一节点处请求区块。
举例来说,如果第一节点是共识节点0,共识节点0确定出的关系树0如图1所示,则共识节点0确定的子节点(第二节点)为观察节点01和观察节点04,共识节点0判断是否与观察节点01和观察节点04连通成功,若确定与观察节点01连通失败,则确定观察节点01的子节点为观察节点02和观察节点03,共识节点0确定与观察节点02和观察节点03均连通成功,则共识节点0确定将第一区块的块高分别发送至观察节点02、观察节点03。又有,共识节点确定与观察节点04连通成功,则确定将第一区块的块高发送至观察节点04。此处,相当于共识节点0将第一区块的块高同时发送至三个观察节点,分别是观察节点02、观察节点03、观察节点04。
本发明实施例中,第一节点在向第二节点发送第一区块的块高的同时,也会向第一节点发送第一区块的哈希值,相当于,第一节点会将区块链的最新区块状态发送至第二节点,其中,该最新区块状态可以包括最新块高和最新区块哈希,记作{i,block_hash(i)}。
步骤303中,第二节点在接收到第一节点发送的第一区块的块高之后,会判断该第一区块的块高是否大于本地区块链的最高块高,若是,则会生成第一同步请求,其中,该第一同步请求用于向第一节点请求区块。比如,第二节点的本地区块链的最高块高为10,接收到的第一区块的块高为11,则第二节点会生成用于向第一节点请求区块11的第一同步请求。
此外,还存在第二节点确定第一区块的块高不大于本地区块链的最高块高,比如,第二节点的本地区块链的最高块高为10,而接收到的第一区块的块高为9,则第二节点不会向第一节点请求区块。解释为,虽然第二节点是第一节点的子节点,但是第二节点不仅可以从第一节点处请求区块,还可以从其他节点处请求区块,也就是说,子节点可以从其父节点处同步区块,也可以从其他节点处同步区块,此时,需要引入本发明的另个一实现方式,即相邻节点之间可以互相同步区块,具体如下。
为了实现整个区块链网络中区块同步的稳定性,避免由于某个共识节点或者某个共识节点对应的关系树中的观察节点出现故障,导致故障节点或者故障节点的子节点或者孙节点不能同步区块,整个区块链网络还基于gossip协议,定时执行相邻节点之间随机拉取区块的逻辑,也即,区块链网络中任一个节点定时向相邻节点广播自己节点的最新区块状态,若其相邻节点发现自己落后该节点,则会向该节点请求区块,以从该节点中同步区块。
例如图1中,假设共识节点0出现故障,则此时共识节点0对应关系树0中的所有观察节点都暂时不能从共识节点0处同步区块,假设观察节点01的相邻节点有观察节点11和观察节点12,则观察节点01可以在确定自己落后于观察节点11和观察节点12之后,向观察节点11和观察节点12同步相应的区块。再假设,观察节点01的最高块高为20,而共识节点0恢复正常后的最高块高为18,则共识节点0虽然还会向观察节点01定向发送最新区块状态,但观察节点01并不会向共识节点0请求区块。
本发明实施例中,第一节点同样会根据节点列表确定与第一节点相邻的节点,即第五节点,第一节点向第五节点发送第一区块的块高,第五节点在确定第一区块的块高高于第五节点的最高区块的块高之后则生成第二同步请求,并将第二同步请求发送至第一节点,其中,该第二同步请求用于指示第五节点向第一节点请求的区块,第一节点将第二同步请求中块高对应的区块发送至第五节点中。当然,如果第一节点在广播最新区块状态时,第一节点的最新区块是第二区块,则第一节点则需要将第二区块的块高广播至相邻节点,此处的相邻节点可能是第五节点也可能不是第五节点,需要根据第二区块对应的节点列表进行确认。
节点在向相邻节点广播自己节点的最新区块状态时,节点需要根据自己节点的最新区块中的节点列表确定相邻节点,此处,节点确定出的相邻节点可以有多个,节点可以向该多个相邻节点进行定向广播,也可以从该多个相邻节点中再随机选取N个进行定向广播,N可以大于等于1,实际使用中,可以根据经验设置N为3,此时相邻节点同步的效率最高。
通过关系树逐层同步区块的方式中,针对同一个区块可能存在下一层节点的提交时间会延迟于上一层节点的提交时间,各层节点的区块提交时间的时延如图4所示,假设关系树的深度为d,每个区块提交时延为t,则根节点(共识节点)提交n个区块的时延为n×t,第一层节点(观察节点)同步并提交区块的时延为n×t+t,第二层节点(观察节点)同步并提交区块的时延为n×t+2t,叶子节点(观察节点)同步并提交区块的时延为n×t+d×t,与共识节点的时延差为d×t。但当n远大于d时,时延几乎可以忽略不计,因此该技术方案对观察节点的TPS(Transaction Per Second,每秒事务数)的影响非常小。
实际应用中,整个区块链网络中包含10个共识节点,90个观察节点,树的度是2。如图5为现有的区块同步方案中各节点的出流量,观察节点主要从10个共识节点下载区块,共识节点的出流量可达到2500MB;如图6为本发明提供的区块同步方案中各节点的出流量,部分区块下载流量分摊到了观察节点,共识节点由区块下载带来的流量开销降低到了700MB,降低了3倍多,基本接近最优(最优的情况是现有技术方案的峰值出带宽是本技术方案的峰值出带宽的4.5倍,但由于gossip协议导致的区块随机拉取情况的存在,无法达到最优,只能接近最优)。
上述技术方案中,第一节点将第一区块提交后,将第一区块的块高发送至第二节点,若第二节点确定本地的最高块高小于第一区块的块高时,则向第一节点请求区块,其中,第二节点是第一节点根据区块链网络的关系树确定的第一节点的子节点,也就是说,第一节点在将第一区块提交后,并不会提供给其所有相邻节点同步该第一区块,而是仅提供给其子节点同步该第一区块,通过该方式,可以降低对第一节点的出带宽的要求,以使得第一节点的实际出带宽可以满足区块同步的需求,此外,还可以实现将区块链网络进行无限扩展。
基于同一发明构思,图7示例性的示出了本发明实施例提供的一种区块同步的装置的结构,该装置可以执行区块同步的方法的流程。
所述装置包括:
收发单元701和处理单元702;
所述收发单元701在所述处理单元702将第一区块提交后,将所述第一区块的块高发送至第二节点;所述第二节点是所述处理单元702根据区块链网络的关系树确定的第一节点的子节点;所述关系树用于指示所述区块链网络中相邻节点之间区块同步的父子关系,父节点将区块同步至子节点;
所述收发单元701在接收到第一同步请求之后,将所述第一同步请求中块高对应的区块发送至所述第二节点;所述第一同步请求是所述第二节点在确定所述第一区块的块高高于所述第二节点的最高区块的块高之后发送的。
可选的,所述处理单元702还用于:
在所述收发单元701将第一区块提交之前,确定所述第一区块通过所述区块链网络的共识验证;或者在所述收发单元701接收第三节点发送的第一区块,根据所述第一节点的最高区块对所述第一区块验证通过;所述第三节点是所述第一节点的父节点。
可选的,所述处理单元702还用于:
在所述收发单元701将所述第一区块的块高发送至第二节点之前,确定与所述第二节点之间连通成功。
可选的,所述处理单元702还用于:
若确定与所述第二节点之间连通失败,则根据所述关系树确定所述第二节点的子节点;
确定与所述第二节点的子节点之间的连通状态,直至确定出连通成功的第四节点,控制所述收发单元701将所述第一区块的块高发送至所述第四节点。
可选的,所述处理单元702具体用于:
从所述第一区块中读取节点列表;所述节点列表指示在提交所述第一区块时所述区块链网络中包含的所有节点、所述所有节点的连接关系;
根据所述所有节点、所述所有节点的连接关系,确定所述关系树;
根据所述关系树,将所述关系树中所述第一节点的子节点确定为所述第二节点。
可选的,所述收发单元701还用于:
向第五节点广播第一区块的块高;所述第五节点是所述第一节点根据所述节点列表确定的与所述第一节点相邻的节点;
在接收到第二同步请求之后,将所述第二同步请求中块高对应的区块发送至所述第五节点;所述第二同步请求是所述第五节点在确定所述第一区块的块高高于所述第五节点的最高区块的块高之后发送的。
可选的,所述区块链网络中包括多个共识节点,每个共识节点对应一个关系树,且共识节点是与所述共识节点对应关系树的根节点;任一个关系树中,所述关系树包括多层父子关系,且每层父子关系中的父节点对应多个子节点。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块同步的方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块同步的方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种区块同步的方法,其特征在于,包括:
第一节点将第一区块提交后,将所述第一区块的块高发送至第二节点;所述第二节点是所述第一节点根据区块链网络的关系树确定的子节点;所述关系树用于指示所述区块链网络中相邻节点之间区块同步的父子关系,父节点将区块同步至子节点;
所述第一节点在接收到第一同步请求之后,将所述第一同步请求中块高对应的区块发送至所述第二节点;所述第一同步请求是所述第二节点在确定所述第一区块的块高高于所述第二节点的最高区块的块高之后发送的。
2.如权利要求1所述的方法,其特征在于,所述第一节点将第一区块提交之前,还包括:
所述第一节点确定所述第一区块通过所述区块链网络的共识验证;或者
所述第一节点接收第三节点发送的第一区块,并根据所述第一节点的最高区块对所述第一区块验证通过;所述第三节点是所述第一节点的父节点。
3.如权利要求1所述的方法,其特征在于,所述第一节点将所述第一区块的块高发送至第二节点之前,还包括:
所述第一节点确定与所述第二节点之间连通成功。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
所述第一节点若确定与所述第二节点之间连通失败,则根据所述关系树确定所述第二节点的子节点;
所述第一节点确定与所述第二节点的子节点之间的连通状态,直至确定出连通成功的第四节点,将所述第一区块的块高发送至所述第四节点。
5.如权利要求1所述的方法,其特征在于,所述第二节点是所述第一节点根据区块链网络的关系树确定的子节点,包括:
所述第一节点从所述第一区块中读取节点列表;所述节点列表指示在提交所述第一区块时所述区块链网络中包含的所有节点、所述所有节点的连接关系;
所述第一节点根据所述所有节点、所述所有节点的连接关系,确定所述关系树;
所述第一节点根据所述关系树,将所述关系树中所述第一节点的子节点确定为所述第二节点。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
所述第一节点向第五节点广播第一区块的块高;所述第五节点是所述第一节点根据所述节点列表确定的与所述第一节点相邻的节点;
所述第一节点在接收到第二同步请求之后,将所述第二同步请求中块高对应的区块发送至所述第五节点;所述第二同步请求是所述第五节点在确定所述第一区块的块高高于所述第五节点的最高区块的块高之后发送的。
7.如权利要求1至6任一项所述的方法,其特征在于,所述区块链网络中包括多个共识节点,每个共识节点对应一个关系树,且共识节点是与所述共识节点对应关系树的根节点;任一个关系树中,所述关系树包括多层父子关系,且每层父子关系中的父节点对应多个子节点。
8.一种区块同步的装置,其特征在于,包括:
处理单元和收发单元;
所述收发单元在所述处理单元将第一区块提交后,将所述第一区块的块高发送至第二节点;所述第二节点是所述处理单元根据区块链网络的关系树确定的第一节点的子节点;所述关系树用于指示所述区块链网络中相邻节点之间区块同步的父子关系,父节点将区块同步至子节点;
所述收发单元在接收到第一同步请求之后,将所述第一同步请求中块高对应的区块发送至所述第二节点;所述第一同步请求是所述第二节点在确定所述第一区块的块高高于所述第二节点的最高区块的块高之后发送的。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911304348.9A CN111159289B (zh) | 2019-12-17 | 2019-12-17 | 一种区块同步的方法及装置 |
PCT/CN2020/127878 WO2021120925A1 (zh) | 2019-12-17 | 2020-11-10 | 一种区块同步的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911304348.9A CN111159289B (zh) | 2019-12-17 | 2019-12-17 | 一种区块同步的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111159289A true CN111159289A (zh) | 2020-05-15 |
CN111159289B CN111159289B (zh) | 2024-03-01 |
Family
ID=70557526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911304348.9A Active CN111159289B (zh) | 2019-12-17 | 2019-12-17 | 一种区块同步的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111159289B (zh) |
WO (1) | WO2021120925A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708844A (zh) * | 2020-08-24 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置及设备 |
CN111787059A (zh) * | 2020-05-28 | 2020-10-16 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 追块同步方法、装置、电子设备及计算机存储介质 |
CN112104558A (zh) * | 2020-10-30 | 2020-12-18 | 上海交通大学 | 区块链分发网络的实现方法、系统、终端及介质 |
CN112235420A (zh) * | 2020-12-10 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、系统及相关设备 |
CN112765682A (zh) * | 2021-04-07 | 2021-05-07 | 暗链科技(深圳)有限公司 | 区块分布式区块链的区块数据结构、存储介质及电子设备 |
WO2021120925A1 (zh) * | 2019-12-17 | 2021-06-24 | 深圳前海微众银行股份有限公司 | 一种区块同步的方法及装置 |
CN115086350A (zh) * | 2022-06-13 | 2022-09-20 | 杭州复杂美科技有限公司 | 一种区块链节点数据同步方法、设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751248B1 (en) * | 1999-12-07 | 2004-06-15 | Koninklijke Philips Electronics N.V. | Method for nodes in a multi-hop wireless network to acquire and maintain synchronization with a master node |
US20170075941A1 (en) * | 2016-11-28 | 2017-03-16 | Keir Finlow-Bates | Consensus system and method for adding data to a blockchain |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN108696589A (zh) * | 2018-05-14 | 2018-10-23 | 百度在线网络技术(北京)有限公司 | 区块链数据传输方法、装置、设备和存储介质 |
CN109145188A (zh) * | 2018-08-03 | 2019-01-04 | 上海点融信息科技有限责任公司 | 用于搜索区块链数据的方法、设备及计算机可读存储介质 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
CN109587263A (zh) * | 2018-12-20 | 2019-04-05 | 众安信息技术服务有限公司 | 一种区块同步方法及系统 |
CN109639550A (zh) * | 2018-12-06 | 2019-04-16 | 北京磁云数字科技有限公司 | 一种多区块链网络组网方法、装置及系统 |
WO2019101246A2 (en) * | 2019-03-21 | 2019-05-31 | Alibaba Group Holding Limited | Data isolation in blockchain networks |
CN110365768A (zh) * | 2019-07-15 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 分布式系统的数据同步方法、装置、介质、电子设备 |
CN110493148A (zh) * | 2019-08-12 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种区块处理、区块共识和区块同步方法及装置 |
CN110569305A (zh) * | 2019-08-27 | 2019-12-13 | 网易(杭州)网络有限公司 | 区块同步方法、装置、介质和计算设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159289B (zh) * | 2019-12-17 | 2024-03-01 | 深圳前海微众银行股份有限公司 | 一种区块同步的方法及装置 |
-
2019
- 2019-12-17 CN CN201911304348.9A patent/CN111159289B/zh active Active
-
2020
- 2020-11-10 WO PCT/CN2020/127878 patent/WO2021120925A1/zh active Application Filing
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751248B1 (en) * | 1999-12-07 | 2004-06-15 | Koninklijke Philips Electronics N.V. | Method for nodes in a multi-hop wireless network to acquire and maintain synchronization with a master node |
US20170075941A1 (en) * | 2016-11-28 | 2017-03-16 | Keir Finlow-Bates | Consensus system and method for adding data to a blockchain |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN108696589A (zh) * | 2018-05-14 | 2018-10-23 | 百度在线网络技术(北京)有限公司 | 区块链数据传输方法、装置、设备和存储介质 |
CN109145188A (zh) * | 2018-08-03 | 2019-01-04 | 上海点融信息科技有限责任公司 | 用于搜索区块链数据的方法、设备及计算机可读存储介质 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
CN109639550A (zh) * | 2018-12-06 | 2019-04-16 | 北京磁云数字科技有限公司 | 一种多区块链网络组网方法、装置及系统 |
CN109587263A (zh) * | 2018-12-20 | 2019-04-05 | 众安信息技术服务有限公司 | 一种区块同步方法及系统 |
WO2019101246A2 (en) * | 2019-03-21 | 2019-05-31 | Alibaba Group Holding Limited | Data isolation in blockchain networks |
CN110365768A (zh) * | 2019-07-15 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 分布式系统的数据同步方法、装置、介质、电子设备 |
CN110493148A (zh) * | 2019-08-12 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种区块处理、区块共识和区块同步方法及装置 |
CN110569305A (zh) * | 2019-08-27 | 2019-12-13 | 网易(杭州)网络有限公司 | 区块同步方法、装置、介质和计算设备 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021120925A1 (zh) * | 2019-12-17 | 2021-06-24 | 深圳前海微众银行股份有限公司 | 一种区块同步的方法及装置 |
CN111787059A (zh) * | 2020-05-28 | 2020-10-16 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 追块同步方法、装置、电子设备及计算机存储介质 |
CN111787059B (zh) * | 2020-05-28 | 2023-03-03 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 追块同步方法、装置、电子设备及计算机存储介质 |
CN111708844A (zh) * | 2020-08-24 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置及设备 |
CN112104558A (zh) * | 2020-10-30 | 2020-12-18 | 上海交通大学 | 区块链分发网络的实现方法、系统、终端及介质 |
CN112104558B (zh) * | 2020-10-30 | 2021-09-07 | 上海交通大学 | 区块链分发网络的实现方法、系统、终端及介质 |
CN112235420A (zh) * | 2020-12-10 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、系统及相关设备 |
WO2022121538A1 (zh) * | 2020-12-10 | 2022-06-16 | 腾讯科技(深圳)有限公司 | 基于区块链的数据同步方法、系统及相关设备 |
CN112765682A (zh) * | 2021-04-07 | 2021-05-07 | 暗链科技(深圳)有限公司 | 区块分布式区块链的区块数据结构、存储介质及电子设备 |
CN115086350A (zh) * | 2022-06-13 | 2022-09-20 | 杭州复杂美科技有限公司 | 一种区块链节点数据同步方法、设备及存储介质 |
CN115086350B (zh) * | 2022-06-13 | 2024-01-19 | 亿度科创(深圳)有限公司 | 一种区块链节点数据同步方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111159289B (zh) | 2024-03-01 |
WO2021120925A1 (zh) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111159289B (zh) | 一种区块同步的方法及装置 | |
CN109995850B (zh) | 一种区块链系统及区块链系统的交易处理方法 | |
CN107040594B (zh) | 基于pbft的许可区块链节点准入的方法及装置 | |
CN109508968B (zh) | 区块链系统以及其控制方法 | |
CN110474846B (zh) | 一种区块链中区块传播的方法及装置 | |
CN110866825A (zh) | 基于公链的区块链信息存储方法及系统 | |
CN107181637B (zh) | 一种心跳信息发送方法、装置及心跳发送节点 | |
CN108090222B (zh) | 一种数据库集群节点间数据同步系统 | |
CN111556133B (zh) | 区块链共识方法、系统及计算机存储介质、电子设备 | |
CN108985740B (zh) | 高性能共识算法的实现方法 | |
CN111314479A (zh) | 一种数据处理方法和设备 | |
CN110837505B (zh) | 状态数据存储方法、状态数据同步方法、设备和存储介质 | |
EP3713195B1 (en) | Log processing method, related device, and system | |
CN115328579B (zh) | 神经网络训练的调度方法、系统及计算机可读存储介质 | |
CN110874351A (zh) | 工作量证明协同工作方法、区块链节点及区块链系统 | |
CN115426353A (zh) | 一种融合区块链状态分片和信誉机制的联邦学习架构构建的方法 | |
CN109496407B (zh) | 区块链系统中的消息传输方法、装置及存储介质 | |
CN113179166B (zh) | 基于高鲁棒性拜占庭容错的联盟链数据安全实时上链方法 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN111061813A (zh) | 用于区块链网络中的数据同步的方法、装置和计算设备 | |
CN115037472B (zh) | 基于双层dag共识机制的交易处理方法及系统、服务设备 | |
CN110730241A (zh) | 面向全局规模的区块链基础设施 | |
CN112398640B (zh) | 一种优化的区块链共识算法 | |
CN112751890B (zh) | 数据传输的控制方法和装置 | |
CN114996350A (zh) | 一种区块链中的区块状态同步方法及第一节点 |
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 |