买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】一种区块链账本存储系统、存储查询方法及删除方法_杭州慧牧科技有限公司_201910559718.7 

申请/专利权人:杭州慧牧科技有限公司

申请日:2019-06-26

公开(公告)日:2019-11-01

公开(公告)号:CN110399373A

主分类号:G06F16/22(20190101)

分类号:G06F16/22(20190101);G06F16/27(20190101);G06F16/23(20190101);G06Q40/04(20120101)

优先权:

专利状态码:有效-授权

法律状态:2024.02.02#授权;2019.11.26#实质审查的生效;2019.11.01#公开

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

主权项:1.一种区块链账本存储系统,其特征在于,包括多个账本区块,所述账本区块包括区块数据和区块索引,其中一个区块数据存储于一个区块文件中,且区块文件的大小等于区块数据的大小。

全文数据:一种区块链账本存储系统、存储查询方法及删除方法技术领域本发明属于区块链技术领域,具体涉及一种区块链账本存储系统、存储查询方法及删除方法。背景技术联盟区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,具有数据不可篡改、公开透明、分布式存储、可追溯性等技术优点。账本数据不可篡改也成为了联盟区块链技术发展的最大瓶颈,随着交易不断进行,账本区块数据不断增加,导致账本存储空间不足,大大降低了区块链账本记账和查询的性能。纵观各大软件系统平台,尤其是银行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所示,账本区块包括区块数据、区块索引。chainschains下的mychannel为通道名,也是账本名,该目录下存储着以blockfile_为前缀,6位数字为后缀的整个账本的区块数据,chainsindex下存储着区块索引,以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节点对交易区块进行验证,验证通过,将交易区块添加到账本区块文件,更新检查点信息。对交易区块类型进行判断,Isdelete==true即为删除交易,按照删除交易区块内容执行相应历史账本区块文件删除。按照删除交易区块内容执行相应历史账本区块文件删除具体实施步骤如下按照区块中的键值调用链码中查询区块系统文件方法。获取历史账本区块文件位置并将位置值放入fileString[]数组中。[迭代fileString[]数组执行历史区块删除方法deleteBlockfile,代码如下:调用链码中deleteState将状态数据库中的区块索引删除,更新历史账本数据库。在此,区块索引删除即为将key对应的值置nil。[Isdelete==false即为更新交易,调用链码中putState将状态数据库中的区块索引更新,并更新历史账本数据库。

权利要求:1.一种区块链账本存储系统,其特征在于,包括多个账本区块,所述账本区块包括区块数据和区块索引,其中一个区块数据存储于一个区块文件中,且区块文件的大小等于区块数据的大小。2.如权利要求1所述的区块链账本存储系统,其特征在于,所述区块文件的文件名为“blockfile_xxxxxx”,以“blockfile_”为前缀,“xxxxxx”6位数字为后缀。3.如权利要求1或2所述的区块链账本存储系统,其特征在于,所述区块索引以levelDb形式存储。4.一种区块链账本存储方法,其特征在于,所述区块链包括多个账本区块,所述账本区块包括区块数据和区块索引,所述区块链账本存储方法包括:每次交易记账生成账本区块之后,新建一个与区块数据大小相同的区块文件,将区块数据添加进入区块文件,并更新区块索引。5.如权利要求4所述的区块链账本存储方法,其特征在于,所述区块链账本存储方法包括:客户端发起交易调用请求;背书节点背书,并将背书结果返回客户端;客户端收集背书结果,满足背书策略,则发送orderer节点进行排序,生成区块,分发给各个peer节点验证;peer节点验证验证通过,则提交区块;生成大小为区块数据大小的区块文件;将区块数据添加进入区块文件,并更新区块索引。6.一种基于如权利要求1~3任一所述的区块链账本存储系统的查询方法,其特征在于,包括:客户端发起查询请求;按照区块文件编号查询区块账本。7.一种基于如权利要求1~3任一所述的区块链账本存储系统的删除方法,其特征在于,包括:客户端发起删除历史账本区块,将需要删除的历史账本区块的区块文件删除,将删除交易分发至各节点,实现各节点同步删除,并更新世界状态到状态数据库。8.如权利要求7所述的删除方法,其特征在于,包括:编写涵盖删除区块文件方法的智能合约;客户端发起删除交易;背书节点对交易提案进行背书签名;Orderer节点对交易信息排序并分发至各commiter节点;commiter节点验证执行删除区块文件;更新状态数据库。9.如权利要求8所述的删除方法,其特征在于,包括:客户端将删除交易信息打包成交易提案,交易提案将带有本次交易要调用的信息发送给背书节点;背书节点对删除交易提案进行验证并模拟执行,将模拟执行结果、读写集和签名返回至客户端;Orderer节点对删除交易提案进行共识排序并生成删除区块,Gossip协议进行命令分发至commiter节点,commiter节点对删除区块进行验证,验证通过将删除区块追加至区块链,按删除区块内容执行区块文件删除;删除状态数据库中对应区块索引,并更新为最新的世界状态。10.如权利要求9所述的删除方法,其特征在于,所述交易提案把带有本次交易要调用的合约标识、合约方法和参数信息以及客户端签名信息发送给背书节点。

百度查询: 杭州慧牧科技有限公司 一种区块链账本存储系统、存储查询方法及删除方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。