本发明专利技术公开了一种区块存储和查询方法、设备及存储介质,属于区块链技术领域。包括:最新区块H
A block storage and query method, device and storage medium
【技术实现步骤摘要】
一种区块存储和查询方法、设备及存储介质
本专利技术涉及区块链
,尤其涉及一种区块存储和查询方法、设备及存储介质。
技术介绍
现有的区块链系统中,随着区块的不断增加,账本存储空间势必越来越大,然而存储空间总是有限的,这必将会引起空间不足的问题;另外,存储和计算捆绑在一起的方法,不利于资源的充分利用。
技术实现思路
1.专利技术要解决的技术问题为了克服上述技术问题,本专利技术提供了一种区块存储和查询方法、设备及存储介质。可以降低整个网络的存储成本,实现账本的分布式存储,弹性存储和扩容。2.技术方案为解决上述问题,本专利技术提供的技术方案为:一种区块存储方法,包括:最新区块Hi存储在每个存储节点和计算节点上;删除计算节点上存储的区块Hi-H0-1;采用DHT算法将区块Hi-H0-1映射到存储节点,删除没有被映射区块Hi-H0-1的存储节点上存储的区块Hi-H0-1;其中,区块Hi-H0-2及其之前的区块均采用DHT算法映射,并存储到存储节点;每个存储节点和计算节点上均存储区块Hi-1至区块Hi-H0-1;Hi>H0>1,Hi和H0均为整数,H0大于区块回滚区间。可选地,所述DHT算法为KAD算法。可选地,每个存储节点和计算节点上均保存一张KAD路由表。可选地,所述采用DHT算法将区块Hi-H0-1映射到存储节点,进一步为:采用哈希算法计算区块Hi-H0-1哈希值和存储节点ID哈希值;找到与区块Hi-H0-1哈希值最接近的N个存储节点ID哈希值对应的N个存储节点,建立区块Hi-H0-1与存储节点之间的映射关系;N为区块冗余度。可选地,所述区块Hi-H0-2及其之前的区块均采用DHT算法映射,并存储到存储节点,进一步为:采用哈希算法计算区块i哈希值和存储节点ID哈希值;找到与区块i哈希值最接近的N个存储节点ID哈希值对应的N个存储节点,建立区块i与存储节点之间的映射关系;将区块i存储到对应的存储节点上;i=i+1,重复上述步骤,直到i=Hi-H0-2为止;i为整数,取值范围为[1,Hi-H0-2];N为区块冗余度。可选地,当存在所述存储节点离开时,采用KAD算法存储离开节点上存储的区块。可选地,当存在所述存储节点增加时,根据存储节点的种子节点更新新增存储节点的KAD路由表,采用KAD算法重新分配新增存储节点相邻的区块信息。一种区块查询方法,根据以上所述的一种区块存储方法,包括:采用哈希算法计算存储节点ID哈希值和计算节点ID哈希值;分桶建立路由表;向最近的计算节点请求获取区块;将所有的存储节点和计算节点哈希后分桶建立路由表;找到与区块Hn哈希值最近的计算节点ID哈希值对应的计算节点,向所述计算节点请求获取区块Hn,若最近的计算节点上存在区块Hn,则返回区块Hn;若最近的计算节点上不存在区块Hn,则通过KAD路由表迭代查找到最近的保存区块Hn的存储节点,请求获取区块Hn。一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上任一项所述的方法。3.有益效果采用本专利技术提供的技术方案,与现有技术相比,具有如下有益效果:单一节点不再需要存储全账本数据,解决了账本无限膨胀的技术问题;实现了存储和计算节点的分离,最大化了资源的利用,降低了整个网络的存储成本,真正实现了账本的分布式存储,弹性存储和扩容变成可能。附图说明图1为本专利技术提供的一种区块存储方法的流程图。图2为图1所示方法的区块存储情况示意图。图3为图1进一步改进方法的流程图之一。图4为图1进一步改进方法的流程图之二。图5为本专利技术提供的一种区块查询方法的流程图。图6为本专利技术的一种设备结构示意图。图7为实施例3中的区块存储情况示意图。具体实施方式为进一步了解本专利技术的内容,结合附图及实施例对本专利技术作详细描述。下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与专利技术相关的部分。本专利技术中所述的第一、第二等词语,是为了描述本专利技术的技术方案方便而设置,并没有特定的限定作用,均为泛指,对本专利技术的技术方案不构成限定作用。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。实施例1一种区块存储方法,如图1所示,包括:S101、最新区块Hi存储在每个存储节点和计算节点上;S102、删除计算节点上存储的区块Hi-H0-1;S103、采用DHT算法将区块Hi-H0-1映射到存储节点,删除没有被映射区块Hi-H0-1的存储节点上存储的区块Hi-H0-1;其中,区块Hi-H0-2及其之前的区块均采用DHT算法映射,并存储到存储节点;每个存储节点和计算节点上均存储区块Hi-1至区块Hi-H0-1;Hi>H0>1,Hi和H0均为整数,H0大于区块回滚区间,通过对区块回滚区间的限定,将区块数据分成两类:不会更改的历史数据,以及可能回滚的非历史数据,历史数据采用分布式存储方式存储在本申请所述的存储节点上,提高区块数据的冗余度,可以在确保区块数据安全的前提下,节省数据存储空间;非历史数据供高频率的读写和计算使用。单一节点不再需要存储全账本数据,解决了账本无限膨胀的技术问题;实现了存储和计算节点的分离,最大化了资源的利用,降低了整个网络的存储成本,真正实现了账本的分布式存储,弹性存储和扩容变成可能。采用所述区块存储方法后,区块存储情况示意图,如图2所示,区块1至区块Hi-H0-1采用DHT算法映射到存储节点,并存储到对应存储节点上;区块Hi-H0至区块Hi存储在每个存储节点和计算节点上。存储节点和计算节点均可具有区块共识的功能。DHT算法比较典型的方案主要包括:CAN、CHORD、Tapestry、Pastry、Kademlia(简称KAD)和Viceroy等,而Kademlia协议则是其中应用最为广泛、原理和实现最为实用、简洁的一种。本实施例中所述DHT算法为KAD算法,比如eMule、BitTorrent等P2P文件交换系统。每个存储节点和计算节点上均保存一张KAD路由表,所述KAD路由表上存储了节点上存储的区块的关键词Key,以及区块哈希值Hash。步骤S103中,所述采用DHT算法将区块Hi-H0-1映射到存储节点,如图3所示,进一步为:S201、采用哈希算法计算区块Hi-H0-1哈希值和存储节点ID哈希值;S202、找到与区块Hi-H0-1哈希值最接近的N个存储节点ID哈希值对应的N个存储节点,建立区块Hi-H本文档来自技高网...
【技术保护点】
1.一种区块存储方法,其特征在于,包括:/n最新区块H
【技术特征摘要】
1.一种区块存储方法,其特征在于,包括:
最新区块Hi存储在每个存储节点和计算节点上;
删除计算节点上存储的区块Hi-H0-1;
采用DHT算法将区块Hi-H0-1映射到存储节点,删除没有被映射区块Hi-H0-1的存储节点上存储的区块Hi-H0-1;
其中,区块Hi-H0-2及其之前的区块均采用DHT算法映射,并存储到存储节点;每个存储节点和计算节点上均存储区块Hi-1至区块Hi-H0-1;
Hi>H0>1,Hi和H0均为整数,H0大于区块回滚区间。
2.根据权利要求1所述的方法,其特征在于,所述DHT算法为KAD算法。
3.根据权利要求2所述的方法,其特征在于,每个存储节点和计算节点上均保存一张KAD路由表。
4.根据权利要求2所述的方法,其特征在于,所述采用DHT算法将区块Hi-H0-1映射到存储节点,进一步为:
采用哈希算法计算区块Hi-H0-1哈希值和存储节点ID哈希值;找到与区块Hi-H0-1哈希值最接近的N个存储节点ID哈希值对应的N个存储节点,建立区块Hi-H0-1与存储节点之间的映射关系;N为区块冗余度。
5.根据权利要求2所述的方法,其特征在于,所述区块Hi-H0-2及其之前的区块均采用DHT算法映射,并存储到存储节点,进一步为:
采用哈希算法计算区块i哈希值和存储节点ID哈希值;找到与区块i哈希值最接近的N个存储节点ID哈希值对应的N个存储节点,建立区块i与存储节点之间的映射...
【专利技术属性】
技术研发人员:虞康,王志文,吴思进,
申请(专利权)人:杭州复杂美科技有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。