文档详情

区块链查询技术优化

干***
实名认证
店铺
DOCX
163.55KB
约10页
文档ID:177893955
区块链查询技术优化_第1页
1/10

区块链查询技术优化作者:李楠来源:《电脑知识与技术》2021年第11期创世区块前区块I .WT'JBlfHSi豹亦1H肚口;曲趣调出需顽 啦世尢小 审同數■后区块图1区块链结构/EIFRt节gflf图2 M-IT树的结构fcilx块图3节点1-5的M-1T树的区块存储结构*前区块创世区块图4基于M-IT树的区块链结构图5查询方法流程图图《实验部署图O200o o O806040 〔倉典"丘一)巨上卩.-__=图7数据查询时间(瓷叫•£注〕巨■,.-a一创图J5利用区块号查询时间摘要:对区块链上数据查询功能单一且查询效率低等问题,提出一种查询技术的优化方案,该方案对区塊链的Merkle树进行了修改,结合了 B+树的结构,不仅能够快速验证(基于 M-B+树根hash),还可以利用B+树的结构快速查找特定记录并将交易的关键信息和对应的 区块号等数据存入到关系数据库MySQL中,从而支持关系查询实验结果表明,基于M-B+ 树的区块链系统不仅查询速度效率提升而且具有丰富的查询手段关键词:区块链;超级账本;关系查询;B+树中图分类号: TP3 文献标识码: A文章编号: 1009-3044(2021) 11-0213-031 引言区块链技术主要是解决在分布式、不可信的场景下进行安全、可靠、不可更改的交易问 题。

目前研究内容涉及:系统性能分析、安全性能和共识算法研究、技术应用探索等方面,查 询技术和底层数据管理研究不多,由于区块链采用链式结构,在查询的业务场景中,查询效率 低、方法有限,且时间复杂度高,使区块链技术应用价值被削弱在查询领域的研究主要有两大方向:第一种,对结点进行区分,并且对查询的路径进行优 化,来提升查询效率,但是这种方法还是在区块链原有的查询方式上进行优化,对原有的区块 链查询功能没有提升;第二种,将区块链和现有的数据库连接,借助数据库丰富的查询功能, 但是这种方法存在数据库数据安全问题第一种方法只是对现有的节点进行优化,在区块链原有的查询方式上进行优化,却没有从 区块链本身进行相应的提升改进,对原有的区块链查询功能应用场景和查询手段的改进不大; 第二种,将区块链和现有的数据库连接,使用数据库丰富的查询功能,但是存在数据库数据的 安全问题,而且会使区块链系统的复杂性变大,使系统的运行效率变低为了解决区块链查询效率低,丰富查询功能本文提出一种新的区块链查询方法:结合 B+树和Merkle树的各自特点,建立基于M-B+树的区块存储结构,并将区块号同步到数据 库,在进行查询时先在数据库中查找到相应区块号后,然后到对应区块查询数据,因为数据库 只保留了区块号,数据都在链上,这样解决了数据库数据被篡改的风险。

