本发明专利技术属于区块链技术领域,具体涉及一种基于链上存储的区块链数据存储扩展方法,包括:引入半节点存储部分区块详细数据以及全部区块索引值;引入副链存储哈希区块组数据;区块链网络中各节点对交易数据优化打包;将打包的交易数据发送给背书节点验证,验证后进行区块排序压缩;领导节点对排序压缩的区块进行接受与验证,验证成功将此区块广播至该网络所有节点并上链存储;散列新区块高度达到预设值时,多个连续新区块合为一个哈希区块组,根据各哈希区块组数据存储数量决定新节点是否存储数据,该发明专利技术对区块链的数据进行了结构优化与压缩,同时引入半节点减少区块链网络数据的臃肿,并能够保证所有节点在对交易数据查询时的效率以及真实性。的效率以及真实性。的效率以及真实性。
【技术实现步骤摘要】
基于链上存储的区块链数据存储扩展方法
[0001]本专利技术属于区块链
,具体涉及一种基于链上存储的区块链数据存储扩展方法。
技术介绍
[0002]区块链是一种结合分布式共识、加密、时间戳等方法,在不依赖任何第三方中心化机构的情况下,实现点对点交易、协调以及协作的技术;区块链具有去中心化、安全性、可扩展性等特点,其中,区块链可扩展性是指随着区块链系统的应用,通过参数调整或硬件升级等较小变更使得系统能够支持新的需求。区块链可扩展性可分为性能可扩展性和功能可扩展性,而性能可扩展性又包括吞吐量扩展、存储扩展以及网络扩展。吞吐量扩展与每个区块中的交易数及产生两个区块的时间间隔有关;存储扩展与区块链生成的数据有关;网络扩展与区块链网络中的数据传输有关。
[0003]区块链在不同场景下的应用,都因高冗余存储(每个节点存储一份完整的数据)增强了数据的公开性、透明性,提高了系统的可用性;但另一方面,每个节点都同步最新账本会给区块链带来性能问题和巨大的存储压力;从应用开发的方面来说,基于区块链的应用开发需要满足可扩展性要求和一致性要求,区块链的一致性是指存储在区块链不同节点中的数据副本的取值必须一致,它通过共识算法、数据的可靠传输、高冗余存储和加密技术来实现,但是高冗余存储会增加节点的存储压力,导致存储可扩展性问题。因此区块链的存储扩展性成为关注和研究的重点。
[0004]针对区块链存储扩展性问题,有学者提出了链下存储和链上存储两种方式。链下存储是将部分数据的存储转移到另一个外部数据存储系统中,缓解大部分区块链网络中节点的存储压力但存在安全问题;而链上存储不需要每个节点都存储完整的区块链账本,也不依赖于额外的链下存储系统,只需要每个节点根据预先约定的规则存储对应的部分账本即可。链上存储的轻节点模式采用全节点存储所有数据,轻节点存储部分数据及区块索引值,由于节点未存储完整的区块数据,在区块链功能方面可能会受到一定的限制,节点若未存储完整区块数据则无法满足快速验证等性能要求,增大了区块链网络的数据传输压力及获取区块数据的时长,在不同的区块链系统中可考虑综合几种不同方案的优势,并引入数据压缩等技术进一步改进区块数据存储,提升区块链数据存储的可扩展性。
技术实现思路
[0005]为了解决上述问题,本专利技术提供了一种基于链上存储的区块链数据存储扩展方法,该方法包括:
[0006]S1、利用主机或服务器作为区块链节点,搭建Hyperledger Fabric区块链网络,区块链网络中各节点对交易数据进行优化,将优化后的交易数据打包;
[0007]S2、将打包的交易数据发送给背书节点验证,验证后进行区块排序压缩,得到新区块;
[0008]S3、领导节点对新区块进行接受与验证,若验证成功,则将新区块广播至该网络所有节点并上链存储;
[0009]S4、当散列的新区块高度达到预设值时,领导节点将多个连续的新区块合为一个哈希区块组HBG,新节点按需要分为全节点、半节点和轻节点三类节点对哈希区块组数据进行存储,并根据各哈希区块组数据的存储数量决定半节点是否存储数据,若一个哈希区块组的数据未达到预设值或数据达到预设值且有宕机节点,则半节点存储该组数据。
[0010]相较于传统存储扩展方案,半节点的引入在不影响查询效率的同时有效的解决区块链网络扩展时带来的臃肿问题,同时减少区块链节点存储压力;
[0011]进一步的,哈希区块组(HBG)数据包括组内区块数据、组内区块M树、组索引值。
[0012]在区块链网络中引入半节点,半节点存储部分区块详细数据以及全部区块索引值,全节点存储全部区块详细数据,轻节点仅储存全部区块索引值不存储区块详细数据,轻节点查询交易数据时,依靠索引值从临近全、半节点获取详细数据,半节点查询交易数据时,依靠索引值从自身或临近全、半节点获取详细数据;
[0013]进一步的,区块链网络中各节点对交易数据进行优化包括:
[0014]压缩交易信息,即删除为固定值的coinbase交易区块的前一笔交易输出哈希与输出索引;
[0015]优化交易的数据结构,即将普通交易的前一笔交易输出哈希数据结构优化为区块高度与交易索引值,采用区块高度、交易索引值建立坐标定位查询。相较于传统的交易结构,将前一笔交易输出哈希、输出索引优化为区块高度、交易索引值,每一笔交易可以减少16至24字节的存储空间,随着区块链的扩展可以节省大量的存储空间。
[0016]进一步的,区块压缩采用zlib算法,zlib算法对区块压缩比在38%
‑
48%。
[0017]进一步的,将打包的交易数据发送给背书节点验证包括:
[0018]客户端A发送一个事务请求,请求目标为peer1和peer2,peer1和peer2 分别代表节点A和节点B;
[0019]节点A通过任意一个被Hyperledger Fabric支持的SDK的应用程序创建一个API,利用API生成一个事务协议,并使用用户的加密凭证为该事务协议生成一个唯一的签名。
[0020]进一步的,peer1和peer2对上述事务协议验证,包括:该事务协议是完整的;该事务协议在过去尚未被提交过;签名是有效的,每一个peer节点都确保提交者满足通道channel的写入策略。
[0021]进一步的,节点查询交易数据包括以下步骤:
[0022]S21、根据所要查询的区块信息,查询当前节点存储的组索引值,若当前节点已存储,则直接从当前节点获取所要查询的区块数据,否则进入步骤S22;
[0023]S22、搜索副链并根据所要查询区块的组索引获取副链中该组索引对应的区块组数据;
[0024]S23、根据区块组数据得到存储该组数据的节点信息,再通过坐标查询到数据。本专利技术的有益效果:
[0025]本专利技术提出了一种新的基于链上存储的区块数据处理以及节点分类存储与查询方法;引入了半节点,半节点介于全节点与轻节点之间,减少了轻节点查询时对全节点的访问负担,在保证不影响区块链网络的查询效率的同时大大减轻区块链网络的存储压力;
[0026]本专利技术避免了大量节点存储所有区块数据,只将部分节点存储全部数据大大减轻了区块链网络节点的存储负担;解决了区块链数据日益增长的存储容量不足问题。
附图说明
[0027]图1为本专利技术中区块链数据处理、存储模型;
[0028]图2为本专利技术中区块链中压缩算法压缩比示意图;
[0029]图3为本专利技术中区块链扩展时新节点组数据存储示意图;
[0030]图4为本专利技术中半节点查询数据流程图。
具体实施方式
[0031]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0032]一种基于链上存储的区块链数本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.基于链上存储的区块链数据存储扩展方法,区块链网络中,全节点存储全部区块详细数据,轻节点仅储存全部区块索引值不存储区块详细数据,其特征在于,在区块链网络中引入半节点,半节点存储部分区块组详细数据以及全部区块索引值,轻节点查询交易数据时,依靠索引值从临近全、半节点获取详细数据,半节点查询交易数据时,依靠索引值从自身或临近全、半节点获取详细数据;基于链上存储的区块链数据存储扩展方法包括以下步骤:S1、利用主机或服务器作为区块链节点,搭建Hyperledger Fabric区块链网络,区块链网络中各节点对交易数据进行优化,将优化后的交易数据打包;S2、将打包的交易数据发送给背书节点验证,验证后进行区块排序压缩,得到新区块;S3、领导节点对新区块进行接受与验证,若验证成功,则将新区块广播至该网络所有节点并上链存储;S4、当散列的新区块高度达到预设值时,领导节点将多个连续的新区块合为一个哈希区块组,新节点按需要分为全节点、半节点和轻节点三类节点对哈希区块组数据进行存储,并根据各哈希区块组数据的存储数量决定半节点是否存储数据,若一个哈希区块组的数据未达到预设值或数据达到预设值且有宕机节点,则半节点存储该组数据。2.根据权利要求1所述的基于链上存储的区块链数据存储扩展方法,其特征在于,哈希区块组数据包括组内区块数据、组内区块M树、组索引值。3.根据权利要求1所述的基于链上存储的区块链数据存储扩展方法,其特征在于,所有的哈希区块组连成一条链,形成副链,副链每一个区块存储一个组的数据、组默克尔树以及存有该组数据的节点信息。4.根据权利要求1所述的基于链上存储的区块链数据存储扩展方法,其特征在于,区块链网络中各节点对交易数据进行优化包括:压缩交易信息,即删除为固定值的coinba...
【专利技术属性】
技术研发人员:付蔚,胡灿炜,童世华,刘庆,张棚,吴志强,冯建强,李正,
申请(专利权)人:重庆邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。