一种基于链上-链下协同的区块链查询优化方法技术

技术编号:33386588 阅读:19 留言:0更新日期:2022-05-11 23:01
一种基于链上

【技术实现步骤摘要】
一种基于链上

链下协同的区块链查询优化方法


[0001]本专利技术属于区块链


技术介绍

[0002]SQL数据库:关系型数据库
[0003]NoSQL数据库:非关系型的数据库
[0004]Hash:散列/哈希
[0005]无效交易:区块链中数据不合法、不会更新状态数据库状态的交易
[0006]有效交易:区块链中验证数据合法并更新状态数据库状态的交易
[0007]异常交易:被非法篡改链下数据库中数据内容的交易
[0008]正常交易:未被篡改链下数据库中数据内容的交易
[0009]区块链最早起源于比特币的核心技术,其本质上是一个去中心化的分布式共享账本,负责记录整个网络中的所有交易信息和状态。区块链上的数据是以区块形式存储,从第一个生成的区块开始,按时间为排序依据,每个区块通过前一个区块的Hash值指向前一个区块,区块首尾依次连接形成链式结构。每个区块包括区块头和区块主体两部分,区块头包含了例如时间戳、前一区块的Hash值、当前区块的Hash值等元数据信息,区块主体则由数笔交易数据组成。区块链技术集成了多种基础技术,包括分布式共识算法、哈希运算、数字签名、P2P网络和智能合约。区块链具有去中心化、不可篡改性、隐私性和可审计性这些特点,适合解决传统中心化机构的高成本、低效率和存储数据篡改等问题。因此,区块链技术在金融服务、商品溯源、医疗教育、科学出版等商业或公益领域,愈来愈受到人们的关注。
[0010]然而,当前区块链在查询交易数据场景下表现出的查询效率低下和查询功能匮乏,难以满足现代区块链应用程序的实际需要,成为了制约区块链技术发展的一个性能瓶颈。因为区块链在设计之初重视数据的写入一致而非查询的效率,主要体现在区块链的数据结构和存储模式两个方面。从数据结构方面来说,区块链数据存储的链式结构是先天固有的缺陷,查询交易数据时需要顺序地遍历整个区块链,这导致随着区块数量的增长,查询速度会越来越慢。另外,从存储模式方面来说,现有的区块链系统多以键值存储或文件存储等非关系型数据存储模式作为基本的存储模式。因此,区块链系统账本数据和状态数据通常由文件系统和非关系型数据库负责存储。例如以太坊使用Google提供的开源数据库LevelDB记录状态数据和账本数据;超级账本Hyperledger Fabric的状态数据库可以选择使用CouchDB或LevelDB,而账本数据存放在文件系统里。相对于关系数据库,NoSQL数据库在查询方面存在以下4处不足:1)读性能弱,查询代价较高;2)没有事务处理,则无法保证查询操作结果的完整性;3)缺少用于各种查询的数据索引结构,查询效率很低;4)数据结构相对复杂,难以支持复杂的高级查询。
[0011]综上所述,如何提高区块链的查询效率、使其支持高级查询功能是一个值得解决的问题。
[0012]针对当前的区块链系统的查询性能优化,其中一类解决方案是通过添加语义和构
建索引、修改或替换区块链底层数据库等方式,修改原有区块链的内核以提示区块链系统自身的查询性能。
[0013]现有方法一的解决方案
[0014]BlockchainDB是上述类型解决方案中的一个实现,如图1所示,它采用将红黑树和区块结构中Merkle树相结合的索引结构,并且基于Hash指针来加速原有区块链的查询。该索引中,叶子节点负责存放数据,而非叶子节点只存放关键字和孩子节点的总Hash值,而且其左子树存储小于等于节点关键字的数据,右子树存储大于节点关键字的数据。此方案保证了索引的不可篡改性的同时具有较好的区块链读写性能。
[0015]现有方法一的缺点在于其构建成本的增加可能会对原有区块链的安全性存在影响;其次,方法一只能建立单个关键字的索引,可进行区块链单字段的多值查询以及范围查询,但不能像SQL数据库那样支持复杂查询。
[0016]现有方法二的解决方案
[0017]针对当前的区块链系统的查询性能优化,另一类解决方案的思路则是不去修改原有区块链内核,而将区块链上的交易数据转移到链外的数据库代替查询,以此加速查询效率。
[0018]FabricSQL是此类解决方案中的一个实现,如图2所示,方案分为两个部分:1)通过区块监听与转换机制,将Hyperledger Fabric上的有效交易转换同步至链下的MySQL中存储;2)每笔交易数据对应一个链下记录的Hash值,此Hash值通过与前一个交易Hash值进行加盐Hash获得,用于链下访问数据时验证数据完整性,以此保证链下数据的安全。
[0019]方法二虽然使用加盐Hash值验证数据完整性的方法来降低链下数据篡改风险,但用于验证的Hash值存储在链下,依旧存在Hash值全部被篡改导致验证机制失效的重大风险。此外,方法二对于链外数据被篡改后如何检测恢复的情况也未提及,长此以往会存在查询准确率降低的问题。

技术实现思路

[0020]本专利技术针对原有区块链系统低效的查询效率,采用链上

链下协同查询方式,最终在不影响原有区块链的安全性能和构建成本、保证链下查询可靠性的条件下,达到优化原有区块链查询性能的目标。
[0021]本专利技术在使用链外数据库额外备份来代替区块链查询的基础上,提供一个外嵌在原有区块链系统上的链上

链下协同查询优化模型,既通过链下关系型数据库查询提高查询速度和扩展查询功能,又利用区块链特性保证链下查询结果的可靠性,从而提升原有区块链整体查询性能。具体实现方法如图3所示:
[0022]1)设计一个链上

链下数据同步机制,包含了数据处理过程:首先监听交易区块链(即原有区块链)上新区块的生成来确定可被写入到链下SQL数据库中的交易数据;然后系统通过一套数据模型转换方法,将链上交易数据转换为关系型数据存入到链下关系型数据库中,实现对原有区块链的快速查询和复杂查询支持。
[0023]2)设计了一套链上

链下验证查询的流程,包括:Hash上链流程、数据查询流程、数据检测流程。对于链下查询请求,设置一个专门存储对应交易数据的Hash值的验证区块链,保证链下查询结果的高准确性;通过异常交易数据的离线感知机制,检测链下不能由查询
验证发现的被篡改的交易数据。
[0024]3)通过改造验证链区块和构建验证链专属的区块索引,加速验证查询过程,实现交易完整性的验证速率提升。
[0025]1.链上

链下数据同步机制
[0026]链上

链下数据同步机制的流程如图4所示:
[0027]1.1)等待区块链系统中完成区块打包和验证以产生新的区块;
[0028]1.2)新区块产生后添加到所在节点本地存储的区块链文件系统中;
[0029]1.3)新区块添加完成后触发区块监听模块,将新区块中交易数据读出;
[0030]1.4)若区块链系统不过滤无效交易,则根据区块中记录的元数据标识,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于链上

链下协同的区块链查询优化的方法,其特征在于:1)设计一个链上

链下数据同步机制,包含了数据处理过程:首先监听交易区块链即原有区块链上新区块的生成来确定可被写入到链下SQL数据库中的交易数据;然后系统通过一套数据模型转换方法,将链上交易数据转换为关系型数据存入到链下关系型数据库中,实现对原有区块链的快速查询和复杂查询支持;2)设计了一套链上

链下验证查询的流程,包括:Hash上链流程、数据查询流程、数据检测流程;对于链下查询请求,设置一个专门存储对应交易数据的Hash值的验证区块链;通过异常交易数据的离线感知机制,检测链下不能由查询验证发现的被篡改的交易数据;3)通过改造验证链区块和构建验证链专属的区块索引,加速验证查询过程。2.根据权利要求1所述的基于链上

链下协同的区块链查询优化的方法,其特征在于:1)链上

链下数据同步机制1.1)等待区块链系统中完成区块打包和验证以产生新的区块;1.2)新区块产生后添加到所在节点本地存储的区块链文件系统中;1.3)新区块添加完成后触发区块监听模块,将新区块中交易数据读出;1.4)若区块链系统不过滤无效交易,则根据区块中记录的元数据标识,标记出交易集中的无效交易,不参与数据转换处理;1.5)将新区块中的每笔有效交易数据进行数据模型转换处理,转换为关系型数据;1.5.1)根据用户设置的需要上链的数据种类,以每种数据作为链下数据库表的单个字段,创建链下数据库表;1.5.2)通过排除步骤1.4中标记的无效交易,筛选出新区块的交易集中全部的有效交易;1.5.3)将交易中用户上传的历史数据种类依次提取value值,并根据链下字段的数据类型,转换为相应的数值型数据或字符型数据;1.5.4)当前交易数据全部提取完毕后,使用SQL将全部提取的value值作为一条新记录插入链下的SQL数据库中;1.5.5)处理区块内下一笔未进行数据模型转换的有效交易数据,直至全部处理完成;1.6)将转换完成后的关系型数据按顺序插入到关系数据库中,主键ID依次递增加一。3.根据权利要求1所述的基于链上

链下协同的区块链查询优化的方法,其特征在于:2)链上

链下验证查询验证链上的区块结构分为区块头和区块体两部分;验证链中的区块头中不仅包含原有的元数据信息,包括区块Hash值、前一个区块的Hash值、时间戳,还额外记录了:1)交易链区块内所有交易的关系化数据的各列总Hash值,列数等同于总Hash值的数量,用于链下被恶意篡改数据的离线检测;2)验证链区块中存储的交易Hash值数组中的第一笔交易Hash的主键ID号,用于作为构建区块索引的关键字;验证链中的区块体只记录一笔交易,该交易内容包含了一个交易Hash值数组,此数组内顺序存储了对应交易链区块内全部有效交易的关系型数据进行Hash计算后的Hash值,且每个Hash值的长度是相同的。4.根据权利要求1所述的基于链上

链下协同的区块链查询优化的方法,其特征在于:3)链下交易Hash值上链流程
2.1)首先通过链上

链下数据同步机制,将新区块中的每笔有效交易数据转换为关系型数据并按顺序插入到链下的关系数据库中后,顺序地读取出一笔新交易;2.2)通过MD5算法计算出链下交易数据的Hash值;2.3)将Hash值存放到一个Hash字符串数组中,此Hash字符串数组负责记录新区块内全部有效交易的关系型数据的Hash值;2.4)如果已Hash处理的交易数量达到了新区块的全部有效交易数量,则SQL数据库中新区块全部交易Hash值已全部处理完毕,执行步骤2.5,若没有达到则返回执行步骤2.1;2.5)验证链的节点发起一笔交易提交到验证链上,交易内容包含了步骤2.3中的Hash字符串数组;2.6)验证链将通过打包策略将此交易打包区块,并添加图5中其余...

【专利技术属性】
技术研发人员:梁毅高赞
申请(专利权)人:北京工业大学
类型:发明
国别省市:

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

1