2 相关工作针对区块链查询,目前的研究如下:贾大宇等⑴在ElasticChain模型基础上,提出一种新的高效查询方法:ElasticQM该框架 主要在数据层建立B-M树的区块链存储结构,提高局部查询效率T等提t出了 BigchainDB[2区块链数据库,具有高吞吐量、低延迟、大容量、丰富的查 询功能和去中心化、不可篡改和能够进行数字资产创建、传输的特性北京众享比特科技有限公司提出ChainSQL[3]技术,该技术是将数据库的操作记录各个节 点共识之后记录到区块链上,如果共识执行失败或不通过,数据库执行回滚操作,这样就实现 了兼顾区块链和传统数据库的优点余涛等[4提出FabricSQL方法,该方法将链上的有效交易同步至SQL数据库中,借助数 据库管理系统对区块链数据关系查询本文所提出一种区块链数据关系查询解决方案,对区块链区块结构修改,结合Merkle树 和B+树的特点,建立M-B+区块结构,并设计相关模块结合数据库,实现高效、安全的数据 查询区块3链结构设计现3有.1的区块链区块结构在现有的区块链系统中,区块主要包含区块头、区块体两大部分区块头包含:版本号、 时间戳、难度系数、随机数、前区块hash, Merkle树根hash区块体包含:魔法数、区块大 小、交易数量、交易详情大小。

如图1所示区块结构说明在区块头中,版本号是用来标记当前区块对应的系统版本,大小为4 byte; 时间戳是记录区块创建的时间,大小为4 by t难度系数是记录区块链工作量证明的难度目标, 储存格式为难度系数的hash随机数是记录区块链工作量的计算参数,大小为4 byte存储格式 为hash前区块头的hash是当前区块的前一个区块的区块头的hash,大小为32 byte;Merkl树 根hash是当前区块打包所有的交易记录都是以Merkle树的方式记录的,记录的是交易树根的 hash,当有新的信息存入时,该字段会重新计算更新在区块体中,魔法数是客户端解析区块数据时的识别码,大小为4 byte是不变常量;区块 大小为4 byte交易数量,记录上一个区块创建之后到本区块创建完成之间所有的交易笔数;交 易详情,记录所有交易详情,包括收支地址、比特币收支数量> Merkle节点值和数字签名等, 采用的数据结构是Merkle树区块号,是区块的编号,也称区块高度,从0开始计算,下一个区块的为1,区块号和区 块一一对应,可以根据区块号快速查询区块的信息物3流.2信息平台中区块结构设计)M-B+树的区块存储结构Merkle树的结构设计可以保证了数据安全不被篡改,还能快速验证数据的hash是否存在 于区块上,查找具体的信息时,根据区块号找到相应的区块,遍历区块查找相应的信息。

随着 区块链上的数据变多,查询相关数据的效率越来越低本节提出一种M-B+树的区块存储结 构,这种结构不仅结合了现有的Merkle树的特点,又提高了查询效率基于B+树和Merkle树的优点,设计了 M-B+树的区块存储结构节点结构如图2数据结构如下:Node{Node left;Value value;Hash hash;Node right;}节点1-5的M-B+树的区块存储结构如下:2)基于M-B+树的区块链结构基于M-B+樹的区块结构,利用该结构搭建的区块链,形成一种新的区块链如图所示,每一个区块都存储着M-B+树根hash和M-B+树根,树的其余部分放在了区块 体中在验证相关数据是否存在于该区块时只需要验证是否和M-B+树根hash相等就能快速得 到结果4 区块链查询技术下面将开始分析传统的区块链查询方法,然后提出一种基于M-B+树结构的区块链查询方 法4.1 现有的区块链查询方法在区块链中,除了创世区块,其他区块都记录了前一个区块的hash,形成按时间顺序组成 的链在查找数据时,从区块号或区块哈希来确定所在的区块,然后找到相应的区块后,在交易 信息中找到想要的交易记录在交易过程中,查询流程如下:一个SPV节点查询交易地址,节点间的通信链接上建立 起bloom过滤器,以Merkleblock消息的形式发送该区块。

Merkleblock消息包含区块头和一条 连接目标交易与Merkle根的Merkle路径,验证交易的真实性4.2基于M-B+树的区块链结构查询方法针对区块链查询方面的不足,本节会将基于M-B+树的区块链和关系型数据库MySQL结 合,将新生成的区块的区块号、M-B+树哈希、M-B+路径、交易信息同步到关系型数据库 MySQL 中在关系型数据库MySQL中,会将同步过来的区块链的区块号、M-B+树哈希、M-B+路 径、交易信息进行判断、同步、提取后,处理成MySQL数据库要求的数据格式存储查询方法主要分为三个主要部分:数据处理和同步模块、外部数据库、查询接口在基于 M-B+树的区块链运行过程中,数据判断和提出模块会通过区块链的数据接口,将新生成的区 块的区块号、M-B+树哈希、M-B+路径、交易信息同步到关系型数据库MySQL中5 实验与分析本章主要是对基于M-B+树的区块链结构查询方法进行试验并和传统的区块链系统进行比 较,并通过试验结果证明方案可行性5.1 实验环境本文采用Hyperledger Fabric开源框架,基于M-B+树的区块结构搭建区块链系统实验的 硬件配置为:Intel Core I5-7300HQ 2.50 GHZ CPU和 16GB 内存的 PC,操作系统为 WindowslO 专业版。

