区块链节点数据存储方法和系统、终端及区块链系统技术方案

技术编号:22169017 阅读:23 留言:0更新日期:2019-09-21 11:30
本发明专利技术涉及一种区块链节点数据存储方法,包括:接收第一交易数据,获取该第一交易数据的交易信息构建为第一交易信息集;获取发送节点发送的致密区块,从该致密区块中提取交易信息构建为第二交易信息集;以该第一交易信息集关于该第二交易信息集的相对补集为补充信息集,以该补充信息集对应的交易数据为补充交易数据,从该发送节点获取该补充交易数据;以该第二交易信息集对应的交易数据为第二交易数据,将该致密区块与该第二交易数据生成当前区块,对该当前区块进行共识验证;若该当前区块通过共识验证,则对该致密区块和该第二交易数据进行分别存储。本发明专利技术通过分别存储致密区块和去重后的交易数据,有效的减小了全节点存储空间的浪费。

Block Chain Node Data Storage Method and System, Terminal and Block Chain System

【技术实现步骤摘要】
区块链节点数据存储方法和系统、终端及区块链系统
本专利技术属于互联网
,具体涉及一种区块链全节点数据存储方法及系统。
技术介绍
在区块链系统中,由于网络延迟等多方面原因,无法在区块链系统中完全避免分叉的发生,而分叉链上的区块又极有可能打包了大量重复交易,当这些区块先后被持久化到磁盘时,又浪费了存储空间。图1是现有技术的区块传播示意图,如图1所示,现有技术的区块传播流程为:接收节点B(NodeB)接收交易数据(txn),txn可以来自于发送节点A(NodeA)或其他节点C(NodeC);当发送节点A(NodeA)收到区块(block)后,将区块头(blockheaders)转发给NodeB;NodeB对blockheaders查重,若认为block是新区块,则向NodeA发出请求(getdata);NodeA将block发送给NodeB;NodeB对block进行共识验证,若通过共识验证则将block持久化存储至本地(insertblock)。可以看出,NodeB在持久化存储block时即持久化存储了txn,区块链发生分叉后,区块链全节点也需要持久化存储分叉链block,而分叉链block包含与主链block部分相同或全部相同的txn,从而导致txn被大量重复存储,造成存储空间浪费。致密区块中继(Compactblockrelay),即比特币改进提议(BIP152),提出了一种能够减少P2P网络节点广播区块所需的带宽数量的方案,利用全节点之间已共享许多相同内存池(mempool)内容,仅发送致密区块,以减少将新区块广播至全节点所需的带宽。致密区块的技术方案核心包括:发送节点向接收节点发出致密区块“概要内容”,概要内容包含:1、对应区块的80字节区块头;2、缩短交易标识符(txids),其目的是为防止拒绝式服务攻击;3、一些发送节点预测的,但接受对等节点不具备的完整交易。接收节点将尝试使用接收到的信息,以及在其内存池(memorypool)当中保存的交易数据,来重新构建整个区块。如果接收节点仍然缺失某些交易数据,它将请求发送节点发送缺失的交易数据。图2是BIP152的致密区块传播示意图,如图2所示,致密区块传播流程为:接收节点B(NodeB)接收交易数据(txn),txn可以来自于发送节点A(NodeA)或其他节点C(NodeC);当发送节点A(NodeA)收到区块(block)后,将区块头(blockheaders)转发给NodeB;NodeB对blockheaders查重,若认为block是新区块,则向NodeA发出致密区块获取请求(getdata(compact));NodeA将致密区块(compactblock)发送给NodeB;NodeB从compactblock中筛选出本地内存池中不存在的交易信息(txids),并向NodeA发出请求获取这些缺失的交易数据(getmissingtxn);NodeA将缺失的交易数据(missingtxn)发送给NodeB;NodeB根据致密区块和本地交易数据组装完整区块(assembleblock);NodeB对assembleblock进行共识验证,若通过共识验证则将assembleblock持久化存储至本地(insertblock)。BIP152中的致密区块使用方法,可以提升节点的带宽使用效率,但是仍未解决交易数据本地重复存储的问题,特别是区块链的分叉可能使得存储区块的全节点要打包大量重复区块,甚至在部分共识系统中会使用到分叉块,导致很多交易数据会被存储多次,造成存储空间的浪费。
技术实现思路
针对现有技术中存在的问题,本专利技术利用致密区块技术,通过对全节点存储的交易数据进行去重操作,以减少全节点存储空间的浪费。具体来说,该方法包括:交易数据获取步骤,接收第一交易数据,获取该第一交易数据的交易信息构建为第一交易信息集;致密区块获取步骤,获取发送节点发送的致密区块,从该致密区块中提取交易信息构建为第二交易信息集;交易数据补充步骤,以该第一交易信息集关于该第二交易信息集的相对补集为补充信息集,以该补充信息集对应的交易数据为补充交易数据,从该发送节点获取该补充交易数据;当前区块验证步骤,以该第二交易信息集对应的交易数据为第二交易数据,将该致密区块与该第二交易数据生成当前区块,并进行共识验证;区块数据存储步骤,若该当前区块通过共识验证,则将该致密区块和该第二交易数据分别存储至本地存储空间。本专利技术所述的区块链节点数据存储方法,其中该致密区块获取步骤之前还包括:区块接收查重步骤,接收该发送节点发送的当前区块的区块头,并对该区块头进行查重以判断该当前区块是否为新区块,若是则从该发送节点获取该当前区块的致密区块的,反之则丢弃该区块头。本专利技术所述的区块链节点数据存储方法,其中该区块接收查重步骤之后还包括当前区块转发步骤,当判断该当前区块为新区块后转发该区块头;该致密区块获取步骤之后还包括致密区块发送步骤,在接收到获取致密区块的请求后,向发出请求的节点发送该致密区块;该交易数据补充步骤之后还包括交易数据发送步骤,在接收到获取交易数据的请求后,向发出请求的节点发送请求的交易数据。本专利技术所述的区块链节点数据存储方法,其中该交易数据获取步骤还包括:交易数据查重步骤,对该第一交易数据进行查重,若判断该第一交易数据为新交易数据,则提取该第一交易数据的交易信息,反之则丢弃该第一交易数据;交易数据转发步骤,对判断为新交易数据的第一交易数据进行转发。本专利技术所述的区块链节点数据存储方法,其中该致密区块包括该当前区块的区块头,以及该当前区块包含的交易数据对应的缩短交易识别符。本专利技术所述的区块链节点数据存储方法,其中该交易信息为缩短交易识别符。本专利技术还提出一种区块链节点数据存储系统,包括:交易数据获取模块,用于接收第一交易数据,获取该第一交易数据的交易信息构建为第一交易信息集;致密区块获取模块,用于获取发送节点发送的致密区块,从该致密区块中提取交易信息构建为第二交易信息集;交易数据补充模块,用于以该第一交易信息集关于该第二交易信息集的相对补集为补充信息集,以该补充信息集对应的交易数据为补充交易数据,从该发送节点获取该补充交易数据;当前区块验证模块,用于以该第二交易信息集对应的交易数据为第二交易数据,将该致密区块与该第二交易数据生成当前区块,并进行共识验证;区块数据存储模块,用于当该当前区块通过共识验证时,将该致密区块和该第二交易数据分别存储至本地存储空间。本专利技术所述的区块链节点数据存储系统,还包括:区块接收查重模块,用于接收该发送节点发送的当前区块的区块头,并对该区块头进行查重以判断该当前区块是否为新区块,若是则从该发送节点获取该当前区块的致密区块的,反之则丢弃该区块头;当前区块转发模块,用于当判断该当前区块为新区块后转发该区块头;致密区块发送模块,用于在接收到获取致密区块的请求后,向发出请求的节点发送该致密区块;交易数据发送模块,用于在接收到获取交易数据的请求后,向发出请求的节点发送请求的交易数据。本专利技术所述的区块链节点数据存储系统,其中该交易数据获取模块还包括:交易数据查重模块,用于对该第一交易数据进行查重,若判断该第一交易数据为新交易数据,则提取该第一交易数据的交易信息,反之则丢弃该本文档来自技高网
...

