一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于高度的区块链对等网络数据同步方法与流程

2022-05-26 23:21:38 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,尤其涉及一种基于高度的区块链对等网络数据同步方法,适用于区块链对等网络、共识一致的区块链数据同步。


背景技术:

2.数据同步的存在是因为计算机在存储数据的的时候,不同的存储介质读写效率有较大差别,所以缓存的设计被大多数计算机系统采用。存在缓存机制的计算机,在写入数据的时候,系统不会立即将数据写入读写速度慢的存储介质中(如外存),而是保存在读写速度快的存储介质中(如内存);在读取数据的时候,系统会查看读写速度快的存储介质中是否有该数据的备份,如果有则可以直接读取这个备份。这样系统可以减少对外存的访问,大大提高系统性能。
3.区块链网络系统是一种分布式计算和存储系统,在区块链网络系统的每一个核心构成节点上,需要保证存储同样内容的数据拷贝,以确保各个节点处于相同的计算基线。区别于传统的分布式系统,区块链网络系统是对等网络结构,每一个节点都拥有平等的记账权,而数据拷贝的一致性就是平等记账权的前提和基本保证;同时区块链网络系统允许任意节点自由进出,即节点可以随时加入或退出网络,由此可见,区块链网络系统必然涉及到节点间频繁的数据同步操作。因此,需要提出一种能够在对等网络环境下,快速界定节点需要补充的数据拷贝的内容和范围的机制。
4.申请号为cn202110317042.8 的专利申请文件公开了一种数据同步方法、装置、计算机可读介质及电子设备,该方法包括:获取当前区块链节点的请求起始高度和请求结束高度;获取邻接节点的区块高度,邻接节点是与当前区块链节点处于同一区块链网络的其他区块链节点;若邻接节点的区块高度大于当前区块链节点的区块高度,则根据请求起始高度、请求结束高度、预设的滑动窗口尺寸以及邻接节点的区块高度之间的数值关系确定目标高度,目标高度大于请求结束高度;根据目标高度和请求结束高度之间的高度差值对外发送数据同步请求。该方法利用区块链网络中的当前区块链节点和邻接节点的数据资源来实现数据同步,但是该方案没有采用定时轮询补差机制来保证区块链网络中的所有节点都完成数据同步操作,且也没有设计相应的数据存储形式来存储本地的高度数据,在数据同步和存储效率方面有待提高。


技术实现要素:

5.本发明的目的在于克服现有技术的不足,提供一种基于高度的区块链对等网络数据同步方法,在区块链共识一致的前提下,通过高度来判断未知数据集合是否一致,可有效的解决区块链网络节点间数据同步和数据一致性的问题。
6.本发明的目的是通过以下技术方案来实现的:一种基于高度的区块链对等网络数据同步方法,包括以下步骤:步骤一:节点高度计算,计算需被正式记录在账本的账本数据集合高度;
步骤二:主动广播及接收,账本记录者通过消息广播将该账本数据集合高度同该账本数据集合广播给临近账本记录者,临近账本记录者接收广播的消息并存储在本地;步骤三:定时轮询补差,各账本记录者定时向其周边的记账节点发送节点高度查询请求,并根据请求返回节点高度同本地节点高度进行比较,若请求返回节点高度大于本地节点高度,则启动补差机制进行数据同步。
7.具体的,账本数据集合高度具体包括区块链对等网络中该账本数据集合所在归属分区的分区号长度、分区号和数字序号。
8.步骤二还包括:临近记录者将接收到的消息的转发次数减一,对于次数不为零的消息,将其继续转发广播给区块链对等网络中的其他节点;同时临近记录者将接收消息中的账本数据集合存储到本地,并重新计算本地最大连续高度。
9.具体的,计算本地最大连续高度过程具体包括:s1,查找高度s设置为当前分区最大数据集合高度h;本地最大连续高度h同样设置为分区最大数据集合高度h;s2,在本地存储中寻找查找高度s的前序数据集合高度,并赋值给pres,若找到,则执行步骤s3;如未找到,则执行步骤s4;s3,如pres是本分区第一个数据集合高度,则退出计算过程,h为所计算的本地最大连续高度;如不是,则设置s为pres,执行步骤s2;s4,查找高度s的高度值减一,并赋值给h,返回执行步骤s2。
10.具体的,临近记录者将接收消息中的账本数据集合高度存储到本地具体包括:对接收消息中的账本数据集合高度进行分段获得多个数据段,并生成每个数据段对应的段位、段位号和段位内位置号;对每个数据段的段位进行分组,并生成每个分组的分组号和分组内位置号,每一个段位均由8192/8个分组构成;每个分组为一个byte;分组记录段位范围内的二进制位图,1为存在,0为不存在,从左向右,由低位向高位排列,获得每个数据段的段内分组集合;将段位号和段内分组集合建立映射关系存储在kv数据库中。
11.进一步的,上述账本数据集合高度数据存储过程中还包括对给定本地最大连续高度h的本地数据集合检索,该过程具体为:1)通过给定本地最大连续高度h与8192取余,获得段位号seg;2)通过给定本地最大连续高度h与8192取模,获得段位内位置号offset;3)根据段位号seg,检索kv数据库,获得段内分组集合marks;4)通过段位内位置号offset与8192取余,获得分组号partid;5)通过段位内位置号offset与8192取模,获得分组内位置号partpos;6)根据分组号partid在段内分组集合marks中找到对应的段内分组mark,并进一步根据分组内位置号partpos在段内分组mark中找到给定本地最大连续高度h对应的二进制位;7)如二进制位的值为1,则表示存在本地最大连续高度为h的本地数据集合;如为0,则表示不存在。
12.本发明的有益效果:本发明可在区块链网络系统允许任意节点的自由进出的前提下,快速精确的在分布式对等网络系统中评判节点数据是否处于最新的计算基线;同时,也为对等网络中不同
节点间数据复制定义了同步标准和范围,可有效的解决区块链网络节点间数据同步和数据一致性的问题。
附图说明
13.图1是本发明的方法步骤流程图。
具体实施方式
14.为了对本发明的技术特征、目的和有益效果有更加清楚的理解,现对本发明的技术方案精选以下详细说明。显然,所描述的实施案例是本发明一部分实施例,而不是全部实施例,不能理解为对本发明可实施范围的限定。基于本发明的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的其他所有实施例,都属于本发明的保护范围。
15.现有的区块链网络系统是一种分布式计算和存储系统,在区块链网络系统的每一个核心构成节点上,需要保证存储同样内容的数据拷贝,以确保各个节点处于相同的计算基线。区别于传统的分布式系统,区块链网络系统是对等网络结构,每一个节点都拥有平等的记账权,而数据拷贝的一致性就是平等记账权的前提和基本保证;同时区块链网络系统允许任意节点自由进出,即节点可以随时加入或退出网络,由此可见,区块链网络系统必然涉及到节点间频繁的数据同步操作。因此,需要提出一种能够在区块链对等网络环境下,快速界定节点需要补充的数据拷贝的内容和范围的机制。
16.此外,高度与本地数据集合具有映射关系,而非唯一对应关系,即高度相同不必然导致对应的数据集合完全一致(这种情况出现在区块链共识不一致的情形,在共识一致情形下可以说高度唯一代表了数据集合)。一般情况下,区块链网络采用merkel树根哈希(数据摘要 哈希树)来作为数据集合的唯一标识。
17.本发明针对上述区块链网络记账节点之间的数据同步机制的不足,提出一种基于高度的区块链对等网络数据同步方法,适用于区块链对等网络、共识一致的区块链数据同步,在区块链共识一致的前提下,通过高度来判断未知数据集合是否一致,可有效的解决区块链网络节点间数据同步和数据一致性的问题。本发明的详细步骤流程见下列实施例。
18.实施例一:本实施例中,如图1所示,一种基于高度的区块链对等网络数据同步方法,主要包括以下步骤:步骤一:节点高度计算,计算需被正式记录在账本的账本数据集合高度;步骤二:主动广播及接收,账本记录者通过消息广播将该账本数据集合高度同该账本数据集合广播给临近账本记录者,临近账本记录者接收广播的消息并存储在本地;步骤三:定时轮询补差,各账本记录者定时向其周边的记账节点发送节点高度查询请求,并根据请求返回节点高度同本地节点高度进行比较,若请求返回节点高度大于本地节点高度,则启动补差机制进行数据同步。
19.本实施例中,账本数据集合高度具体包括区块链对等网络中该账本数据集合所在归属分区的分区号长度、分区号和数字序号。
20.本实施例中,步骤二还包括:临近记录者将接收到的消息的转发次数减一,对于次数不为零的消息,将其继续转发广播给区块链对等网络中的其他节点;同时临近记录者将
接收消息中的账本数据集合高度存储到本地,并重新计算本地最大连续高度。
21.本实施例中,为了标识单个分区的数据存储情况,定义本地最大连续高度值,即当前分区满足前序链条完整的最大数据集合高度。计算本地最大连续高度过程具体包括:s1,查找高度s设置为当前分区最大数据集合高度h;本地最大连续高度h同样设置为分区最大数据集合高度h;s2,在本地存储中寻找查找高度s的前序数据集合高度,并赋值给pres,若找到,则执行步骤s3;如未找到,则执行步骤s4;s3,如pres是本分区第一个数据集合高度,则退出计算过程,h为所计算的本地最大连续高度;如不是,则设置s为pres,执行步骤s2;s4,查找高度s的高度值减一,并赋值给h,返回执行步骤s2。
22.本实施例中,账本数据是按照《特定高度,账本数据块》键值对的方式存储的,需要快速知道某一个高度对应的账本块是否在本地存储,逐一枚举kv中的key显然是低效的。因此,出于检索效率的要求,将每一高度是否存在表示成位图(0|1串),对位图进行分段,并采用《段号,段内位图》的存储方式,以此来提高数据的检索效率。
23.因此,临近记录者将接收消息中的账本数据集合高度存储到本地具体包括:对接收消息中的账本数据集合高度进行分段获得多个数据段,并生成每个数据段对应的段位、段位号和段位内位置号;对每个数据段的段位进行分组,并生成每个分组的分组号和分组内位置号,每一个段位均由8192/8个分组构成;每个分组为一个byte;分组记录段位范围内的二进制位图,1为存在,0为不存在,从左向右,由低位向高位排列,获得每个数据段的段内分组集合;将段位号和段内分组集合建立映射关系存储在kv数据库中。
24.进一步的,上述账本数据集合高度存储过程中还包括对给定本地最大连续高度h的本地数据集合检索,该过程具体为:1)通过给定本地最大连续高度h与8192取余,获得段位号seg;2)通过给定本地最大连续高度h与8192取模,获得段位内位置号offset;3)根据段位号seg,检索kv数据库,获得段内分组集合marks;4)通过段位内位置号offset与8192取余,获得分组号partid;5)通过段位内位置号offset与8192取模,获得分组内位置号partpos;6)根据分组号partid在段内分组集合marks中找到对应的段内分组mark,并进一步根据分组内位置号partpos在段内分组mark中找到给定本地最大连续高度h对应的二进制位;7)如二进制位的值为1,则表示存在本地最大连续高度为h的本地数据集合;如为0,则表示不存在。
25.实施例二:本实施例中,在实施例一提供方法基础上,对本发明中的相关技术特征和技术手段进行详细说明。
26.本实施例中,高度反应区块链网络系统中账本数据、账本数据集合之间的逻辑顺序。
27.分区拓展后的高度概念,反应了区块链网络系统中达成共识的数据集合的唯一标识。
28.高度可以视为数据集合在不同节点之间同步的基准。不同节点之间数据同步时,使用起始高度、终止高度作为数据同步的标准和范围。每一个节点通过和其他节点交换本地存储的高度信息,来判断自己是否具有和整个网络同步的数据拷贝。
29.区块链网络中数据同步完成的标准是本地最大连续高度和整个网络系统的最大高度一致。
30.高度是区块链网络系统中针对账本数据集合的唯一标记,其格式为“分区号长度” “分区号” “数字序号”,形如:04104058。高度既反应了账本数据集合归属的分区,又反应了账本数据集合之间的逻辑顺序。
31.高度具有可比较性。不同分区的高度比较,以高度的“数字序号”数学大小作为高度大小比较的依据。高度具有不可重复性,相同大小的高度,必然存在于不同的分区。
32.高度在全网范围内连续,但是在同一个分区范围内不连续,即数据集合之间有前后序逻辑关系,但是集合之间高度不邻接。形如“04104058、04104259、04104060”的高度数据片段,全网看来高度连续(数字序号分别为58、59、60),但是对于1040分区,其高度不连续(数字序号为58、60,即便58数据集合是60数据集合的严格前序)。
33.本实施例中,由于数据同步完成的标准是本地最大连续高度和整个网络系统的最大高度一致,因此数据同步方式采取主动广播和定时轮询两种结合。主动广播机制侧重实时数据的快速同步,而定时轮询机制则应对历史数据同步、数据补差等情况的需求。主动广播和定时轮询两种机制的详细设计过程如下:a)主动广播及接收机制当通过共识机制,确定一个数据集合需要被正式记录在账本时,账本记录者会通过消息多播的方式将这个数据集合广播给临近的账本记录者;临近的记录者将接收到的消息的转发次数减一,对于次数不为零的消息,会继续转发广播;同时接收者将数据集合存储本地,并重新计算本地最大连续高度。
34.b)定时轮询补差机制定时轮询任务定期向本分去周边的记账节点发送消息,查询各节点的本地最大连续高度,一旦发现有比自己本地最大连续高度值大的高度,则启动补差机制,从目标节点获取从自己本地最大连续高度到目标节点本地最大连续高度的数据集合,并重新计算自己本地最大连续高度;直至本地最大连续高度不低于其他记账节点停止。
35.本实施例中,分区的高度不会连续存在,为了满足依据高度范围顺序检索和依据高度值快速定位检索的两类需求,借鉴位图的方式来进行当前分区所有高度数据的存储。具体组织形式为:段位:段位表示形如[0,8192)[8192,8192*2)..[)的数值范围;段位号:段位排序号,从0开始递增;段位内位置号:段位内偏移,[0,blocksize);根据段位号 段内位置号唯一确定一个数值。
[0036]
分组:每一个段位均由8192/8个分组构成;每个分组一个byte;分组记录段位范围内的二进制位图,1为存在,0为不存在,从左向右,由低位向高位排列。
[0037]
分组号:段位内的分组排序号,从0开始递增。
[0038]
分组内位置号:分组内偏移,[0,8);根据分组号*8 分组内偏移唯一确定一个位
置,该位置对应标记值是1/0确定了存在性。
[0039]
在kv数据库中的存储格式为《段位号,段内分组集合》,其中段内分组集合为1024个byte。
[0040]
本实施例中,对于给定的高度h,需要检索是否存在本地数据集合,则可通过下列算法获得:1、通过h与8192取余,获得段位号seg;2、通过h与8192取模,获得段位内位置号offset;3、根据seg,检索kv数据库,获得段内分组集合marks;4、通过offset与8192取余,获得分组号partid;5、通过offset与8192取模,获得分组内位置号partpos;6、根据partid在 marks中找到相关的mark(byte),并进一步根据partpos在mark中找到相关二进制位;7、如二进制位的值为1,则表示存在高度h的本地数据集合;如为0,则表示不存在。
[0041]
通过上述实施例,本发明提出了区块链网络系统在分布式条件下,各记账节点之前数据集合同步标准的定义、存储、机制等内容,可在区块链网络系统允许任意节点的自由进出的前提下,快速精确的在分布式对等网络系统中评判节点数据是否处于最新的计算基线;同时,也为对等网络中不同节点间数据复制定义了同步标准和范围。
[0042]
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护的范围由所附的权利要求书及其等效物界定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献