发布信息

一种区块链数据分布式存储方法、设备和存储介质与流程

作者:admin      2022-07-30 14:19:47     805



计算;推算;计数设备的制造及其应用技术1.本发明属于计算机技术领域,尤其涉及一种区块链数据分布式存储方法、设备和存储介质。背景技术:2.目前的区块链数据存储,都是每个节点都维护一份独立的数据,且所有节点维护的数据应该一致。所有节点都维护一份独立的数据的优势在于验证数据时不需要依赖于网络和其他节点的可靠性。但缺点也很明显,区块链节点存在持续增长的可能,因此就存在成千上万份数据备份,更重要的是区块数据是从区块链存在以来的所有历史数据,随着区块链网络的不断运行,区块链数据的规模会持续增长,需要存储的数据也会持续增加,普通节点仅仅要保存这些数据就要使用大量的磁盘空间,当数据量增大到一定程度时,普通节点很难保存如此大的量级的数据。3.目前现有的许多区块链会采用例如轻量化节点等模式,然后这样节点在验证数据时需要依赖网络和其他节点的可靠性,增加了节点间的交互,占用网络,而且数据的可靠性依赖于其他节点。技术实现要素:4.本发明提供一种区块链数据分布式存储方法、设备和存储介质,通过将历史区块数据归档打包并且进行分片式存储,减少历史区块数据在区块链网络中的备份数量,减轻了单节点的硬盘需求,节约了节点部署成本。5.为了解决或部分解决上述技术问题,本发明采用以下技术方案:6.第一方面,本发明提供一种区块链数据分布式存储方法,适用于区块链节点,所述方法包括:7.检查节点本地储存的区块数量,判断区块数量是否已超过安全回滚深度,若是则继续判断超过部分数量是否超过第一数量,若是则从本地储存的区块中根据预设的打包规则打包生成第一归档数据;8.根据所述第一归档数据进行哈希运算获得对应的第一归档数据哈希;9.从节点的本地路由表获取其所储存的各个节点的节点哈希,并计算获取的各个节点的节点哈希与所述第一归档数据哈希的逻辑距离,依据与所述第一归档数据哈希的逻辑距离由近及远选择第二数量个节点哈希对应的节点作为第一节点;其中,所述节点哈希由各个节点的唯一识别标识经哈希运算得到,所述的唯一识别标识为节点id或节点地址,所述本地路由表用于储存区块链中节点的节点信息,所述逻辑距离为两个哈希值的差值并定义两个哈希值的差值较小的为距离较近一方;10.判断当前节点是否属于所述第一节点,是则储存所述第一归档数据设置有效期为第一时长并将所述第一归档数据哈希存入节点的归档数据-归档数据哈希映射表并与所述第一归档数据对应,将所述第一归档数据发送至其余各个第一节点以储存所述第一归档数据;否则在第一时长后删除所述第一归档数据,并将所述第一归档数据发送至各个第一节点以储存所述第二归档数据;所述归档数据-归档数据哈希映射表用于储存各归档数据对应的归档数据哈希;11.在到达备份核对周期时,遍历节点中储存的所有归档数据,根据归档数据-归档数据哈希映射表将节点储存的所有归档数据哈希发送至区块链网络的统计脚本,在接收统计脚本发送的统计结束通知后,根据统计脚本公开的全网归档数据当前备份数量表、节点内预设的预期备份数量和归档数据备份规则为节点中存储的各个归档数据确定第一备份数量;12.根据本地路由表、归档数据-归档数据哈希映射表为节点中储存的每个归档数据确定其对应第一备份数量个的距离最近的节点并发送相应的归档数据备份通知;13.响应于第二节点发送的第二归档数据备份通知,所述第二归档数据备份通知包括所述第二归档数据对应的第二归档数据哈希,判断节点本地储存的各个归档数据对应的哈希是否与所述第二归档数据哈希一致,若不存在一致的,则发送第一备份请求至第二节点,若存在一致的,则将所述第二归档数据的有效期限延长第一时长;14.接收第三节点发送的第二备份请求,所述第二备份请求包括第三归档数据哈希,根据所述第三归档数据哈希在本地获取第三归档数据发送至所述第三节点以储存所述第三归档数据;15.接收第四节点发送的第四归档数据,计算获得与其对应的第四归档数据哈希,储存所述第四归档数据并设置有效期限为第一时长,将第四归档数据哈希存入所述归档数据-归档数据哈希映射表与所述第四归档数据对应。16.作为优选,根据统计脚本公开的全网归档数据当前备份数量表、节点内预设的预期备份数量和归档数据备份规则为节点中存储的各个归档数据确定第一备份数量包括:17.所述预期备份数量具体包括默认备份数量、最小备份数量和最大备份数量,所述归档数据备份规则包括:18.从全网归档数据当前备份数量表中查询当前归档数据的当前备份数量,若未查询到则采用默认备份数量作为当前数据的第一备份数量,若查询到当前备份数量小于最小备份数量则采用最小备份数量作为当前数据的第一备份数量,若查询到当前备份数量大于最大备份数量则采用最大备份数量作为当前数据的第一备份数量,否则采用查询到当前备份数量作为第一备份数量。19.作为优选,所述打包规则包括从节点本地选取区块高度最小的第一数量个区块的区块内容打包。20.第二方面,提供一种计算机设备,包括一个或多个处理器;21.存储器,用于存储一个或多个程序,22.当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述第一方面所述的方法。23.第三方面,提供一种存储有计算机程序的存储介质,该程序被处理器执行时实现如上述第一方面所述的方法。24.本发明的有益效果在于区块链数据分布式存储方法通过分布式存储方式将安全回滚区间之前的区块进行归档打包,然后分片存储在区块链网络中,不需要每个节点都储存所有的区块数据,提升区块链网络中节点的使用效率,同时减轻了节点的硬盘需求,节约了节点部署成本;同时,采用逻辑距离的方式定位储存节点,与周期性的统计备份,能够实现灵活应对节点宕机退出和新节点加入的情况,由于周期性的统计备份,归档数据的备份处于一种动态的平衡,使得现有节点宕机不会对原有归档数据的储存产生,而新节点加入也不会影响原有数据的定位查询,且能够快速获取数据,保证区块链的稳定性。附图说明25.图1为本发明一实施例提供的一种区块链数据分布式存储方法的流程图;26.图2为本发明一实施例提供的一种计算机设备的结构示意图。具体实施方式27.以下结合具体实施例和说明书附图对本发明作出进一步清楚详细的描述说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。此外,下述说明中涉及到的本发明的实施例通常仅是本发明一部分的实施例,而不是全部的实施例。因此,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。如无特殊说明,本发明实施例所简述的方法均为本领域技术人员所掌握的方法。28.图1为本发明一实施例提供的一种区块链数据分布式存储方法的流程图。29.作为本发明的以实施例,提供一种区块链数据分布式存储方法,如图1所示,适用于区块链节点,所述方法包括:30.检查节点本地储存的区块数量,判断区块数量是否已超过安全回滚深度,若是则继续判断超过部分数量是否超过第一数量,若是则从本地储存的区块中根据预设的打包规则打包生成第一归档数据;31.根据所述第一归档数据进行哈希运算获得对应的第一归档数据哈希;32.从节点的本地路由表获取其所储存的各个节点的节点哈希,并计算获取的各个节点的节点哈希与所述第一归档数据哈希的逻辑距离,依据与所述第一归档数据哈希的逻辑距离由近及远选择第二数量个节点哈希对应的节点作为第一节点;其中,所述节点哈希由各个节点的唯一识别标识经哈希运算得到,所述的唯一识别标识为节点id或节点地址,所述本地路由表用于储存区块链中节点的节点信息,所述逻辑距离为两个哈希值的差值并定义两个哈希值的差值较小的为距离较近一方;33.判断当前节点是否属于所述第一节点,是则储存所述第一归档数据设置有效期为第一时长并将所述第一归档数据哈希存入节点的归档数据-归档数据哈希映射表并与所述第一归档数据对应,将所述第一归档数据发送至其余各个第一节点以储存所述第一归档数据;否则在第一时长后删除所述第一归档数据,并将所述第一归档数据发送至各个第一节点以储存所述第二归档数据;所述归档数据-归档数据哈希映射表用于储存各归档数据对应的归档数据哈希;34.在到达备份核对周期时,遍历节点中储存的所有归档数据,根据归档数据-归档数据哈希映射表将节点储存的所有归档数据哈希发送至区块链网络的统计脚本,在接收统计脚本发送的统计结束通知后,根据统计脚本公开的全网归档数据当前备份数量表、节点内预设的预期备份数量和归档数据备份规则为节点中存储的各个归档数据确定第一备份数量;35.根据本地路由表、归档数据-归档数据哈希映射表为节点中储存的每个归档数据确定其对应第一备份数量个的距离最近的节点并发送相应的归档数据备份通知;36.响应于第二节点发送的第二归档数据备份通知,所述第二归档数据备份通知包括所述第二归档数据对应的第二归档数据哈希,判断节点本地储存的各个归档数据对应的哈希是否与所述第二归档数据哈希一致,若不存在一致的,则发送第一备份请求至第二节点,若存在一致的,则将所述第二归档数据的有效期限延长第一时长;37.接收第三节点发送的第二备份请求,所述第二备份请求包括第三归档数据哈希,根据所述第三归档数据哈希在本地获取第三归档数据发送至所述第三节点以储存所述第三归档数据;38.接收第四节点发送的第四归档数据,计算获得与其对应的第四归档数据哈希,储存所述第四归档数据并设置有效期限为第一时长,将第四归档数据哈希存入所述归档数据-归档数据哈希映射表与所述第四归档数据对应。39.具体的,根据统计脚本公开的全网归档数据当前备份数量表、节点内预设的预期备份数量和归档数据备份规则为节点中存储的各个归档数据确定第一备份数量包括:40.所述预期备份数量具体包括默认备份数量、最小备份数量和最大备份数量,所述归档数据备份规则包括:41.从全网归档数据当前备份数量表中查询当前归档数据的当前备份数量,若未查询到则采用默认备份数量作为当前数据的第一备份数量,若查询到当前备份数量小于最小备份数量则采用最小备份数量作为当前数据的第一备份数量,若查询到当前备份数量大于最大备份数量则采用最大备份数量作为当前数据的第一备份数量,否则采用查询到当前备份数量作为第一备份数量。42.具体的,所述打包规则包括从节点本地选取区块高度最小的第一数量个区块的区块内容打包。43.更具体的,假设当前区块高度为15160,安全回滚深度为1000,第一数量设定为100,上次归档数据是13901-14000,第一时长设置为2小时,第二时长设置为一天,备份周期与第一时长一致,默认备份数量、最小备份数量和最大备份数量分别为20、10、30,第二数量通常与默认备份数量一致,设置了安全回滚深度和打包规则的目的在于保留最新的一定数量区块不归档打包,这里就是保证至少最新的1000个区块不打包,第一数量设定了每次归档打包的数量,这里每次归档100个区块,此时,未归档的数据已经超过1100个了,满足了要归档的条件,根据打包规则节点就要把未归档的最早的100个区块数据即区块14001-14100归档打包,记为chunk1(14001-14100),计算chunk1的哈希得到hash(chunk1),节点根据本地路由表和hash(chunk1)找出逻辑距离最近的20个节点,假设是n1-n20,然后节点判断一下是否属于n1-n20,例如现节点为n29,那么不属于最近的20个节点,就把chunk1发送给n1-n20,自己则在一天后删除chunk1,如果是的话就储存chunk1(14001-14100)设置有效时长为2小时,然后把hash(chunk1)存入归档数据-归档数据哈希映射表并与chunk1对应关联起来,再把chunk1发给剩余的19个节点,自身也不用删除chunk1。事实上,节点哈希是固定了,因为节点哈希由各个节点的唯一识别标识经哈希运算得到,的唯一识别标识为节点id或节点地址,那么可以视为节点的位置是固定的,本技术的原理是把归档数据哈希落在某两个节点哈希之间的归档数据存入这两个节点以及两个节点附近的几个节点,这个附近指的是节点哈希的值接近,那么查询的时候也是通过归档数据哈希找到最接近的节点,若没找到再扩大范围寻找其他的节点。44.在离上一次备份过了2小时后,整个区块链网络进行再次备份,节点遍历其中储存的所有归档数据,比如有chunk2-chunk10,然后节点根据归档数据-归档数据哈希映射表将储存的所有归档数据哈希及hash(chunk2)-hash(chunk10)发送至区块链网络的统计脚本,在接收统计脚本发送的统计结束通知后,节点为chunk2-chunk10确定备份的数量,然后根据各个归档数据的备份数量向最近的备份数量个节点发送备份通知,以chunk2为例,节点先用hash(chunk2)查询接收统计脚本公开的全网归档数据当前备份数量表,找到chunk2的当前备份数量,假设5份,那么这个备份数少于最小备份数量10份,所以根据归档数据备份规则,chunk2的备份数量应该为10,节点选择10个离hash(chunk2)最近的10节点进行备份,同样的还要判断当前节点是否属于最近的10节点之中,具体过程与上述存储过程近似就不再赘述。同理推导可知,如果chunk2的当前备份数量是15份,那么就选择15个节点进行备份,如果是40份,那么就选择30个节点进行备份,如果没有查询到chunk2说明数据刚存入还没备份,那就采用默认备份数量20。45.同时,节点也会收到其他节点发送的备份通知,此时,节点就要确认本节点中是否有需备份的归档数据,如果有就延迟该数据的有效期限,如果没有就发送备份请求到发送备份通知的节点,以获取归档数据然后设置对应的有效期。46.本实施例的优势就在于,节点中存储的归档数据是动态的,在没有收到备份通知时,归档数据会到期失效,整体上区块链网络中的归档数据是动态平衡的,备份的数量在设定的备份数量区间内的,实现灵活应对节点宕机退出和新节点加入的情况,由于周期性的统计备份,归档数据的备份处于一种动态的平衡,使得现有节点宕机不会对原有归档数据的储存产生,而新节点加入也不会影响原有数据的定位查询,且能够快速获取数据,保证区块链的稳定性。另一方面,分布式储存的方式不需要每个节点都储存所有的区块数据,提升区块链网络中节点的使用效率,同时减轻了节点的硬盘需求,节约了节点部署成本。47.图2为本发明一实施例提供的一种设备的结构示意图。48.如图2所示,作为本发明的又一实施例,提供一种计算机设备100,包括一个或多个中央处理单元(cpu)101,其可以根据存储在只读存储器(rom)102中的程序或者从存储部分108加载到随机访问存储器(ram)103中的程序而执行各种适当的动作和处理。在ram103中,还存储有设备100操作所需的各种程序和数据。cpu101、rom102以及ram103通过总线104彼此相连。输入/输出(i/o)接口105也连接至总线104。49.以下部件连接至i/o接口105:包括键盘、鼠标等的输入部分106;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分107;包括硬盘等的存储部分108;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分109。通信部分109经由诸如因特网的网络执行通信处理驱动器110也根据需要连接至i/o接口105。可拆卸介质111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器110上,以便于从其上读出的计算机程序根据需要被安装入存储部分108。50.特别地,根据本技术公开的实施例,上述实施例1所描述的方法可以被实现为计算机软件程序。例如,本技术公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分109从网络上被下载和安装,和/或从可拆卸介质111被安装。51.作为又一方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本技术的方法。52.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。53.描述于本技术实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。54.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本技术构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部