CN114461673A - 一种基于链上-链下协同的区块链查询优化方法 - Google Patents
一种基于链上-链下协同的区块链查询优化方法 Download PDFInfo
- Publication number
- CN114461673A CN114461673A CN202210061949.7A CN202210061949A CN114461673A CN 114461673 A CN114461673 A CN 114461673A CN 202210061949 A CN202210061949 A CN 202210061949A CN 114461673 A CN114461673 A CN 114461673A
- Authority
- CN
- China
- Prior art keywords
- chain
- block
- transaction
- data
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2425—Iterative querying; Query formulation based on the results of a preceding query
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Abstract
一种基于链上‑链下协同的区块链查询优化方法属于区块链技术领域。本发明针对原有区块链系统低效的查询效率,采用链上‑链下协同查询方式,最终在不影响原有区块链的安全性能和构建成本、保证链下查询可靠性的条件下,达到优化原有区块链查询性能的目标。本发明在使用链外数据库额外备份来代替区块链查询的基础上,提供一个外嵌在原有区块链系统上的链上‑链下协同查询优化模型,既通过链下关系型数据库查询提高查询速度和扩展查询功能,又利用区块链特性保证链下查询结果的可靠性,从而提升原有区块链整体查询性能。
Description
技术领域
本发明属于区块链技术领域。
背景技术
SQL数据库:关系型数据库
NoSQL数据库:非关系型的数据库
Hash:散列/哈希
无效交易:区块链中数据不合法、不会更新状态数据库状态的交易
有效交易:区块链中验证数据合法并更新状态数据库状态的交易
异常交易:被非法篡改链下数据库中数据内容的交易
正常交易:未被篡改链下数据库中数据内容的交易
区块链最早起源于比特币的核心技术,其本质上是一个去中心化的分布式共享账本,负责记录整个网络中的所有交易信息和状态。区块链上的数据是以区块形式存储,从第一个生成的区块开始,按时间为排序依据,每个区块通过前一个区块的Hash值指向前一个区块,区块首尾依次连接形成链式结构。每个区块包括区块头和区块主体两部分,区块头包含了例如时间戳、前一区块的Hash值、当前区块的Hash值等元数据信息,区块主体则由数笔交易数据组成。区块链技术集成了多种基础技术,包括分布式共识算法、哈希运算、数字签名、P2P网络和智能合约。区块链具有去中心化、不可篡改性、隐私性和可审计性这些特点,适合解决传统中心化机构的高成本、低效率和存储数据篡改等问题。因此,区块链技术在金融服务、商品溯源、医疗教育、科学出版等商业或公益领域,愈来愈受到人们的关注。
然而,当前区块链在查询交易数据场景下表现出的查询效率低下和查询功能匮乏,难以满足现代区块链应用程序的实际需要,成为了制约区块链技术发展的一个性能瓶颈。因为区块链在设计之初重视数据的写入一致而非查询的效率,主要体现在区块链的数据结构和存储模式两个方面。从数据结构方面来说,区块链数据存储的链式结构是先天固有的缺陷,查询交易数据时需要顺序地遍历整个区块链,这导致随着区块数量的增长,查询速度会越来越慢。另外,从存储模式方面来说,现有的区块链系统多以键值存储或文件存储等非关系型数据存储模式作为基本的存储模式。因此,区块链系统账本数据和状态数据通常由文件系统和非关系型数据库负责存储。例如以太坊使用Google提供的开源数据库LevelDB记录状态数据和账本数据;超级账本Hyperledger Fabric的状态数据库可以选择使用CouchDB或LevelDB,而账本数据存放在文件系统里。相对于关系数据库,NoSQL数据库在查询方面存在以下4处不足:1)读性能弱,查询代价较高;2)没有事务处理,则无法保证查询操作结果的完整性;3)缺少用于各种查询的数据索引结构,查询效率很低;4)数据结构相对复杂,难以支持复杂的高级查询。
综上所述,如何提高区块链的查询效率、使其支持高级查询功能是一个值得解决的问题。
针对当前的区块链系统的查询性能优化,其中一类解决方案是通过添加语义和构建索引、修改或替换区块链底层数据库等方式,修改原有区块链的内核以提示区块链系统自身的查询性能。
现有方法一的解决方案
BlockchainDB是上述类型解决方案中的一个实现,如图1所示,它采用将红黑树和区块结构中Merkle树相结合的索引结构,并且基于Hash指针来加速原有区块链的查询。该索引中,叶子节点负责存放数据,而非叶子节点只存放关键字和孩子节点的总Hash值,而且其左子树存储小于等于节点关键字的数据,右子树存储大于节点关键字的数据。此方案保证了索引的不可篡改性的同时具有较好的区块链读写性能。
现有方法一的缺点在于其构建成本的增加可能会对原有区块链的安全性存在影响;其次,方法一只能建立单个关键字的索引,可进行区块链单字段的多值查询以及范围查询,但不能像SQL数据库那样支持复杂查询。
现有方法二的解决方案
针对当前的区块链系统的查询性能优化,另一类解决方案的思路则是不去修改原有区块链内核,而将区块链上的交易数据转移到链外的数据库代替查询,以此加速查询效率。
FabricSQL是此类解决方案中的一个实现,如图2所示,方案分为两个部分:1)通过区块监听与转换机制,将Hyperledger Fabric上的有效交易转换同步至链下的MySQL中存储;2)每笔交易数据对应一个链下记录的Hash值,此Hash值通过与前一个交易Hash值进行加盐Hash获得,用于链下访问数据时验证数据完整性,以此保证链下数据的安全。
方法二虽然使用加盐Hash值验证数据完整性的方法来降低链下数据篡改风险,但用于验证的Hash值存储在链下,依旧存在Hash值全部被篡改导致验证机制失效的重大风险。此外,方法二对于链外数据被篡改后如何检测恢复的情况也未提及,长此以往会存在查询准确率降低的问题。
发明内容
本发明针对原有区块链系统低效的查询效率,采用链上-链下协同查询方式,最终在不影响原有区块链的安全性能和构建成本、保证链下查询可靠性的条件下,达到优化原有区块链查询性能的目标。
本发明在使用链外数据库额外备份来代替区块链查询的基础上,提供一个外嵌在原有区块链系统上的链上-链下协同查询优化模型,既通过链下关系型数据库查询提高查询速度和扩展查询功能,又利用区块链特性保证链下查询结果的可靠性,从而提升原有区块链整体查询性能。具体实现方法如图3所示:
1)设计一个链上-链下数据同步机制,包含了数据处理过程:首先监听交易区块链(即原有区块链)上新区块的生成来确定可被写入到链下SQL数据库中的交易数据;然后系统通过一套数据模型转换方法,将链上交易数据转换为关系型数据存入到链下关系型数据库中,实现对原有区块链的快速查询和复杂查询支持。
2)设计了一套链上-链下验证查询的流程,包括:Hash上链流程、数据查询流程、数据检测流程。对于链下查询请求,设置一个专门存储对应交易数据的Hash值的验证区块链,保证链下查询结果的高准确性;通过异常交易数据的离线感知机制,检测链下不能由查询验证发现的被篡改的交易数据。
3)通过改造验证链区块和构建验证链专属的区块索引,加速验证查询过程,实现交易完整性的验证速率提升。
1.链上-链下数据同步机制
链上-链下数据同步机制的流程如图4所示:
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依次递增加一。
2.链上-链下验证查询模型
如图5所示,验证链上的区块结构分为区块头和区块体两部分。
验证链中的区块头中不仅包含原有的元数据信息,包括区块Hash值、前一个区块的Hash值、时间戳,还额外记录了:1)交易链区块内所有交易的关系化数据的各列总Hash值(列数等同于总Hash值的数量),用于链下被恶意篡改数据的离线检测;2)验证链区块中存储的交易Hash值数组中的第一笔交易Hash的主键ID号,用于作为构建区块索引的关键字。
验证链中的区块体只记录一笔交易,该交易内容包含了一个交易Hash值数组,此数组内顺序存储了对应交易链区块内全部有效交易的关系型数据进行Hash计算后的Hash值,且每个Hash值的长度是相同的。
3.链下交易Hash值上链流程
图6展示了链上-链下数据验证模型的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中其余的区块信息生成一个新区块,添加到验证链账本上。
4.验证查询流程
链上-链下查询验证流程如图7所示,一共为7个具体步骤:
3.1)用户端发起交易数据查询请求;
3.2)通过SQL查询在链下SQL数据库中查询数据;
3.3)获得查询结果;
3.4)找到查询结果所涉及到的每笔交易,通过MD5算法计算每笔交易的Hash值;
3.5)在验证链上查找对应记录的Hash值;
3.6)将计算得到的Hash值与验证链上记录的对应Hash值进行比较;
3.7)若Hash值相同,则证明查询结果正确可靠,将查询结果返回给用户;否则说明交易存在被篡改的异常数据,返回交易数据验证错误的通知信息,包含验证错误的状态值0、异常交易的ID与区块号,然后等待SQL数据库修复被篡改的异常交易后重新执行验证或回到原有交易链上查询。
5.链下异常数据离线感知机制
如图8所示,链下异常数据离线感知机制通过行列双向提取Hash验证码来检测链下数据库中被恶意篡改的异常交易。链下关系型数据库中数据的Hash验证码提取分为两部分:1)横向上,计算每笔交易数据的Hash值并合成一个Hash数组;2)纵向上,对于一个区块内的所有交易,将相同一列下的属性值和区块第一笔交易的主键ID号进行加盐Hash运算生成一个列总Hash值,存放到验证链区块结构中的区块头中。
链下异常数据离线感知机制定时启动和检测被篡改的异常交易,链下数据离线检测方法的具体过程分为以下步骤:
4.1)选中当前SQL数据库表中的一个字段;
4.2)读取每笔链下交易数据;
4.2)对于同属于一个交易链区块的交易,合并这些交易在该字段下的全部值,计算其Hash值作为该字段的列总Hash值;
4.3)获取当前字段的列总Hash值后,执行下一个字段的列总Hash值计算,直至全部字段执行完毕;
4.4)将链下生成的列总Hash值与依次顺序对比区块头存储的该列的总Hash值;
4.5)如果Hash值相同,返回交易数据正常的状态值1;如果出现Hash值不一致,说明该列存在被篡改数据,此时涉及到该列的查询请求将不可处理,返回交易数据异常信息,包含离线检测异常的状态值0、异常列的字段名称和区块号,而对于不涉及该列的查询请求系统仍然能够正常处理。
6.验证链区块索引
验证链的区块索引结构如图9所示。验证链采用各个区块的区块头中记录的第一笔交易Hash的主键ID号(以下简称IDfirstTX)作为关键字,利用B+树结构构建区块索引,叶子节点的指针指向区块存储的位置。因为IDfirstTX是唯一且随区块增加而增大的,故叶子节点按照关键字大小依次链接的顺序与区块链的链式顺序是一致的。
7.链上-链下查询数据的快速验证方法
链上-链下数据快速验证方法的详细过程如图10所示:
5.1)从链下SQL数据库中获取待验证交易数据;
5.2)将待验证交易数据进行Hash计算,作为待验证Hash值;
5.3)通过验证链区块索引快速确定目标交易Hash值所在区块,如果待验证交易ID号位于当前区块记录的IDfirstTX与下一区块记录的IDfirstTX的左闭右开区间内,则目标交易Hash值在当前目标区块内;否则,进入下一个区块进行搜索;
5.4)根据待验证交易的ID号与目标区块记录的IDfirstTX的差值、Hash值固定长度,计算地址偏移量;
5.5)确定目标区块的交易中Hash数组的地址,通过地址偏移量找到对应存储的目标交易Hash值;
5.6)对比待验证Hash值与目标交易Hash值;
5.7)如果Hash值相同,返回验证通过的状态值1;否则,返回验证错误的状态值0。
本发明通过链上-链下协同查询优化模型,将链下关系型数据库用于提高查询速度和扩展查询功能,提升原有区块链整体查询性能。其次,通过设计验证链和加速验证方法,加强了链下查询结果的可靠性。此外,链上-链下协同查询优化模型能够外嵌在原有区块链系统上,提高了模型的通用性。
附图说明
图1为本发明的相关现有方法一的解决方案。
图2为本发明的相关现有方法二的解决方案。
图3为本发明的链上-链下协同查询优化模型的设计方案。
图4为本发明的链上-链下数据同步流程图。
图5为本发明的验证链区块结构图。
图6为本发明的Hash上链流程图。
图7为本发明的链上-链下查询验证流程图。
图8为本发明的行列双向提取Hash验证码示意图。
图9为本发明的验证链区块索引结构图。
图10为本发明的链上-链下数据快速验证流程图。
图11为本发明的多机多节点系统部署图。
具体实施方式
如图11所示的目标系统中,交易链和验证链的实现都基于Hyperledger Fabric。目标系统部署在十四台服务器上,交易链和验证链均采用raft共识机制,各以三个orderer节点作为排序集群,两个peer组织,每个组织包含两个peer节点。目标系统采用了MySQL作为链下数据库。服务器具体配置如下表所示。
节点名称 | 节点类型 | 所属组织 | 所属区块链 |
Orderer0 | 排序节点 | Orderer组织1 | 交易链 |
Orderer1 | 排序节点 | Orderer组织1 | 交易链 |
Orderer2 | 排序节点 | Orderer组织1 | 交易链 |
Orderer3 | 排序节点 | Orderer组织2 | 验证链 |
Orderer4 | 排序节点 | Orderer组织2 | 验证链 |
Orderer5 | 排序节点 | Orderer组织2 | 验证链 |
Peer0.org1 | peer主节点 | Peer组织1 | 交易链 |
Peer1.org1 | peer从节点 | Peer组织1 | 交易链 |
Peer0.org2 | peer主节点 | Peer组织2 | 交易链 |
Peer1.org2 | peer从节点 | Peer组织2 | 交易链 |
Peer0.org3 | peer主节点 | Peer组织3 | 验证链 |
Peer1.org3 | peer从节点 | Peer组织3 | 验证链 |
Peer0.org4 | peer主节点 | Peer组织4 | 验证链 |
Peer1.org4 | peer从节点 | Peer组织4 | 验证链 |
系统部署完毕后,交易链的orderer0、orderer1和orderer2节点组成一个orderer组织1,在交易链通道上根据所设置好的排序条件将所有交易进行排序,再依据出块机制将交易打包成新交易链区块,广播给peer组织1、peer组织2的主节点Peer0.org1、Peer0.org2进行交易信息校验,其中无效交易被添加元数据记录用于排除。校验完成后主节点与组织内其他节点通信,将区块追加到本地交易链通道上。此时客户端的区块监听模块触发数据同步事件,将新区块中的每笔有效交易数据进行数据模型转换处理,转换为关系型数据按顺序插入到链下的MySQL数据库中。链下数据同步完成后,系统通过MD5算法计算出新区块每笔链下交易数据的Hash值,存放到一个Hash字符串数组中,选择服务器A的Peer0.org3节点发起一笔包含了此Hash字符串数组的交易提交到验证链上,Orderer组织2将在验证链通道上将此笔交易单独打包成一个验证链区块,广播给peer组织3、peer组织4的主节点Peer0.org3、Peer0.org4进行交易信息校验和与组织内其他节点通信,将区块存储在本地验证链通道上。
客户端发送查询交易请求时,通过MySQL数据库进行链下SQL查询,将查询结果暂存系统中,并将查询结果包含的每笔交易通过MD5算法计算Hash值,然后系统在验证链上查找对应记录的Hash值并对比,若值相同则将链下SQL查询结果返回给用户端;否则验证失败,系统将调用原有的fabric SDK接口进行区块链查询。此外,所有加入了验证链通道的peer节点(Peer0.org3、Peer0.org4、Peer1.org3、Peer1.org4),系统将每隔2小时执行一次异常交易数据离线感知机制,对于发现的链下被篡改数据进行日志记录,并到交易链上找到对应交易重新同步和更新。
Claims (8)
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中其余的区块信息生成一个新区块,添加到验证链账本上。
5.根据权利要求1所述的基于链上-链下协同的区块链查询优化的方法,其特征在于:
4)验证查询流程
一共为7个具体步骤:
3.1)用户端发起交易数据查询请求;
3.2)通过SQL查询在链下SQL数据库中查询数据;
3.3)获得查询结果;
3.4)找到查询结果所涉及到的每笔交易,通过MD5算法计算每笔交易的Hash值;
3.5)在验证链上查找对应记录的Hash值;
3.6)将计算得到的Hash值与验证链上记录的对应Hash值进行比较;
3.7)若Hash值相同,则证明查询结果正确可靠,将查询结果返回给用户;否则说明交易存在被篡改的异常数据,返回交易数据验证错误的通知信息,包含验证错误的状态值0、异常交易的ID与区块号,然后等待SQL数据库修复被篡改的异常交易后重新执行验证或回到原有交易链上查询。
6.根据权利要求1所述的基于链上-链下协同的区块链查询优化的方法,其特征在于:
5)链下异常数据离线感知机制
链下异常数据离线感知机制通过行列双向提取Hash验证码来检测链下数据库中被恶意篡改的异常交易;链下关系型数据库中数据的Hash验证码提取分为两部分:横向上,计算每笔交易数据的Hash值并合成一个Hash数组;纵向上,对于一个区块内的所有交易,将相同一列下的属性值和区块第一笔交易的主键ID号进行加盐Hash运算生成一个列总Hash值,存放到验证链区块结构中的区块头中;
链下异常数据离线感知机制定时启动和检测被篡改的异常交易,链下数据离线检测方法的具体过程分为以下步骤:
4.1)选中当前SQL数据库表中的一个字段;
4.2)读取每笔链下交易数据;
4.2)对于同属于一个交易链区块的交易,合并这些交易在该字段下的全部值,计算其Hash值作为该字段的列总Hash值;
4.3)获取当前字段的列总Hash值后,执行下一个字段的列总Hash值计算,直至全部字段执行完毕;
4.4)将链下生成的列总Hash值与依次顺序对比区块头存储的该列的总Hash值;
4.5)如果Hash值相同,返回交易数据正常的状态值1;如果出现Hash值不一致,说明该列存在被篡改数据,此时涉及到该列的查询请求将不可处理,返回交易数据异常信息,包含离线检测异常的状态值0、异常列的字段名称和区块号,而对于不涉及该列的查询请求系统仍然能够正常处理。
7.根据权利要求1所述的基于链上-链下协同的区块链查询优化的方法,其特征在于:
6)验证链区块索引
验证链采用各个区块的区块头中记录的第一笔交易Hash的主键ID号,以下简称IDfirstTX;作为关键字,利用B+树结构构建区块索引,叶子节点的指针指向区块存储的位置;因为IDfirstTX是唯一且随区块增加而增大的,故叶子节点按照关键字大小依次链接的顺序与区块链的链式顺序是一致的。
8.根据权利要求1所述的基于链上-链下协同的区块链查询优化的方法,其特征在于:
7)链上-链下查询数据的快速验证
5.1)从链下SQL数据库中获取待验证交易数据;
5.2)将待验证交易数据进行Hash计算,作为待验证Hash值;
5.3)通过验证链区块索引快速确定目标交易Hash值所在区块,如果待验证交易ID号位于当前区块记录的IDfirstTX与下一区块记录的IDfirstTX的左闭右开区间内,则目标交易Hash值在当前目标区块内;否则,进入下一个区块进行搜索;
5.4)根据待验证交易的ID号与目标区块记录的IDfirstTX的差值、Hash值固定长度,计算地址偏移量;
5.5)确定目标区块的交易中Hash数组的地址,通过地址偏移量找到对应存储的目标交易Hash值;
5.6)对比待验证Hash值与目标交易Hash值;
5.7)如果Hash值相同,返回验证通过的状态值1;否则,返回验证错误的状态值0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210061949.7A CN114461673A (zh) | 2022-01-19 | 2022-01-19 | 一种基于链上-链下协同的区块链查询优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210061949.7A CN114461673A (zh) | 2022-01-19 | 2022-01-19 | 一种基于链上-链下协同的区块链查询优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461673A true CN114461673A (zh) | 2022-05-10 |
Family
ID=81409651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210061949.7A Pending CN114461673A (zh) | 2022-01-19 | 2022-01-19 | 一种基于链上-链下协同的区块链查询优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461673A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860730A (zh) * | 2022-05-17 | 2022-08-05 | 北京新五好农业科技有限公司 | 一种基于区块链的土地数据存储方法、系统及存储介质 |
CN115408474A (zh) * | 2022-11-03 | 2022-11-29 | 青岛理工大学 | 面向多源数据库的区块链海量数据存证系统及存证方法 |
CN115640597A (zh) * | 2022-09-09 | 2023-01-24 | 南京审计大学 | 一种面向区块链低存储开销的审计数据有效性验证方法 |
-
2022
- 2022-01-19 CN CN202210061949.7A patent/CN114461673A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860730A (zh) * | 2022-05-17 | 2022-08-05 | 北京新五好农业科技有限公司 | 一种基于区块链的土地数据存储方法、系统及存储介质 |
CN115640597A (zh) * | 2022-09-09 | 2023-01-24 | 南京审计大学 | 一种面向区块链低存储开销的审计数据有效性验证方法 |
CN115640597B (zh) * | 2022-09-09 | 2023-07-21 | 南京审计大学 | 一种面向区块链低存储开销的审计数据有效性验证方法 |
CN115408474A (zh) * | 2022-11-03 | 2022-11-29 | 青岛理工大学 | 面向多源数据库的区块链海量数据存证系统及存证方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165224B (zh) | 一种在区块链数据库上针对关键字key的索引方法 | |
CN114461673A (zh) | 一种基于链上-链下协同的区块链查询优化方法 | |
US11651036B2 (en) | Integrated index blocks and searching in blockchain systems | |
EP4155966A1 (en) | Blockchain data indexing method, and blockchain data storage method | |
CN110879813B (zh) | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 | |
US8924365B2 (en) | System and method for range search over distributive storage systems | |
CN113329031A (zh) | 一种区块的状态树的生成方法及装置 | |
US20210109917A1 (en) | System and Method for Processing a Database Query | |
US11762839B2 (en) | Search method using data structure for supporting multiple search in blockchain-based IoT environment, and device according to method | |
WO2020167887A1 (en) | Hybrid blockchains and streamchains using non-crypto hashes for securing audio-, video-, image-, and speech-based transactions and contracts | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
CN112286963B (zh) | 一种区块链终端数据可信查询系统及其实现方法 | |
CN101004744A (zh) | 远程多点文件索引同步系统及方法 | |
CN111444027B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN107506260A (zh) | 一种动态分块数据库增量备份方法 | |
CN107391557B (zh) | 针对设置链外勘误表的区块链串行查询方法及系统 | |
JP2020182215A (ja) | チェーンデータの検証システムおよび方法 | |
CN110555770A (zh) | 一种基于增量哈希的区块链世界状态校验和恢复方法 | |
CN107451177B (zh) | 针对增加区块的单个勘误的区块链的查询方法及系统 | |
CN114020737A (zh) | 一种区块链数据高效可信索引方法 | |
CN112948898A (zh) | 一种区块链中防止应用数据被篡改的方法和安全模块 | |
CN109344163B (zh) | 一种数据校验方法、装置和计算机可读介质 | |
CN115237914A (zh) | 防篡改索引结构及其构建、存储和查询方法 | |
CN111767168B (zh) | 基于区块链的便于数据回溯的存储系统 | |
CN113656504A (zh) | 一种基于时序属性的区块链交易提交、编辑和查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |