【技术实现步骤摘要】
一种基于链上
‑
链下协同的区块链查询优化方法
[0001]本专利技术属于区块链
技术介绍
[0002]SQL数据库:关系型数据库
[0003]NoSQL数据库:非关系型的数据库
[0004]Hash:散列/哈希
[0005]无效交易:区块链中数据不合法、不会更新状态数据库状态的交易
[0006]有效交易:区块链中验证数据合法并更新状态数据库状态的交易
[0007]异常交易:被非法篡改链下数据库中数据内容的交易
[0008]正常交易:未被篡改链下数据库中数据内容的交易
[0009]区块链最早起源于比特币的核心技术,其本质上是一个去中心化的分布式共享账本,负责记录整个网络中的所有交易信息和状态。区块链上的数据是以区块形式存储,从第一个生成的区块开始,按时间为排序依据,每个区块通过前一个区块的Hash值指向前一个区块,区块首尾依次连接形成链式结构。每个区块包括区块头和区块主体两部分,区块头包含了例如时间戳、前一区块的Hash值、当前区块的Hash值等元数据信息,区块主体则由数笔交易数据组成。区块链技术集成了多种基础技术,包括分布式共识算法、哈希运算、数字签名、P2P网络和智能合约。区块链具有去中心化、不可篡改性、隐私性和可审计性这些特点,适合解决传统中心化机构的高成本、低效率和存储数据篡改等问题。因此,区块链技术在金融服务、商品溯源、医疗教育、科学出版等商业或公益领域,愈来愈受到人们的关注。
[0010]然而,当前区块链在查询交易数 ...
【技术保护点】
【技术特征摘要】
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中其余...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。