【技术保护点】
1.一种区块链节点数据存储方法,其特征在于,包括:交易数据获取步骤,接收第一交易数据,获取该第一交易数据的交易信息构建为第一交易信息集;致密区块获取步骤,获取发送节点发送的致密区块,从该致密区块中提取交易信息构建为第二交易信息集;交易数据补充步骤,以该第一交易信息集关于该第二交易信息集的相对补集为补充信息集,以该补充信息集对应的交易数据为补充交易数据,从该发送节点获取该补充交易数据;当前区块验证步骤,以该第二交易信息集对应的交易数据为第二交易数据,将该致密区块与该第二交易数据生成当前区块,并进行共识验证;区块数据存储步骤,若该当前区块通过共识验证,则将该致密区块和该第二交易数据分别存储至本地存储空间。

【技术特征摘要】
1.一种区块链节点数据存储方法,其特征在于,包括:交易数据获取步骤,接收第一交易数据,获取该第一交易数据的交易信息构建为第一交易信息集;致密区块获取步骤,获取发送节点发送的致密区块,从该致密区块中提取交易信息构建为第二交易信息集;交易数据补充步骤,以该第一交易信息集关于该第二交易信息集的相对补集为补充信息集,以该补充信息集对应的交易数据为补充交易数据,从该发送节点获取该补充交易数据;当前区块验证步骤,以该第二交易信息集对应的交易数据为第二交易数据,将该致密区块与该第二交易数据生成当前区块,并进行共识验证;区块数据存储步骤,若该当前区块通过共识验证,则将该致密区块和该第二交易数据分别存储至本地存储空间。2.如权利要求1所述的区块链节点数据存储方法,其特征在于,该致密区块获取步骤之前还包括:区块接收查重步骤,接收该发送节点发送的当前区块的区块头,并对该区块头进行查重以判断该当前区块是否为新区块,若是则从该发送节点获取该当前区块的致密区块的,反之则丢弃该区块头。3.如权利要求2所述的区块链节点数据存储方法,其特征在于,该区块接收查重步骤之后还包括当前区块转发步骤,当判断该当前区块为新区块后转发该区块头;该致密区块获取步骤之后还包括致密区块发送步骤,在接收到获取致密区块的请求后,向发出请求的节点发送该致密区块;该交易数据补充步骤之后还包括交易数据发送步骤,在接收到获取交易数据的请求后,向发出请求的节点发送请求的交易数据。4.如权利要求1所述的区块链节点数据存储方法,其特征在于,该交易数据获取步骤还包括:交易数据查重步骤,对该第一交易数据进行查重,若判断该第一交易数据为新交易数据,则提取该第一交易数据的交易信息,反之则丢弃该第一交易数据;交易数据转发步骤,对判断为新交易数据的第一交易数据进行转发。5.如权利要求1所述的区块链节点数据存储方法,其特征在于,该致密区块包括该当前区块的区块头,以及该当前区块包含的交易数据对应的缩短交易识别符。6.如权利要求5所述的区块链节点数据存储方法,其特征在于,该交易信息为缩短交易识别符。7.一种区块链节点数据存储系统,其特征在于,包括:交易数据获取模块,用于接收第一交易数据,获取该第一交易数据的交易信息构建为第一交易信息集;致密区块获取模块,用于获取发送节点发送的致密区块,从该致密区块中提取交易信息构建为第二交易信息集;交易数据补充模块,用于以该第一交易信息集关于该第二交易信息集的相对补集为补充信息集,以该补充信息集对应的交易数据为补充交易数据,从该发送节点获取该补充交易数据;当前区块验证模块,用于以该第二交易信息集对应的交易数据为第二交易数据,将该致密区块与该...

【专利技术属性】
技术研发人员:尚书
申请(专利权)人:北京清红微谷技术开发有限责任公司
类型:发明
国别省市:北京,11

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

1