CN113220790A - 基于区块链的区块并发同步方法 - Google Patents
基于区块链的区块并发同步方法 Download PDFInfo
- Publication number
- CN113220790A CN113220790A CN202110617036.4A CN202110617036A CN113220790A CN 113220790 A CN113220790 A CN 113220790A CN 202110617036 A CN202110617036 A CN 202110617036A CN 113220790 A CN113220790 A CN 113220790A
- Authority
- CN
- China
- Prior art keywords
- block
- height
- local
- data buffer
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 239000000872 buffer Substances 0.000 claims abstract description 54
- 238000012795 verification Methods 0.000 claims abstract description 14
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 230000008520 organization Effects 0.000 claims description 5
- 230000033764 rhythmic process Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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
-
- 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/23—Updating
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Abstract
本发明属于区块链技术领域,尤其为一种基于区块链的区块并发同步方法,该方法首先建立区块数据缓冲堆,然后该节点查询本地区块高度,并向其它节点发出请求,下载高于本地区块高度的区块,该节点收到下载的区块后,执行所下载区块内的交易验证,并对所处理的区块进行本地区块状态更新,在同步过程中获取的区块数据,不拘泥于对区块进行逐个同步,可跳过已完成的区块验证阶段,直接提交数据并入区块链,提高了对获取的区块的处理速度,能够对区块链网络中节点的区块状态同步流程加速,解决了传统区块同步数据中同步区块速度过慢,可能被某个区块处理时间过长而陷入拖慢整体节奏的问题。
Description
技术领域
本发明属于区块链技术领域,具体涉及一种基于区块链的区块并发同步方法。
背景技术
区块同步是区块链技术中非常重要的流程,区块同步从功能上分为交易同步和状态同步,其中,交易同步是在交易提交时执行,优先保证交易能发往所有的节点被打包处理,区块状态同步是让区块链节点的数据状态保持在最新,而只有拥有最新状态的节点,才能参与到共识中去,进行下一个新区块的共识。
一些情况下,某些节点的区块状态不是最新的,比如,在区块链运行过程中,当一个全新的节点加入到区块链上,或一个已经断网的节点恢复了网络,此节点的区块状态就不是最新的,此时就需要进行区块状态同步。
判别某节点区块状态是否同步的重要标识之一就是区块高度,目前,当某节点区块高度落后于其它节点,区块状态同步过程为:(1)当该节点发现自己区块高度落后于全网时,通过状态同步快速追回到全网最高的高度,在区块状态同步过程中,该需要进行区块状态同步的节点会主动向其它节点请求下载区块,整个下载过程会将网络请求负载分散到多个节点上;(2)该节点建立一个本地缓冲队列,对从其他节点下载来的区块进行缓冲和排序,排序完成的区块会依次被本地节点验证和执行,验证通过后,更新本地的数据状态,让区块链的块高增加,直至更新到最新块,块高达到最高。
现有的这种区块状态的同步方法有个显而易见的性能瓶颈,那就是区块是按序逐个被节点处理的,即便本地缓冲队列长度非常高,但无法加速节点对于整个区块账本的同步速度,而若某个区块的处理时间是其他区块的好几倍,那么,整个区块同步的时间也会随之拉长,导致区块状态同步的效率较低。
现有技术中,公开号为CN107918666A的中国专利文献记载了一种区块链上的数据同步方法和系统,其通过设置中间件来获取智能合约对应的数据结构定义,能够避免编写和调用大量仅用于数据同步的智能合约接口,能够提高获取待同步数据的速度,但是该专利文献仅仅是提高了待同步数据的获取速度,不能提高这些待同步数据的处理速度。
发明内容
本发明旨在提供一种基于区块链的区块并发同步方法,解决现有技术中区块状态同步效率低下的技术问题。
为解决上述技术问题,本发明采用以下技术方案:
提供一种基于区块链的区块并发同步方法,包括以下步骤:
(1)建立区块数据缓冲堆,该区块数据缓冲堆的长度在该节点当前可用的逻辑CPU数量范围内;
(2)该节点查询本地区块高度,并向其它节点发出请求,下载高于本地区块高度的区块,且请求下载的区块数量与该节点当前可用的逻辑CPU数量相同;
(3)该节点收到下载的区块后,执行所下载区块内的交易验证,验证过程中:
(3.1)若某区块验证成功,且该验证成功的区块高度与本地区块高度差大于1,则将该区块插入所述区块数据缓冲堆,验证成功后的区块以最小堆的组织形式储存在所述区块数据缓冲堆中;
(3.2)若某区块验证成功,且该验证成功的区块高度与本地区块高度差正好为1,且所述区块数据缓冲堆为空,则执行更新本地区块操作;
(3.3)若某区块验证成功,且该验证成功的区块高度与本地区块高度差正好为1,且所述区块数据缓冲堆不为空,则执行更新本地区块操作后,将所述区块数据缓冲堆中区块依次出堆,出堆过程中,若本地当前区块高度与待出堆的区块高度差正好是1,则待出堆的区块执行出堆操作,并提交此出堆的区块更新至本地区块,否则,停止出堆;
(4)重复所述步骤(2)-步骤(3),直至完成本地区块状态同步工作。
优选的,在所述步骤(1)中,所述区块数据缓冲堆长度为该节点当前可用的逻辑CPU数量一致。
优选的,在所述步骤(3)中,该节点对获取的各区块进行同步交易验证。
与现有技术相比,本发明的有益效果是:该基于区块链的区块并发同步方法能够并发处理在同步过程中获取的区块数据,不拘泥于对区块进行逐个同步,该基于区块链的区块并发同步方法可以预先处理当前区块之后的其他不相邻的区块,等到轮到本区块处理时,可迅速的跳过已完成的区块验证阶段,直接提交数据并入区块链,提高了对获取的区块的处理速度,能够对区块链网络中节点的区块状态同步流程进行加速,解决了传统区块同步数据中同步区块速度过慢,可能被某个区块处理时间过长而陷入拖慢整体节奏的问题。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明基于区块链的区块并发同步方法一实施例的流程图。
图2为在区块数据缓冲堆中储存的数据结构图之一。
图3为在区块数据缓冲堆中储存的数据结构图之二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种基于区块链的区块并发同步方法,请参阅图1。
如图1所示,该基于区块链的区块并发同步方法包括以下步骤:
步骤S100:建立区块数据缓冲堆,该区块数据缓冲堆的长度在该节点当前可用的逻辑CPU 数量范围内。
该步骤中所建立的区块数据缓冲堆是为了在后续步骤中缓存已验证过的但未被节点处理的区块。在该步骤中,该节点当前可用的逻辑CPU数量代表了该节点可以并行处理的最大协程数,本实施例中所建立的区块数据缓冲堆的长度与该节点当前可用的逻辑CPU数量相同,如此,该节点在处理后期下载的区块数据过程中的协程数可为最大并发数,亦即该节点系统能够以同时处理数据的最大数量来处理区块数据。
步骤S200:该节点查询本地区块高度,并向其它节点发出请求,下载高于本地区块高度的区块,且请求下载的区块数量与该节点当前可用的逻辑CPU数量相同。
在该步骤中,由于区块高度高于本地区块高度的区块才可能是比本地区块更新的,因此,本步骤中仅请求下载高于本地区块高度的区块。而由于请求下载的区块数量与该节点当前可用的逻辑CPU数量相同,这样,该节点系统能够对所下载的区块数据进行同步处理。
步骤S300:该节点收到下载的区块后,执行所下载区块内的交易验证。
在本步骤中,对所下载区块内的交易进行验证的目的是识别该区块是否属于该区块链,由于区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过对区块头进行哈希计算都可以独立地获取该区块哈希值,因此能够对获取的区块进行验证。
在验证过程中,会出现以下几种情况:
步骤S301:若某区块验证成功,且该验证成功的区块高度与本地区块高度差大于1,则将该区块插入区块数据缓冲堆,验证成功后的区块以最小堆的组织形式储存在区块数据缓冲堆中。
在该步骤中,由于区块链中的区块组织是链条形式的,如果缺少前面的区块,后面的区块是插入不进去的,后一区块的高度比前一区块的高度大1,因此,当某区块与本地区块的高度差大于1,只能暂存在区块数据缓冲堆中。
这里,通过将验证成功后的区块以最小堆的组织形式储存在区块数据缓冲堆中,比如,若当前可用逻辑CPU数量是4,待处理的区块高度为3,2,1,4,则这些区块在区块数据缓冲堆中储存的数据结构为如图2中的数据结构。
这样,能够确保后续步骤中,每次出堆的都是该区块数据缓冲堆中所有数据的最小值,即,出堆的区块为堆中高度最低的区块。
步骤S302:若某区块验证成功,且该验证成功的区块高度与本地区块高度差正好为 1,且区块数据缓冲堆为空,则执行更新本地区块操作。
在该步骤中,对于所验证成功并与本地区块高度差正好为1的区块,说明该区块为与本地区块相邻的区块,能够插入区块链,因此,可执行更新本地区块操作。
步骤S303:若某区块验证成功,且该验证成功的区块高度与本地区块高度差正好为 1,且区块数据缓冲堆不为空,则执行更新本地区块操作后,将区块数据缓冲堆中区块依次出堆,出堆过程中,若本地当前区块高度与待出堆的区块高度差正好是1,则待出堆的区块执行出堆操作,并提交此出堆的区块更新至本地区块,否则,停止出堆。
该步骤中,由于在获取与本地区块高度差正好为1的区块之前,不可避免的可能会遇到比本地区块高度差大于1的区块,这些区块缓存在区块数据缓冲堆中,当本地区块更新后,需要对这些缓存在区块数据缓冲堆中的区块进行再次比对,以及时处理区块数据缓冲堆中的区块数据,并及时腾退区块数据缓冲堆,便于后续区块数据的处理。
步骤S400:重复步骤S200-步骤S300,直至完成本地区块状态同步工作。
该步骤中,通过循环处理,直至对全网中属于该区块链的全部高于本地的区块进行处理,并更新到该节点后,即获取最新的区块状态。
下面结合实例对该基于区块链的区块并发同步方法进行进一步说明:
比如,若该节点可用逻辑CPU数量是4,则建立长度与该节点的可用逻辑CPU数量一致的区块数据缓冲堆;检测到本地区块高度是2,收到并验证通过的区块高度依次为3,5,4,6,则:
当所建立的区块数据缓冲堆为空,则对于高度为3的区块,提交本地区块更新,此时,本地区块高度更新为3,这是由于,本地区块高度是2,并且最开始同步时,区块数据缓冲堆是刚刚通过步骤S100初始化的,区块数据缓冲堆中是没有数据的,而此时并发请求并处理完成的区块顺序依次是3,5,4,6,因此先处理高度为3的区块,而高度为3的区块的高度比本地区块的高度2大1,因此直接执行本地区块更新操作,更新后,本地区块高度为3。
接下来:
对于高度为5的区块,由于此时本地区块高度为3,则将该高度为5的区块插入区块数据缓冲堆,这里,由于区块数据缓冲堆仅插入了一个高度为5的区块,若还插入有其他高度的区块,则对区块数据缓冲堆中的区块的高度进行排序,保证每次出堆的都是区块高度最小的一个区块。
接下来:
对于高度为4的区块,由于其高度比本地目前区块的高度3刚好大1,因此,可将该高度为 4的区块提交到本地进行区块更新,此时,由于区块数据缓冲堆中缓存有区块数据,因此,需检查区块数据缓冲堆中的区块,发现出堆的区块高度是5,正好与本地目前区块的高度相差为1,则将区块数据缓冲堆中高度为5的区块出堆,并提交至本地进行区块更新,此时,本地区块高度为5,而区块数据缓冲堆为空,停止出堆。
接下来:
对于高度为6的区块,由于其高度比本地目前区块的高度5刚好大1,因此,可将该高度为 6的区块提交到本地进行区块更新。
该轮区块数据更新处理完毕后,比如,若此时步骤S200中又收到4个已验证成功的区块高度依次为10,9,8,7,由于本地当前区块高度为6,则,高度为10,9,8的区块依次进入区块数据缓冲堆,高度为10,9,8的区块在区块数据缓冲堆中的数据结构为如图3 所示的数据结构。
当处理到高度为7的区块,由于比本地当前区块的高度6刚好大1,因此可提交区块高度为7的区块进行本地更新,此时本地区块高度为7,并依次出堆高度为8,9,10的区块提交进行本地区块更新,至此,本地区块高度为10。
按照步骤S200-S300继续下一轮区块数据更新处理,直至完成本地区块状态更新。
在区块状态更新过程中,若某组获取的区块高度不连续,部分区块缓存在区块数据缓冲堆中不能被用于更新,则在处理下一轮获取的区块之前,对区块数据缓冲堆进行初始化处理。
可见,该基于区块链的区块并发同步方法能够并发处理在同步过程中获取的区块数据,不拘泥于对区块进行逐个同步,该基于区块链的区块并发同步方法可以预先处理当前区块之后的其他不相邻的区块,等到轮到本区块处理时,可迅速的跳过已完成的区块验证阶段,直接提交数据并入区块链,提高了对获取的区块的处理速度,能够对区块链网络中节点的区块状态同步流程进行加速,解决了传统区块同步数据中同步区块速度过慢,可能被某个区块处理时间过长而陷入拖慢整体节奏的问题。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (3)
1.一种基于区块链的区块并发同步方法,其特征在于,包括以下步骤:
(1)建立区块数据缓冲堆,该区块数据缓冲堆的长度在该节点当前可用的逻辑CPU数量范围内;
(2)该节点查询本地区块高度,并向其它节点发出请求,下载高于本地区块高度的区块,且请求下载的区块数量与该节点当前可用的逻辑CPU数量相同;
(3)该节点收到下载的区块后,执行所下载区块内的交易验证,验证过程中:
(3.1)若某区块验证成功,且该验证成功的区块高度与本地区块高度差大于1,则将该区块插入所述区块数据缓冲堆,验证成功后的区块以最小堆的组织形式储存在所述区块数据缓冲堆中;
(3.2)若某区块验证成功,且该验证成功的区块高度与本地区块高度差正好为1,且所述区块数据缓冲堆为空,则执行更新本地区块操作;
(3.3)若某区块验证成功,且该验证成功的区块高度与本地区块高度差正好为1,且所述区块数据缓冲堆不为空,则执行更新本地区块操作后,将所述区块数据缓冲堆中区块依次出堆,出堆过程中,若本地当前区块高度与待出堆的区块高度差正好是1,则待出堆的区块执行出堆操作,并提交此出堆的区块更新至本地区块,否则,停止出堆;
(4)重复所述步骤(2)-步骤(3),直至完成本地区块状态同步工作。
2.根据权利要求1所述的基于区块链的区块并发同步方法,其特征在于:在所述步骤(1)中,所述区块数据缓冲堆长度为该节点当前可用的逻辑CPU数量一致。
3.根据权利要求1所述的基于区块链的区块并发同步方法,其特征在于:在所述步骤(3)中,该节点对获取的各区块进行同步交易验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110617036.4A CN113220790A (zh) | 2021-06-02 | 2021-06-02 | 基于区块链的区块并发同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110617036.4A CN113220790A (zh) | 2021-06-02 | 2021-06-02 | 基于区块链的区块并发同步方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113220790A true CN113220790A (zh) | 2021-08-06 |
Family
ID=77082474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110617036.4A Pending CN113220790A (zh) | 2021-06-02 | 2021-06-02 | 基于区块链的区块并发同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220790A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110113408A (zh) * | 2019-04-30 | 2019-08-09 | 杭州复杂美科技有限公司 | 一种区块同步方法、设备和存储介质 |
CN110609872A (zh) * | 2019-09-20 | 2019-12-24 | 北京海益同展信息科技有限公司 | 用于同步节点数据的方法和装置 |
CN110781196A (zh) * | 2019-09-06 | 2020-02-11 | 深圳壹账通智能科技有限公司 | 区块链事务处理方法、装置、计算机设备及存储介质 |
CN111444512A (zh) * | 2019-01-17 | 2020-07-24 | 杨税令 | 一种用于区块链的移动端打块方法及系统 |
-
2021
- 2021-06-02 CN CN202110617036.4A patent/CN113220790A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444512A (zh) * | 2019-01-17 | 2020-07-24 | 杨税令 | 一种用于区块链的移动端打块方法及系统 |
CN110113408A (zh) * | 2019-04-30 | 2019-08-09 | 杭州复杂美科技有限公司 | 一种区块同步方法、设备和存储介质 |
CN110781196A (zh) * | 2019-09-06 | 2020-02-11 | 深圳壹账通智能科技有限公司 | 区块链事务处理方法、装置、计算机设备及存储介质 |
CN110609872A (zh) * | 2019-09-20 | 2019-12-24 | 北京海益同展信息科技有限公司 | 用于同步节点数据的方法和装置 |
Non-Patent Citations (1)
Title |
---|
石翔: "fisco bcos区块链的同步及其性能优化方法", 《HTTPS://MP.WEIXIN.QQ.COM/S?__BIZ=MZA3MTI5NJG4MW==&MID=2247485283&IDX=1&SN=C2028923DC7EC7D8BFA808FEBC57E596&CHKSM=9F2EF57FA8597C6911F629B324E466F7058E4AE5DA06AAB8484C1D7DB3203496FFEBD9562ECB&SCENE=21#WECHAT_REDIRECT》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108600353B (zh) | 一种区块链节点的并行块同步方法 | |
CN108776897B (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
US8930584B2 (en) | System and method for providing a linearizable request manager | |
CN112383610B (zh) | 区块链状态数据的同步处理方法及系统 | |
EP3131246B1 (en) | Method, device and storage medium for rapidly synchronizing medium access control address table | |
CN112598525A (zh) | 一种智能合约分簇并行的区块链实现方法及装置 | |
CN102023899B (zh) | 多线程数据同步方法及装置 | |
CN110008206A (zh) | 一种基于区块链系统的数据处理方法及装置 | |
CN105933380A (zh) | 一种数据传输的方法、装置及终端 | |
CN111404818B (zh) | 一种面向通用多核网络处理器的路由协议优化方法 | |
CN113064764A (zh) | 在区块链系统中执行区块的方法及装置 | |
KR20150122119A (ko) | 동시 우선순위 큐에서 시퀀서를 이용하는 시스템 및 방법 | |
CN113220790A (zh) | 基于区块链的区块并发同步方法 | |
CN111259074A (zh) | 区块同步方法、设备和存储介质 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
US7028219B2 (en) | Hybrid method for flushing transaction state in a fault-tolerant clustered database | |
CN110516006B (zh) | 平行链区块生成方法、设备和存储介质 | |
CN111988345B (zh) | 一种信息同步的方法及设备 | |
CN116501799A (zh) | 一种多链场景下的跨链事务分组并行处理方法 | |
CN115168434A (zh) | 一种共享存储集群数据库的数据同步方法及设备 | |
CN111541623B (zh) | 一种数据处理方法及装置 | |
CN112148333A (zh) | 区块链服务器固件更新系统 | |
CN112394951B (zh) | 应用部署方法及服务器集群 | |
CN113391891B (zh) | 基于Rete和字符串模式匹配算法的负载均衡资源调度方法 | |
CN113438631B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210806 |
|
RJ01 | Rejection of invention patent application after publication |