一种区块链账本存储系统、存储查询方法及删除方法技术方案

技术编号:22444407 阅读:21 留言:0更新日期:2019-11-02 04:22
本发明专利技术公开了一种区块链账本存储系统、存储查询方法及删除方法,每次交易记账生成账本区块之后,新建一个与区块数据大小相同的区块文件,将区块数据添加进入区块文件,并更新区块索引。客户端发起查询请求时,按照区块文件编号查询区块账本。客户端发起删除历史账本区块,将需要删除的历史账本区块的区块文件删除,将删除交易分发至各节点,实现各节点同步删除,并更新世界状态到状态数据库。本发明专利技术改变区块存储方式,以提高区块查询效率,删除区块文件,释放区块存储空间。

A blockchain ledger storage system, storage query method and deletion method

【技术实现步骤摘要】
一种区块链账本存储系统、存储查询方法及删除方法
本专利技术属于区块链
,具体涉及一种区块链账本存储系统、存储查询方法及删除方法。
技术介绍
联盟区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,具有数据不可篡改、公开透明、分布式存储、可追溯性等技术优点。账本数据不可篡改也成为了联盟区块链技术发展的最大瓶颈,随着交易不断进行,账本区块数据不断增加,导致账本存储空间不足,大大降低了区块链账本记账和查询的性能。纵观各大软件系统平台,尤其是银行app应用,对用户交易记账历史记录是具有周期性的,短周期内的用户操作记录会展现给用户,以避免周期过长,数据库存储空间不足。其次,区块链数据不可篡改的优点也导致了错误的输入信息一旦上链将无法更改或删除。通过删除历史账本区块,减小账本区块存储空间,除此之外,按照区块索引和偏移量去定位区块实属麻烦,直接定位blockfile会提升区块查询效率。故,针对其存储弊端,实有必要提出一种技术方案以解决现有技术存在的技术问题。
技术实现思路
为了解决上述问题,本专利技术提供了一种区块链账本存储系统,改变区块存储方式,以提高区块查询效率,删除区块文件,释放区块存储空间。本专利技术的技术方案为:一种区块链账本存储系统,包括多个账本区块,所述账本区块包括区块数据和区块索引,其中一个区块数据存储于一个区块文件中,且区块文件的大小等于区块数据的大小。作为优选,所述区块文件的文件名为“blockfile_xxxxxx”,以“blockfile_”为前缀,“xxxxxx”6位数字为后缀。作为优选,所述区块索引以levelDb形式存储。本专利技术还提供了一种区块链账本存储方法,所述区块链包括多个账本区块,所述账本区块包括区块数据和区块索引,所述区块链账本存储方法包括:每次交易记账生成账本区块之后,新建一个与区块数据大小相同的区块文件,将区块数据添加进入区块文件,并更新区块索引。作为优选,所述区块链账本存储方法包括:客户端发起交易调用请求;背书节点背书,并将背书结果返回客户端;客户端收集背书结果,满足背书策略,则发送orderer节点进行排序,生成区块,分发给各个peer节点验证;peer节点验证验证通过,则提交区块;生成大小为区块数据大小的区块文件;将区块数据添加进入区块文件,并更新区块索引。本专利技术还提供了一种基于上述的区块链账本存储系统的查询方法,包括:客户端发起查询请求;按照区块文件编号查询区块账本。本专利技术还提供了一种基于上述的区块链账本存储系统的删除方法,包括:客户端发起删除历史账本区块,将需要删除的历史账本区块的区块文件删除,将删除交易分发至各节点,实现各节点同步删除,并更新世界状态到状态数据库。作为优选,包括:编写涵盖删除区块文件方法的智能合约;客户端发起删除交易;背书节点对交易提案进行背书签名;Orderer节点对交易信息排序并分发至各commiter节点;commiter节点验证执行删除区块文件;更新状态数据库。作为优选,包括:客户端将删除交易信息打包成交易提案,交易提案将带有本次交易要调用的信息发送给背书节点;背书节点对删除交易提案进行验证并模拟执行,将模拟执行结果、读写集和签名返回至客户端;Orderer节点对删除交易提案进行共识排序并生成删除区块,Gossip协议进行命令分发至commiter节点,commiter节点对删除区块进行验证,验证通过将删除区块追加至区块链,按删除区块内容执行区块文件删除;删除状态数据库中对应区块索引,并更新为最新的世界状态。作为优选,所述交易提案把带有本次交易要调用的合约标识、合约方法和参数信息以及客户端签名信息发送给背书节点。与现有技术相比,本专利技术的有益效果体现在:(1)本专利技术中充分利用智能合约的可编程、可扩展性,达到区块链平台的性能优化目的。(2)本专利技术中改变区块数据存储方式,更改区块存储方式,改变原有(区块文件)一对一或一对多存储方式为一对一(一个区块文件存储一个区块数据),且区块文件大小取决于区块大小,提高区块查询速度。(3)本专利技术中通过对区块链账本存储的优化管理,删除历史账本区块即为删除历史区块文件,通过gossip协议将删除交易分发至各节点,实现各节点同步删除,并更新世界状态到levelDb。本专利技术中删除历史账本区块文件,极大的减小区块存储空间,推快区块链平台早日落地。附图说明图1为本专利技术中区块链的账本交易存储结构图。图2为本专利技术中区块链中账本交易查询流程图。图3为本专利技术中区块链的按区块文件编号删除历史账本区块逻辑分析原理图。具体实施方式本专利技术中区块链的区块账本结构如图1所示,账本区块包括区块数据、区块索引。/chains/chains下的mychannel为通道名,也是账本名,该目录下存储着以blockfile_为前缀,6位数字为后缀的整个账本的区块数据,/chains/index下存储着区块索引,以levelDb形式存储。区块数据是整个区块的主要内容,包含着整个区块中的所有交易信息,每次交易记账完成,都将在mychannel目录下新增一个区块系统文件(blockfile_xxxxxx),并更新index目录下的levelDb(区块索引)。本专利技术中更改了账本区块存储方式,将一个区块文件存储多个区块或一个区块改为一个区块文件只存储一个区块。将新增区块存储到blockfile,通过文件管理器进行添加,在blockfile_mgr.go中,不做存储区块与当前区块文件所剩存储空间大小比较,将区块大小赋值给区块文件大小maxBlockfileSize,直接执行moveToNextFile(),新建blockfile并将区块添加进去,实现一个区块文件一个区块,该区块大小即为区块文件大小。修改代码如下:更新checkpointInfo信息,将其保存至数据库。通过blockIndex创建区块索引,如区块文件编号、账本id,并保存至状态数据库中,更新世界状态。查询区块按照区块文件编号进行查找,执行方法依次为:按ledgerId(通道名或者账本名)定位到账本;按blockfileNum定位到区块系统文件;将该区块内容返回。新增区块的记账和历史区块的查询如图2所示流程。所述按区块文件编号删除方法,其具体逻辑原理如图3所示,客户端发起删除交易提案,将删除交易提案发送到背书节点。背书节点把删除交易预案作为输入参数,调用chaincode中的函数,chaincode根据当前的账本状态计算出一个交易结果,该结果包括返回值、读写集。此时,区块链账本并不会被更新,背书节点将背书结果返回至客户端。客户端收到背书(Endorser)节点返回的信息后,判断提案结果是否一致,以及是否收到足够多的背书节点返回的结果(参照指定的背书策略执行),如果没有足够的背书,则中止处理,这个交易就会被舍弃。否则,将交易提案、模拟交易结果和背书信息打包组成一个交易并签名发给Orderer节点(一个排序服务)。Orderer节点对来自客户端的删除交易信息进行共识排序,分通道对交易消息按时间排序,并按通道将删除交易打包成块,通过gossip协议分发至验证(Committer)节点。Committer节点对交易区块进行验证,验证通过,将交易区块添加到账本区块文件,更新检查本文档来自技高网...

