基于DHT的区块链存储扩展方法、电子设备及存储介质与流程

文档序号:30447615发布日期:2022-06-18 01:05阅读:127来源:国知局
基于dht的区块链存储扩展方法、电子设备及存储介质
技术领域
:1.本技术涉及区块链
技术领域
:,具体涉及一种基于dht的区块链存储扩展方法、电子设备及存储介质。
背景技术
::2.目前区块链技术以其匿名、可追溯、不可篡改、去中心化等特性在金融、农产品流通、智能电网和工业互联网等领域有着广泛的应用前景与实用价值。区块链网络的去中心化特性依赖于特定的协议。3.dht(distributedhashtable)技术,中文名为分布式哈希表,是一种对分布式资源进行组织、管理与发现服务的技术。采用dht技术的网络中每一个节点均负责一小部分路由和储存一部分数据,在没有中性化服务器场景中使用特定的查找机制在各节点接力协助下最终获取到特定的存储资源。相应地,dht技术也可以将特定的资源通过某种映射机制存储的对应的网络节点上。dht技术有很多p2p协议实现,著名的有can,chord,pastry,tapestry,kademlia。4.为了实现去中心化和防篡改的目的,区块链采取了在每个网络节点上都存储一份完整的区块链数据的存储策略,这种存储策略带来的优势是每个节点都可以很方便地对交易或新生成的区块进行独立验证,防止恶意节点对区块链数据进行篡改,然而随着区块链数据的急剧增长,这种存储策略的缺点日渐显现出来。5.以比特币为例:比特币每秒平均交易不到3.5笔,即使按照这个速度,节点平均每天也需要消耗近160mb的存储空间,大约60gb/年。截至2021年5月5日,比特币一共产生了683015个区块,平均区块大小为1.3mb,整个区块链大小已经超过300gb。为了达到最高的安全性和信任度,节点需要浪费超过300gb的存储空间来记录大量无关的交易数据,而整个区块链系统需要使用近9000pb的空间来存储300gb的有效数据,而且随着区块和节点数量不断的增多,存储消耗将持续增加,因此解决区块链的存储问题日渐紧迫。6.为了解决这个问题,需要一个与完整节点行为相同的方案,验证和中继事务,减少存储大小。有一些方案,比如像spv(简单支付验证)这样的轻量级节点,以减少存储大小。然而,这些方案是轻量级节点依赖于完整节点,最终会削弱区块链的去中心化特性。技术实现要素:7.本技术实施例提供一种基于dht的区块链存储扩展方法、电子设备及存储介质,减小了区块链节点的存储压力,降低了区块链系统的存储消耗,同时不会影响区块链系统的去中心化特性。8.一方面,本技术提供一种基于dht的区块链存储扩展方法,应用于区块链系统,所述区块链系统中包括多个区块链节点,所述多个区块链节点分为若干节点集群,每个节点集群存储一份完整的区块链数据,所述基于dht的区块链存储扩展方法包括:9.当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值;10.以所述新区块的哈希值作为所述新区块的区块id,所述区块id以二进制数表示;11.将所述区块id值的最后预设数量位,分别与所述目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储所述新区块的存储位置;12.将所述新区块存储到所述目标区块链节点。13.在本技术一些实施方案中,在当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值之前,所述方法还包括:14.将所述多个区块链节点划分为若干节点集群。15.在本技术一些实施方案中,所述多个区块链节点采用kademlia树的方式组织,每个区块链节点都设有对应唯一的节点id,每个区块链节点的节点id遵循kademlia协议,每个区块链节点在kademlia协议树上的位置是基于区块链节点的节点id得到的,每个区块链的节点id是基于预设的节点标识信息得到的,区块链节点的节点id以二进制数表示。16.在本技术一些实施方案中,所述方法还包括:17.当目标节点集群收到新区块链节点的加入请求时,获取所述新区块链节点的节点标识信息;18.基于所述节点标识信息,确定所述新区块链节点的节点id;19.按照kademlia协议,在kademlia协议树上确定所述新区块链节点在所述目标节点集群中的节点位置;20.基于所述节点位置,在所述目标节点集群中加入所述新区块链节点。21.在本技术一些实施方案中,在所述将所述新区块存储到所述目标区块链节点之后,所述方法还包括:22.在所述目标区块链节点的前后确定所述新区块的若干备份节点;23.在所述若干备份节点分别存储所述新区块,以对所述新区块进行备份。24.在本技术一些实施方案中,所述方法还包括:25.检测所述目标节点集群中各区块链节点的存储压力是否达到预设阈值;26.若是,将所述目标节点集群与所述目标节点集群的相邻节点集群,进行合并重组,得到合并节点集群。27.在本技术一些实施方案中,所述将所述目标节点集群与所述目标节点集群的相邻节点集群,进行合并重组,得到合并节点集群,包括:28.将所述目标节点集群与所述目标节点集群的相邻节点集群中的节点合并成一个更大集群,得到合并节点集群;29.对所述合并节点集群中各区块链节点中保存的同样区块数据进行去重。30.另一方面,本技术提供一种dht的区块链存储扩展装置,应用于区块链系统,所述区块链系统中包括多个区块链节点,所述多个区块链节点分为若干节点集群,每个节点集群存储一份完整的区块链数据,所述基于dht的区块链存储扩展装置包括:31.获取模块,用于当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值,以所述新区块的哈希值作为所述新区块的区块id,所述区块id以二进制数表示;32.确定模块,用于将所述区块id值的最后预设数量位,分别与所述目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储所述新区块的存储位置;33.存储模块,用于将所述新区块存储到所述目标区块链节点。34.在本技术一些实施方案中,所述装置还包括集群划分模块,所述集群划分模块具体用于:35.在当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值之前,将所述多个区块链节点划分为若干节点集群。36.在本技术一些实施方案中,所述多个区块链节点采用kademlia树的方式组织,每个区块链节点都设有对应唯一的节点id,每个区块链节点的节点id遵循kademlia协议,每个区块链节点在kademlia协议树上的位置是基于区块链节点的节点id得到的,每个区块链的节点id是基于预设的节点标识信息得到的,区块链节点的节点id以二进制数表示。37.在本技术一些实施方案中,所述装置还包括节点加入模块,所述节点加入模块具体用于:38.当目标节点集群收到新区块链节点的加入请求时,获取所述新区块链节点的节点标识信息;39.基于所述节点标识信息,确定所述新区块链节点的节点id;40.按照kademlia协议,在kademlia协议树上确定所述新区块链节点在所述目标节点集群中的节点位置;41.基于所述节点位置,在所述目标节点集群中加入所述新区块链节点。42.在本技术一些实施方案中,所述装置还包括备份模块,所述备份模块具体用于:43.在所述将所述新区块存储到所述目标区块链节点之后,在所述目标区块链节点的前后确定所述新区块的若干备份节点;44.在所述若干备份节点分别存储所述新区块,以对所述新区块进行备份。45.在本技术一些实施方案中,所述装置还包括集群动态调整模块,所述集群动态调整模块具体用于:46.检测所述目标节点集群中各区块链节点的存储压力是否达到预设阈值;47.若是,将所述目标节点集群与所述目标节点集群的相邻节点集群,进行合并重组,得到合并节点集群。48.在本技术一些实施方案中,所述集群动态调整模块具体用于:49.将所述目标节点集群与所述目标节点集群的相邻节点集群中的节点合并成一个更大集群,得到合并节点集群;50.对所述合并节点集群中各区块链节点中保存的同样区块数据进行去重。51.另一方面,本技术还提供一种电子设备,所述电子设备包括:52.一个或多个处理器;53.存储器;以及54.一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现第一方面中任一项所述的基于dht的区块链存储扩展方法。55.第四方面,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行第一方面任一项所述的基于dht的区块链存储扩展方法中的步骤。56.本技术实施例中当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值;以新区块的哈希值作为新区块的区块id,区块id以二进制数表示;将区块id值的最后预设数量位,分别与目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储新区块的存储位置;将新区块存储到目标区块链节点。本技术实施例中根据节点的id值将区块链节点分为若干集群,每个节点集群存储一份完整的区块链数据,在新区块产生时,通过对区块id值的最后若干位与集群中节点id值的最后若干位进行异或运算,当异或距离最小(即距离最近)时,确定新区块在节点集群中存储的节点位置,这样减小了区块链节点的存储压力,降低了区块链系统的存储消耗,同时不会影响区块链系统的去中心化特性。附图说明57.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。58.图1是本技术实施例提供的区块链系统的场景示意图;59.图2是本技术实施例中提供的基于dht的区块链存储扩展方法的一个实施例流程示意图;60.图3是本技术实施例中在图1基础上节点集群中新加入的区块链节点的一个实施例流程示意图;61.图4是本技术实施例中二集群网络重组为单一节点集群的一个场景示意图;62.图5是本技术实施例中提供的三种存储方案实验结果对比示意图;63.图6是本技术实施例中提供的基于dht的区块链存储扩展装置的一个实施例结构示意图;64.图7是本技术实施例中提供的电子设备的一个实施例结构示意图。具体实施方式65.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。66.在本技术的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。67.在本技术中,“示例性”一词用来表示“用作例子、例证或说明”。本技术中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本技术,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本技术。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本技术的描述变得晦涩。因此,本技术并非旨在限于所示的实施例,而是与符合本技术所公开的原理和特征的最广范围相一致。68.下面首先对本技术实施例中涉及到的一些基本概念进行介绍:69.dht(distributedhashtable)技术,中文名为分布式哈希表,是一种对分布式资源进行组织、管理与发现服务的技术。采用dht技术的网络中每一个节点均负责一小部分路由和储存一部分数据,在没有中性化服务器场景中使用特定的查找机制在各节点接力协助下最终获取到特定的存储资源。相应地,dht技术也可以将特定的资源通过某种映射机制存储的对应的网络节点上。dht技术有很多p2p协议实现,著名的有can,chord,pastry,tapestry,kademlia。70.区块链是一个信息
技术领域
:的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。71.区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。72.区块链节点(node):节点是区块链分布式系统中的网络节点,是通过网络连接的服务器、计算机、电话等,针对不同性质的区块链,成为节点的方式也会有所不同,以比特币为例,参与交易或挖矿即构成一个节点。73.智能合约:是一套以数字形式定义、传播、验证或执行的约定,包括合约参与方可以在上面执行这些约定的协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。在区块链中智能合约用作管理交易,是以脚本代码为主的一组逻辑规则。程序会在执行交易时读取合约代码,执行并处理结果。智能合约的性质不但可以限于特定于某个应用程序的代码,也可以用于将协议的条款和条件编入交易流程中。74.创世块:区块链账本里第一个区块数据,作为区块链的首区块。75.本技术实施例提供一种基于dht的区块链存储扩展方法、电子设备及存储介质,以下分别进行详细说明。76.请参阅图1,图1为本技术实施例所提供的区块链系统的场景示意图,该区块链系统中包括多个区块链节点(即图1中的集群节点),所述多个区块链节点分为若干节点集群,每个节点集群存储一份完整的区块链数据,区块通过一种特殊的区块-节点映射机制(末位最小异或映射机制)分配到每个节点集群中的区块链节点,同时每个区块链节点将保存完整的区块头信息,这样既减小了节点的存储压力又可以通过保留区块头信息防止了区块链数据遭到篡改。77.本技术实施例中方法可以是其中某个区块链节点对应的电子设备,该电子设备主要用于当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值;以所述新区块的哈希值作为所述新区块的区块id,所述区块id以二进制数表示;将所述区块id值的最后预设数量位,分别与所述目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储所述新区块的存储位置;将所述新区块存储到所述目标区块链节点。78.本技术实施例中,区块链节点可以为电子设备,例如用户终端或服务器,其中,服务器可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本技术实施例中所描述的服务器,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(cloudcomputing)的大量计算机或网络服务器构成。本技术的实施例中,服务器与用户终端之间可通过任何通信方式实现通信,包括但不限于,基于第三代合作伙伴计划(3rdgenerationpartnershipproject,3gpp)、长期演进(longtermevolution,lte)、全球互通微波访问(worldwideinteroperabilityformicrowaveaccess,wimax)的移动通信,或基于tcp/ip协议族(tcp/ipprotocolsuite,tcp/ip)、用户数据报协议(userdatagramprotocol,udp)协议的计算机网络通信等。79.可以理解的是,本技术实施例中所使用的用户终端既包括接收和发射硬件的设备,即具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种用户终端设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备。具体的用户终端具体可以是台式终端或移动终端,用户终端具体可以手机、平板电脑、笔记本电脑等中的一种。80.本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本技术方案一种应用场景,并不构成对本技术方案应用场景的限定,其他的应用环境还可以包括比图1中所示更多或更少的区块链节点,例如图1中仅示出一部分区块链节点,可以理解的,该区块链系统还可以包括更多的区块链节点,具体此处不作限定。81.需要说明的是,图1所示的区块链系统的场景示意图仅仅是一个示例,本技术实施例描述的区块链系统以及场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着区块链系统的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。82.针对区块链系统存在的存储缺陷问题,本技术提出一种基于dht的动态集群节点存储扩展方案,节点的组织方式采用kademlia树,每个节点根据自身的信息如ip地址、mac地址等分配一个唯一的节点id值,节点id值以二进制数表示,根据节点的id值将区块链网络节点分为若干集群,每个节点集群存储一份完整的区块链数据,区块通过一种特殊的区块-节点映射机制分配到每个集群中的节点,同时每个节点将保存完整的区块头信息,这样既减小了节点的存储压力又可以通过保留区块头信息防止了区块链数据遭到篡改。83.具体的,本技术实施例中首先提供一种基于dht的区块链存储扩展方法,该基于dht的区块链存储扩展方法的执行主体为基于dht的区块链存储扩展装置,该基于dht的区块链存储扩展装置应用于电子设备,该基于dht的区块链存储扩展方法包括:当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值;以所述新区块的哈希值作为所述新区块的区块id,所述区块id以二进制数表示;将所述区块id值的最后预设数量位,分别与所述目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储所述新区块的存储位置;将所述新区块存储到所述目标区块链节点。84.如图2所示,为本技术实施例中基于dht的区块链存储扩展方法的一个实施例流程示意图,该基于dht的区块链存储扩展方法包括如下步骤201~204:85.201、当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值。86.其中,目标节点集群为区块链系统中若干节点集群中的一个,目标节点集群可以是在收到交易生成新区块时收到新区块。87.202、以所述新区块的哈希值作为所述新区块的区块id,所述区块id以二进制数表示。88.203、将所述区块id值的最后预设数量位,分别与所述目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储所述新区块的存储位置。89.204、将所述新区块存储到所述目标区块链节点。90.本技术实施例中当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值;以新区块的哈希值作为新区块的区块id,区块id以二进制数表示;将区块id值的最后预设数量位,分别与目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储新区块的存储位置;将新区块存储到目标区块链节点。本技术实施例中根据节点的id值将区块链节点分为若干集群,每个节点集群存储一份完整的区块链数据,在新区块产生时,通过对区块id值的最后若干位与集群中节点id值的最后若干位进行异或运算,当异或距离最小(即距离最近)时,确定新区块在节点集群中存储的节点位置,这样减小了区块链节点的存储压力,降低了区块链系统的存储消耗,同时不会影响区块链系统的去中心化特性。91.在本技术一些实施方案中,在当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值之前,还包括节点集群划分的步骤,即所述方法还包括:将所述多个区块链节点划分为若干节点集群。节点集群的划分规则可以基于预设的数量要求来划分,例如,随机选择预设数量(如30个)区块链节点划分到一个节点集群。92.进一步的,所述多个区块链节点采用kademlia树的方式组织,每个区块链节点都设有对应唯一的节点id,每个区块链节点的节点id遵循kademlia协议,每个区块链节点在kademlia协议树上的位置是基于区块链节点的节点id得到的,每个区块链的节点id是基于预设的节点标识信息得到的,区块链节点的节点id以二进制数表示。93.本技术实施例中,在kaneko提出的区块-节点分配方案的基础上,提出一种末位最小异或映射机制。具体来说,就是当节点集群收到一个新区块时,以新区块hash值作为区块id,区块id值以二进制数表示,通过对区块id值的最后若干位与节点集群中节点id值的最后若干位进行异或运算,当异或距离最小(即距离最近)时,此时的区块链节点即是区块存储的位置。94.如图1所示,图1展示了四个区块被映射到一共有两个集群共8个区块链节点的kademlia树上的过程,其中区块id中的x代表最后两位之前的若干位。可以看的整个区块链节点分为两个节点集群,每个节点集群最多有四个区块链节点,所以只需按照节点id的后log24=2位进行区块分配即可,分配原则采用末位最小异或映射机制,最终每个节点集群都存储了一份完整的区块链数据。95.在本技术一些实施例中,对于新加入的区块链节点,可以通过一定的方式确定节点的位置,具体的,如图3所示,所述方法还可以进一步包括如下步骤301~:96.301、当目标节点集群收到新区块链节点的加入请求时,获取所述新区块链节点的节点标识信息。97.302、基于所述节点标识信息,确定所述新区块链节点的节点id。98.303、按照kademlia协议,在kademlia协议树上确定所述新区块链节点在所述目标节点集群中的节点位置。99.具体的,通过对新区块链节点的信息如公网ip地址、内网ip地址、内网占用的端口号等信息进行哈希(如sha1)计算,得到一个160位的全网唯一的节点id,根据新区块链节点的id为新区块链节点分配其所属的kademlia协议树位置,即为新区块链节点在所述目标节点集群中的节点位置。100.304、基于所述节点位置,在所述目标节点集群中加入所述新区块链节点。101.为了防止某些区块链节点的宕机影响整个节点集群的正常运行,本技术实施例中节点集群可以进一步采取冗余备份机制,每个新生成的区块将会在距离最近的区块链节点前后备份若干份(例如kademlia算法备份数为20份,即选择20个最近的区块链节点备份区块)。102.具体的,即在所述将所述新区块存储到所述目标区块链节点之后,所述方法还包括:在所述目标区块链节点的前后确定所述新区块的若干备份节点;在所述若干备份节点分别存储所述新区块,以对所述新区块进行备份。103.在区块链初期,由于存储压力小,节点集群内的区块链节点数目比较少;之后,随着区块高度的增加,且由于区块链采用了仅追加的存储机制,区块链数据将只增加不减少,节点集群内的区块链节点存储压力将越来越大,最终导致集群崩溃。针对这种情况,本技术提出了集群节点动态重组机制,在集群节点的存储压力达到特定值后,相邻的两个节点集群将进行重组,形成一个大的节点集群。104.具体的,在本技术一些实施方案中,所述方法还包括:检测所述目标节点集群中各区块链节点的存储压力是否达到预设阈值;若是,将所述目标节点集群与所述目标节点集群的相邻节点集群进行合并重组,得到合并节点集群。105.进一步的,所述将所述目标节点集群与所述目标节点集群的相邻节点集群进行合并重组,得到合并节点集群,包括:将所述目标节点集群与所述目标节点集群的相邻节点集群中的节点合并成一个更大集群,得到合并节点集群;对所述合并节点集群中各区块链节点中保存的同样区块数据进行去重。106.如图4所示,图4展示了一个二集群网络重组为单一节点集群的案例,其中a-h为8个不同的区块,区块id值分别为x000、x001、x010、x011、x100、x101、x110、x111,x代表除了前面的若干位数。107.通过这个案例可以看到,当节点集群中节点个数为4时,根据末位最小异或映射机制,区块的分配只需要比较区块id和节点id的后log24=2位的异或距离,最终每个区块链节点分配到了两个区块,这时节点集群中的区块链节点存储压力达到阈值,需要扩大节点集群的区块链节点个数,从而减小节点集群中每个区块链节点的存储压力,这就需要两个集群节点进行重组,重组后的集群节点个数变为8,区块分配将比较区块id和节点id的后log28=3位的异或距离。由于采用了末位最小异或映射机制,在两个节点集群重组时,区块链节点之间不必进行数据交换,只需将距离区块链节点较远的区块数据删除就能完成节点集群的重组,最终每个区块链节点的存储量减为原来的一半,重组后的大节点集群将共同保存一份完整的区块链数据,通过这种节点动态重组机制既减轻了集群节点的存储压力,同时又没有增加区块链网络的传输压力。108.进一步,本技术实施例中在32个节点的区块链网络中进行了对本技术专利提出的基于dht的存储扩展方案进行了仿真实验,并且与比特币原生存储策略、基于chord的存储扩展方案对比,实验指标为区块链网络节点的存储规模。仿真实验的参数设置如表1所示,每个节点的的最大存储为256mb,每个区块大小设定为1mb,区块链网络节点设定为32个节点,chord存储扩展方案的集群节点数设为4,实验结果如图5所示。109.表1仿真参数[0110][0111][0112]如图5所示,可以看到随着区块数量的增多,三种存储策略的存储规模都相应增大,其中比特币原生节点和基于chord方案的节点存储规模与区块数呈线性关系,区别只是基于chord方案的节点增长速度要慢于比特币原生节点,但是最终也突破了节点的存储上限256mb,而基于本文的kademlia存储方案的节点因为采用了动态重组机制,存储潜力相比比特币原生存储方案和chord方案分别提高了700%和100%,实验证明本技术提出的基于dht的存储扩展方案充分挖掘了节点的存储潜力与网络潜力,具有更好存储性能。[0113]为了更好实施本技术实施例中基于dht的区块链存储扩展方法,在基于dht的区块链存储扩展方法基础之上,本技术实施例中还提供一种基于dht的区块链存储扩展装置,该基于dht的区块链存储扩展装置应用于区块链系统,所述区块链系统中包括多个区块链节点,所述多个区块链节点分为若干节点集群,每个节点集群存储一份完整的区块链数据,如图6所示,所述基于dht的区块链存储扩展装置600包括:[0114]获取模块601,用于当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值,以所述新区块的哈希值作为所述新区块的区块id,所述区块id以二进制数表示;[0115]确定模块602,用于将所述区块id值的最后预设数量位,分别与所述目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储所述新区块的存储位置;[0116]存储模块603,用于将所述新区块存储到所述目标区块链节点。[0117]本技术实施例中当目标节点集群收到新区块时,获取模块601从所述新区块的区块头中得到新区块的哈希值;以新区块的哈希值作为新区块的区块id,区块id以二进制数表示;确定模块602将区块id值的最后预设数量位,分别与目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储新区块的存储位置;存储模块603将新区块存储到目标区块链节点。本技术实施例中根据节点的id值将区块链节点分为若干集群,每个节点集群存储一份完整的区块链数据,在新区块产生时,通过对区块id值的最后若干位与集群中节点id值的最后若干位进行异或运算,当异或距离最小(即距离最近)时,确定新区块在节点集群中存储的节点位置,这样减小了区块链节点的存储压力,降低了区块链系统的存储消耗,同时不会影响区块链系统的去中心化特性。[0118]在本技术一些实施方案中,所述装置还包括集群划分模块,所述集群划分模块具体用于:[0119]在当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值之前,将所述多个区块链节点划分为若干节点集群。[0120]在本技术一些实施方案中,所述多个区块链节点采用kademlia树的方式组织,每个区块链节点都设有对应唯一的节点id,每个区块链节点的节点id遵循kademlia协议,每个区块链节点在kademlia协议树上的位置是基于区块链节点的节点id得到的,每个区块链的节点id是基于预设的节点标识信息得到的,区块链节点的节点id以二进制数表示。[0121]在本技术一些实施方案中,所述装置还包括节点加入模块,所述节点加入模块具体用于:[0122]当目标节点集群收到新区块链节点的加入请求时,获取所述新区块链节点的节点标识信息;[0123]基于所述节点标识信息,确定所述新区块链节点的节点id;[0124]按照kademlia协议,在kademlia协议树上确定所述新区块链节点在所述目标节点集群中的节点位置;[0125]基于所述节点位置,在所述目标节点集群中加入所述新区块链节点。[0126]在本技术一些实施方案中,所述装置还包括备份模块,所述备份模块具体用于:[0127]在所述将所述新区块存储到所述目标区块链节点之后,在所述目标区块链节点的前后确定所述新区块的若干备份节点;[0128]在所述若干备份节点分别存储所述新区块,以对所述新区块进行备份。[0129]在本技术一些实施方案中,所述装置还包括集群动态调整模块,所述集群动态调整模块具体用于:[0130]检测所述目标节点集群中各区块链节点的存储压力是否达到预设阈值;[0131]若是,将所述目标节点集群与所述目标节点集群的相邻节点集群,进行合并重组,得到合并节点集群。[0132]在本技术一些实施方案中,所述集群动态调整模块具体用于:[0133]将所述目标节点集群与所述目标节点集群的相邻节点集群中的节点合并成一个更大集群,得到合并节点集群;[0134]对所述合并节点集群中各区块链节点中保存的同样区块数据进行去重。[0135]本技术实施例还提供一种电子设备,其集成了本技术实施例所提供的任一种基于dht的区块链存储扩展装置,所述电子设备包括:[0136]一个或多个处理器;[0137]存储器;以及[0138]一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行上述基于dht的区块链存储扩展方法实施例中任一实施例中所述的基于dht的区块链存储扩展方法中的步骤。[0139]本技术实施例还提供一种电子设备,其集成了本技术实施例所提供的任一种基于dht的区块链存储扩展装置。如图7所示,其示出了本技术实施例所涉及的电子设备的结构示意图,具体来讲:[0140]该电子设备可以包括一个或者一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702、电源703和输入单元704等部件。本领域技术人员可以理解,图7中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:[0141]处理器701是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器701可包括一个或多个处理核心;优选的,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。[0142]存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。[0143]电子设备还包括给各个部件供电的电源703,优选的,电源703可以通过电源管理系统与处理器701逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源703还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。[0144]该电子设备还可包括输入单元704,该输入单元704可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。[0145]尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能,如下:[0146]当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值;以新区块的哈希值作为新区块的区块id,区块id以二进制数表示;将区块id值的最后预设数量位,分别与目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储新区块的存储位置;将新区块存储到目标区块链节点。[0147]本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。[0148]为此,本技术实施例提供一种计算机可读存储介质,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行本技术实施例所提供的任一种基于dht的区块链存储扩展方法中的步骤。例如,所述计算机程序被处理器进行加载可以执行如下步骤:[0149]当目标节点集群收到新区块时,从所述新区块的区块头中得到新区块的哈希值;以新区块的哈希值作为新区块的区块id,区块id以二进制数表示;将区块id值的最后预设数量位,分别与目标节点集群中各区块链节点的节点id值的最后预设数量位进行末位最小异或运算,确定异或距离最小的目标区块链节点为存储新区块的存储位置;将新区块存储到目标区块链节点。[0150]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。[0151]具体实施时,以上各个单元或结构可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元或结构的具体实施可参见前面的方法实施例,在此不再赘述。[0152]以上各个操作的具体实施可参见前面的实施例,在此不再赘述。[0153]以上对本技术实施例所提供的一种基于dht的区块链存储扩展方法、电子设备及存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1