一种可降低区块链存储开销的阶梯式数据存储方法及系统技术方案

技术编号:28941127 阅读:15 留言:0更新日期:2021-06-18 21:45
本发明专利技术公开了一种可降低区块链存储开销的阶梯式数据存储方法及系统,本发明专利技术方法包括主节点每隔指定时间t更新计算各个区块的价值密度,并根据价值密度对各个区块进行分级;针对不同分级的区块采用不同开销的存储方式进行存储。本发明专利技术对区块信息按照价值进行分类,采取不同的存储策略进行存储,即保证数据的一致性、不可篡改性,又大幅度降低了区块链对于普通节点的存储需求,能够解决区块链技术中区块被大量存储在区块链普通节点导致普通节点的存储开销增加的问题,采用多层次数据阶梯式存储技术,有效解决了区块链在链上存储的开销问题。本发明专利技术主要针对联盟链而设计,但同样适用于公有链和私有链。

【技术实现步骤摘要】
一种可降低区块链存储开销的阶梯式数据存储方法及系统
本专利技术涉及区块链技术,具体涉及一种可降低区块链存储开销的阶梯式数据存储方法及系统。
技术介绍
区块链技术在2008年作为比特币的关键数据被中本聪在《比特币:一种点对点的电子现金系统》中提出,其本质是一个去中心化的数据库。通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案,“矿工”验证交易的合法性并通过工作量证明机制将合法交易打包形成区块,后一个区块包含前一个区块的哈希值,链接形成只增的区块链账本,全网中所有普通节点保存区块链账本的一个副本。区块链技术依赖全网中所有普通节点记账,不依赖任何第三方管理机构或硬件设施,只要不能掌握全网51%的普通节点就不能篡改网络中的数据,安全性和可用性都有了明显改善。更重要的,区块链解决了数字世界中脱离第三方的可信问题,不可信的各方可以依赖区块链完成可信交易,在金融、物联网、公共管理等方面有很大的应用前景。区块链技术被提出以后得到广泛关注,并取得了迅速的发展。以太坊(Ethereum)提供了一个开源的智能合约平台,发布专用的加密数字货币以太币(ether)提供去中心化的以太虚拟机来处理点对点的交易合约。以太坊和区块链代表了公有链,可以被任何人读取、发送交易且能获得有效确认的共识区块。与之相对应的私有链指区块链写入权限仅在一个组织手里,读取权限或者对外开放,或者被任意程度地进行了限制。另外,联盟链共识过程受到预选普通节点控制的区块链(例如,有15个金融机构组成一个共同体,每个机构都运行着一个或者多个普通节点,而且为了使每个区块生效需要获得其中10个机构的确认)。区块链的读取权限可以是任意普通节点、参会者,联盟链被视为“部分去中心化”,典型的有HyperledgerFabric。加入联盟链和私有链中的每个普通节点都要经过许可,未经许可的普通节点不能加入区块链,该类型的区块称为许可链。区块是区块链的基本结构,由矿工将未被打包的合法交易打包形成去区块。完整区块结构如图1所示,区块头的结构如图2所示。区块头中包含了当前区块的哈希值和前一个区块的哈希值,通过哈希值将各个区块前后链接起来,形成区块链,如图3所示;Merkle树根的哈希值表示存储在区块体中的交易所形成的Merkle树哈希值;时间戳为区块被打包的时间;矿工通过寻找随机数nonce使得区块的哈希满足一定条件(比如小于特定值)完成对区块的“挖矿”;区块链系统可以动态调节挖矿的难度使得出矿时间保持在十分钟左右。区块链技术迅速发展的同时也面临着许多技术上的挑战,包括巨大的存储开销、交易延迟、数据的隐私特性等,其中存储开销使得存储的可扩展性差,限制了区块链在物联网、金融等领域的应用。以比特币为例,截止2021年1月20日,区块高度达到666,840,完成了607,924,131笔交易,区块总容量约为383.27GB;同时,持币总普通节点数达到了34,214,269,注册地址总数更大并且在不断增长。区块链技术为有效进行验证,每个加入系统的普通节点都需要同步保存所有区块的一个备份,造成了巨大的存储开销和资源浪费。联盟链和私有链同样面临着巨大的存储问题,因此亟需设计一种低开销存储机制来改善存储困境。东北大学贾大宇提出了区块链的存储容量可扩展模型,将完整的区块链副本进行分片处理,并将分片数据保存到一定比例的普通节点中;同时,增加普通节点可靠性验证,在保证数据安全性的同时,减少区块链的存储空间。Franca提出的迷你区块链是在区块链基础上的改进,通过缩短区块链的链长来降低区块链的开销。它允许将产生很久之前的区块链丢弃,只要保存当前区块最近的若干条区块。上述方法在一定程度上降低了存储开销,但上述两种方案未对数据区块进行区分,存储容量可扩展模型将区块分片处理后会增加新创建区块的查询时间,普通节点本地迷你区块链删除旧区块后区块链安全性降低,数据丢失后不能被查询。广义上,区块链的子链是指是在主链派生出来的具有其他功能的区块链,子链不能单独存在,必须通过主链提供的基础设施才能运行,同时免费获得主链的全部用户。子链可以定义自己的共识方式和执行模块,如PBFT、POS等。本专利技术中的子链特指联盟链中各个组织内部构造的本地区块链,与各个组织间的主链相对应但又相互独立。组织内部的交易和数据交换存储在本地的子链上,由组织内部的计算普通节点维护账本的一致性;每个组织内设置靶普通节点,负责该组织与其他组织的通信,跨组织的交易和数据交换存储在主链上,由各个组织的靶普通节点维护。子链和主链的结构如图4所示。为维护主链数据的一致性,对不同区块分类处理需要各个组织通过靶普通节点进行选举产生主节点,本专利技术利用Raft共识leader普通节点的选举方法在靶普通节点中选举产生主节点。普通节点有三种状态(follower、candidate、leader),初始情况下所有普通节点状态为follower,candidate是follower和leader之间的中间状态,该状态下的普通节点竞选成为leader。Raft共识算法选举产生主节点的主要内容如下:leader选举:所有普通节点启动时都是follower状态,在一段时间内如果没有收到来自leader的心跳,切换到candidate状态,发起选举;如果收到绝大多数的赞成票(含自己的一票)则成为新的leader;如果发现其他普通节点比自己更新,则主动切换到follower。系统中最多只有一个leader,如果在一段时间里发现没有leader,则大家通过选举-投票选出leader;如果leader故障,那么follower会转换成candidate,重新选出leader。任期:每个leader工作一段时间,然后选出新的leader继续负责。任期以选举开始,然后就是一段或长或短的稳定工作期;同时,任期是递增的,充当了逻辑时钟的作用。在现有区块链系统中,不管公有链、联盟链还是私有链,为保持账本的一致性每个普通节点本地都会保存所有区块的一个备份,随着链结构的不断增长,备份的数据逐渐增加,造成了巨大的存储开销。不仅使得矿工普通节点的存储空间被占用,导致资源浪费;而且部分存储容量小的普通节点无法完成区块信息的同步,无法加入区块链系统中完成可信交易。
技术实现思路
本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种可降低区块链存储开销的阶梯式数据存储方法及系统,本专利技术对区块信息按照价值进行分类,采取不同的存储策略进行存储,即保证数据的一致性、不可篡改性,又大幅度降低了区块链对于普通节点的存储需求,本专利技术能够解决区块链技术中区块被大量存储在区块链普通节点导致普通节点的存储开销增加的问题,采用多层次数据阶梯式存储技术,有效解决了区块链在链上存储的开销问题。本专利技术主要针对联盟链而设计,但同样适用于公有链和私有链。为了解决上述技术问题,本专利技术采用的技术方案为:一种可降低区块链存储开销的阶梯式数据存储方法,包括:1)主节点每隔指定时间t更新计算各个区块的价值密度VD(Block),所述价值密度VD(Block)与区块的访问次数N成正比、且与区本文档来自技高网
...

【技术保护点】
1.一种可降低区块链存储开销的阶梯式数据存储方法,其特征在于,包括:/n1)主节点每隔指定时间t更新计算各个区块的价值密度VD(Block),所述价值密度VD(Block)与区块的访问次数N成正比、且与区块的产生时间T成反比,并根据价值密度VD(Block)对各个区块进行分级;/n2)针对不同分级的区块采用不同开销的存储方式进行存储。/n

【技术特征摘要】
1.一种可降低区块链存储开销的阶梯式数据存储方法,其特征在于,包括:
1)主节点每隔指定时间t更新计算各个区块的价值密度VD(Block),所述价值密度VD(Block)与区块的访问次数N成正比、且与区块的产生时间T成反比,并根据价值密度VD(Block)对各个区块进行分级;
2)针对不同分级的区块采用不同开销的存储方式进行存储。


2.根据权利要求1所述的可降低区块链存储开销的阶梯式数据存储方法,其特征在于,步骤1)中计算各个区块的价值密度VD(Block)的函数表达式为:



上式中,k1和k2均为比例系数,且由0<k1≤1,0<k2≤1,N表示该区块的访问次数,T表示区块产生的时间,且主节点和各个普通节点协同完成各个区块的访问次数的记录更新。


3.根据权利要求2所述的可降低区块链存储开销的阶梯式数据存储方法,其特征在于,所述主节点和各个普通节点协同完成各个区块的访问次数的记录更新的步骤包括:每个普通节点在自己的本地为维护一个数组以记录每个区块的访问次数,区块每被访问1次则并向主节点针对该区块发送带有签名的更新访问次数请求,主节点收到请求消息后验证签名,验证通过后针对该区块向全网广播带有主节点签名的更新访问次数指令,各个普通节点收到消息后验证签名,验证通过后针对该区块将访问次数加1,从而完成该区块的访问次数更新。