【技术保护点】
1.一种区块链账本存储系统,其特征在于,包括多个账本区块,所述账本区块包括区块数据和区块索引,其中一个区块数据存储于一个区块文件中,且区块文件的大小等于区块数据的大小。

【技术特征摘要】
1.一种区块链账本存储系统,其特征在于,包括多个账本区块,所述账本区块包括区块数据和区块索引,其中一个区块数据存储于一个区块文件中,且区块文件的大小等于区块数据的大小。2.如权利要求1所述的区块链账本存储系统,其特征在于,所述区块文件的文件名为“blockfile_xxxxxx”,以“blockfile_”为前缀,“xxxxxx”6位数字为后缀。3.如权利要求1或2所述的区块链账本存储系统,其特征在于,所述区块索引以levelDb形式存储。4.一种区块链账本存储方法,其特征在于,所述区块链包括多个账本区块,所述账本区块包括区块数据和区块索引,所述区块链账本存储方法包括:每次交易记账生成账本区块之后,新建一个与区块数据大小相同的区块文件,将区块数据添加进入区块文件,并更新区块索引。5.如权利要求4所述的区块链账本存储方法,其特征在于,所述区块链账本存储方法包括:客户端发起交易调用请求;背书节点背书,并将背书结果返回客户端;客户端收集背书结果,满足背书策略,则发送orderer节点进行排序,生成区块,分发给各个peer节点验证;peer节点验证验证通过,则提交区块;生成大小为区块数据大小的区块文件;将区块数据添加进入区块文件,并更新区块索引。6.一种基于如权利要求1~3任一所述的区块链账本存储系统的查询方法,其特征在于,包括:客户端发起查询...

【专利技术属性】
技术研发人员:吴晓晖秦兴姬科
申请(专利权)人:杭州慧牧科技有限公司
类型:发明
国别省市:浙江,33

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

1