使用 VMware Workstation 12.5 建立虚拟机,在虚拟机上模拟实验的真实节点,节点 的内存为1GB,硬盘为25GB的Ubuntu16.04系统数据来自脱敏的电子交易数据集和账户数 据集图6所示的实验部署图,为了构成P2P网络,首先选择一个普通结点作为初始节点,然后 选择一个超级节点和初始节点进行链接普通节点只同步区块头,超级节点同步整个区块的整 体信息当普通用户获取不在本节点的信息时,可以在超级节点上同步信息,减少普通用户本 地存储5.2 实验分析实验 1:在两个系统中分别录入相同的原始数据,然后进行一笔交易信息的查询,利用区 块链上的查询的接口,控制变量,进行多组对照实验观察两个系统的查询时间查询时间如图所示,由于单个查询时间较短,采用1000笔重复查询实验然后取平均值 图中的横坐标是上链的数据量规模,分别是300M, 600M和900M,纵坐标是时间值,通过实 验结果可以看出,基于M-B+树的区块链系统的查询时间较传统的区块链系统查询响应时间有 着明显的提升实验2 :在两个系统中分别录入相同的原始数据,然后利用外接数据库MySQL提供的查 询接口,根据相同的区块号进行信息查询,取区块号10、100、150、200、250、300进行查 询,观察查询时间。

如图所示,利用外接数据库提供的查询接口,利用区块号进行查询实验,通过对实验结果 进行分析,外接数据库查询时间相较于传统查询时间缩短有些数据会缓存在服务器上,所以 整体查询时间比直接利用区块链的查询接口要快6 结束语本文研究当前的区块链系统的查询技术,发现查询功能不完善,效率低,对区块链查询方 法进行了研究和改善传统Fabric区块链系统的查询功能是通过文件系统和Key-value数据库实现的,随着区块 链技术的普及和广泛应用在各行各业,系统对存储数据的访问方法支持不足,而且查询功能单 ―、效率不高本文针对在物流中区块链查询方面的不足,提出一种解决方案:基于M-B+树 的区块链系统,该方案对区块链的Merkle树进行了修改,结合了 B+树的结构,能够使区块链 系统在进行交易查询时不仅能够快速验证(基于M-B+树根hash),而且可以利用B+树的结 构快速查找特定记录而且基于M-B+树的区块链系统外接了 MySQL数据库,将新生成的区 块的区块号、M-B+树hash、M-B+路径、交易信息同步到关系型数据库MySQL中利用 MySQL数据库丰富的查询功能,能够快速验证和得到需要查询的信息的区块号,然后到区块 链中查找特定信息。

参考文献:[1] 贾大宇,信俊昌,王之琼,等•存储容量可扩展区块链系统的高效查询模型[J].软件学 报, 2019, 30(9): 2655-2670.[2] McConaghy T, Marques R, Muller A, et al. BigchainDB : a scalable blockchaindatabase[J]. white paper, BigChainDB, 2016.[3] Beijing PeerSafe Technology Limited Company. White paper for blockchain database application platform [EB/OL]. [2017-01-22]. http://[4] 余涛,牛保宁,樊星.FabricSQL:区块链数据的关系查询J].计算机工程与设计, 2020, 41(10): 2988-2995.【通联编辑:代影】。

下载提示
相关文档
正为您匹配相似的精品文档