4.根据权利要求1所述的可降低区块链存储开销的阶梯式数据存储方法,其特征在于,步骤1)中对各个区块进行分级是指分别分级为热区块、暖区块和冷区块三种等级,且新创建的区块默认为热区块,步骤2)中针对不同分级的区块采用不同开销的存储方式包括:将热区块存储在本地,将暖区块分片成为n个区块分片且通过n个普通节点进行存储,将冷区块存储在远端数据库。


5.根据权利要求4所述的可降低区块链存储开销的阶梯式数据存储方法,其特征在于,所述将暖区块分片成为n个区块分片且通过n个普通节点进行存储的步骤包括:
A1)主节点针对待存储的暖区块向各个普通节点发送带有主节点签名后的区块分片消息;
A2)各个普通节点收到区块分片消息并验证签名后反馈带有本普通节点签名的确认消息;
A3)主节点接收各个普通节点发送带有本普通节点签名的确认消息并验证签名,若收到确认消息超过一半则按照分片策略执行分片操作:将待存储的暖区块的区块头结构中分片数据结构体separation的区块分片标志位isSeperate置为true,将待存储的暖区块按照分片策略分片成为n个区块分片且保持区块头结构不变,然后计算每一个区块分片的哈希并将其填入自己的分片数据结构体separation的当前区块分片的哈希值presentHash、上一个区块分片的分片数据结构体separation的下一个区块分片的哈希值nextHash,且第一个区块分片的当前区块分片的哈希值presentHash为待存储的暖区块分片操作前的哈希值,最后一个区块分片的下一个区块分片的哈希值nextHash为空,从而得到n个区块分片;
A4)针对得到的n个区块分片中的每一个区块分片,选择多个普通节点并发送该区块分片对应的请求普通节点存储切片信息;
A5)收到请求普通节点存储切片信息的普通节点将对应的区块分片替换完整的区块,并向主节点返回存储确认消息,确认自己已经存储了该区块的指定切片;
A6)主节点收到每个区块分片的存储确认信息后,后删除待存储的暖区块。


6.根据权利要求4所述的可降低区块链存储开销的阶梯式数据存储方法,其特征在于,步骤2)之后还包括通过将n个区块分片进行切片组合实现暖区块访问的步骤:
B1)主节点针对待组合的暖区块向各个普通节点发送带有主节点签名的切片组合的消息,所述切片组合的消息中包含暖区块访问的两种类型:第一种类型为暖区块更新为冷区块,第二种类型为暖区块查询;
B2)...

【专利技术属性】
技术研发人员:史佩昌陈鹏王怀民张迅晖刘惠傅翔杨尚之钟韬相亮亮李琳慧
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1