CN116894047A - 一种基于区块链的可验证溯源方法和装置 - Google Patents
一种基于区块链的可验证溯源方法和装置 Download PDFInfo
- Publication number
- CN116894047A CN116894047A CN202310931300.0A CN202310931300A CN116894047A CN 116894047 A CN116894047 A CN 116894047A CN 202310931300 A CN202310931300 A CN 202310931300A CN 116894047 A CN116894047 A CN 116894047A
- Authority
- CN
- China
- Prior art keywords
- query
- result
- mbtree
- triples
- block
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000010276 construction Methods 0.000 claims abstract description 48
- 238000012795 verification Methods 0.000 claims abstract description 32
- 238000013507 mapping Methods 0.000 claims description 13
- 230000000694 effects Effects 0.000 claims description 10
- 238000005457 optimization Methods 0.000 claims description 9
- 230000002776 aggregation Effects 0.000 claims description 8
- 238000004220 aggregation Methods 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 5
- 230000006835 compression Effects 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 3
- 230000008859 change Effects 0.000 abstract description 4
- 238000013461 design Methods 0.000 abstract description 3
- 239000003814 drug Substances 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 229940079593 drug Drugs 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013496 data integrity verification Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 235000021393 food security Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/018—Certifying business or products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- General Health & Medical Sciences (AREA)
- Entrepreneurship & Innovation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链的可验证溯源方法和装置,用户可以根据目标实体的状态变化进行溯源查询并且实现查询结果的自验证,链式查询中对区块结构和交易内容进行扩充使之支持PROV模型,并且在实现区块链溯源查询方法的基础之上,进一步地运用MBtree的设计、VO的构造等方法来验证溯源结果的正确性和完整性,从而提高区块链溯源查询***的可靠性和安全性。子图溯源查询中,会依据三元组的不同排列方式构建三类索引结构压缩存储为B+树实现溯源查询,并且通过将索引结构扩展为MBtree用以查询结果的VO构造从而实现查询结果的可验证。本发明实现了对链式数据的溯源信息查询以及子图等多模态数据进行溯源查询,扩展了可验证溯源查询的应用范围。
Description
技术领域
本发明是关于区块链技术领域,特别涉及一种基于区块链的可验证溯源方法和装置。
背景技术
数据溯源是一种追本溯源的技术,它指的是对目标数据衍生之前的原始数据以及其演变过程的进行描述,其目的是追踪数据的起源和重现数据的历史状态。在如今的大数据时代,对于数据的分析与评估以保证科学数据的可信与安全性尤为重要,特别是在当前产业所面临的食品安全、药品安全与信息溯源、物流效率提高等问题场景中信息溯源技术有举足轻重的地位。近年来区块链技术快速发展,其具有的去中心化、公开透明、不易篡改、分布式存储等特性,非常适用于可靠地存储溯源数据。
目前已有的基于区块链的数据溯源发明创造大多是针对特定应用场景之下的区块链溯源***,如某基于区块链的食品安全溯源体系设计,该溯源***主要分为物理层、通信层、数据库层和接口层,而区块链技术主要应用于数据库层和通信层。在该食品溯源***中,每件产品的身份标识与参数信息都经过数字化后存储于区块链网络中,并且利用产品与参与者的标识并通过智能合约维护数据的有序性和可靠性。当产品涉及到交易过程或企业内部对其进行信息维护时,会通过区块链来记录操作日志并且使用时间戳技术和不对称加密技术保证数据不被篡改。该***中所有产品信息都是以电子文档的方式存储并且包含对应参与方的签名信息,当进行溯源查询操作时,只有拥有相应访问权限的参与者使用密钥才能进行文档内容的读取。因此,现有的基于区块链的数据溯源技术大多实现了特定应用场景之下的溯源查询方法并构建了区块链溯源***,但是它们均未深入考虑到区块链溯源查询结果的验证问题,这就不能保证查询结果的正确性和完整性,使得溯源查询***并非是完全可靠的。
发明内容
本发明的目的在于提供一种基于区块链的可验证溯源方法和装置,旨在基于区块链技术实现数据溯源,并且保证查询结果的可验证性,以解决上述现有技术中存在的实际问题。
为实现上述目的,本发明提供一种基于区块链的可验证溯源方法,当对目标实体是一系列快照的偏序组合进行追溯时,执行以下步骤:
S11,首先以PROV溯源模型为基础,对区块交易内容和区块结构进行扩展,并通过在区块链事务中加入必要的元数据来支持溯源查询;
S12,针对扩充后的区块交易内容逐区块进行MBtree的构建,其中将每个目标实体的溯源码procode作为节点key值进行索引,交易内容则作为value存储于叶节点中,每个节点会计算其value的hash值并存储于节点之中用于后续VO的构建;
S13,依据目标实体的溯源码对该MBtree进行搜索并且存储相应的搜索路径及邻居节点进行VO的构建,最终将VO和查询结果一同返回给用户;
S14,用户可以根据VO以及结果数据重新计算出一个根hash,并且将其与区块中存储的根hash值进行比较以验证溯源结果的正确性;
当对目标实体是以RDF三元组表述的图数据进行追溯时,执行以下步骤:
S21,通过以SPARQL语言的语法规则构建查询语句,以MBtree的构建方式来构建相应的索引结构;并根据建立的映射表中的映射关系将三元组中的数据项依次从字符串形式编码为整数ID,并且将所有的三元组按字典序压缩存储于B+树的叶节点之中;使用构造MHT的方法对每个节点自下而上地计算hash值,从而将索引结构扩展为MBtree用以后续VO的构建;
S22,当发起查询请求时,若只涉及单个三元组时,则通过全索引进行范围查询;若涉及到多个三元组时,则首先通过连接排序算法优化三元组顺序,可以使得前一个三元组的匹配结果作为其后续三元组的查询条件进行匹配,用来缩减中间结果数量;当涉及到多个中间结果需要进行连接操作时,可以进行选择率估计进行连接顺序的优化;并且在需要进行选择率估计或查询语句中包括去重操作(DISTINCT)的情景之下可以使用聚合索引来提高查询效率;
S23,通过存储MBtree搜索路径上的邻居节点来构建查询结果的VO,若查询语句中只有一个条件三元组,则将查询结果和VO一起返回给用户;若查询语句包含多个条件三元组,在优化三元组连接顺序之后,对于每一个被选择的MBtree索引会构建一个中间结果的VO,并且在最终将中间结果、中间结果对应的VO以及最终的连接结果返回给用户。
S24,对于查询语句中只有一个条件三元组,用户根据VO以及结果数据可以重新自底向上地计算出一个根hash,并且将其与所存储的MBtree的根hash进行比较从而验证溯源结果的正确性和完整性验证;对于查询语句包含多个条件三元组,用户可以根据接收到的中间结果和相应的VO重新进行根hash的计算,并且与对应的MBtree根hash进行比较,在验证中间结果的正确性和完整性基础上将接收到的中间结果进行重新连接从而验证溯源最终结果的正确性和完整性。
进一步地,当对目标实体是一系列快照的偏序组合进行追溯时,每个目标数据会附有一个版本号,每搜索到一个目标实体的快照则会保存其版本号,通过检查版本号的连续进行溯源信息完整性的验证;同时会对临界的版本所在区块进行向前和向后的逐区块溯源查找,验证小于或大于查询范围区块高度中的首次出现的目标数据版本号与查询范围中临界目标数据的版本号连续性,用于保证查询范围临界处溯源信息的完整性。
进一步地,所述S11中为了支持PROV模型,扩展区块结构和交易内容需要增加版本号、溯源码即实体ID、操作开始和结束的时间及其他需要扩展的内容,同时增加三个基本类所对应的元数据Agent、Entity、Activity。
进一步地,对所述S23选择率估计可以通过直方图和频繁路径方法来进行优化查询,其中,直方图估计用于估计查询结果的基数或选择性;频繁路径用于估计查询中涉及的路径模式的选择性。
进一步地,所述S21的索引结构主要针对图数据中主语、谓语、宾语的六种排列方式(SPO,SOP,OSP,OPS,PSO.POS)构建全索引,以及构建额外的只有两个条目的聚合索引(SP,PS,SO,OS,PO,OP)和单值索引。
进一步地,所述S22中字典序压缩存储在三元组有相同的索引前缀时可以将其按字典序在叶节点中连续压缩存储,即在单叶子页面中只存储数值变化的部分。
本申请还提供一种基于区块链的可验证溯源装置,该装置包括链式查询模块和子图查询模块,其中链式查询模块是对目标实体是一系列快照的偏序组合进行追溯,包括区块扩充子模块,MBtree构建子模块,VO构建子模块和验证子模块;
其中,区块扩充子模块用于对区块交易内容和区块结构进行扩展并增加必要的元数据来支持溯源查询;
MBtree构建子模块针对扩充后的区块交易内容逐区块进行MBtree的构建,其中将每个目标实体的溯源码procode作为节点key值进行索引,交易内容则作为value存储于叶节点中,每个节点会计算其value的hash值并存储于节点之中用于后续VO的构建;
VO构建子模块依据目标实体的溯源码对该MBtree进行搜索并且存储相应的搜索路径及邻居节点进行VO的构建,最终将VO和查询结果一同返回给用户;
验证子模块根据VO以及结果数据重新计算出一个根hash,并且将其与区块中存储的根hash值进行比较以验证溯源结果的正确性;
子图查询模块是对目标实体以RDF三元组表述的图数据进行追溯,包括MBtree构建子模块,查询优化子模块、VO构建子模块和验证子模块,其中,
MBtree构建子模块通过以SPARQL语言的语法规则构建查询语句,以MBtree的构建方式来构建相应的索引结构;并根据建立的映射表中的映射关系将三元组中的数据项依次从字符串形式编码为整数ID,并且将所有的三元组按字典序压缩存储于B+树的叶节点之中;使用构造MHT的方法对每个节点自下而上地计算hash值,从而将索引结构扩展为MBtree用以后续VO的构建;
查询优化子模块在发起查询请求时,若只涉及单个三元组时,则通过全索引进行范围查询;若涉及到多个三元组时,则首先通过连接排序算法优化三元组顺序,可以使得前一个三元组的匹配结果作为其后续三元组的查询条件进行匹配,用来缩减中间结果数量;当涉及到多个中间结果需要进行连接操作时,可以进行选择率估计进行连接顺序的优化;并且在需要进行选择率估计或查询语句中包括去重操作的情景之下可以使用聚合索引来提高查询效率;
VO构建子模块通过存储MBtree搜索路径上的邻居节点来构建查询结果的VO,若查询语句中只有一个条件三元组,则将查询结果和VO一起返回给用户;若查询语句包含多个条件三元组,在优化三元组连接顺序之后,对于每一个被选择的MBtree索引会构建一个中间结果的VO,并且在最终将中间结果、中间结果对应的VO以及最终的连接结果返回给用户;
验证子模块对于查询语句中只有一个条件三元组,用户根据VO以及结果数据可以重新自底向上地计算出一个根hash,并且将其与所存储的MBtree的根hash进行比较从而验证溯源结果的正确性和完整性验证;对于查询语句包含多个条件三元组,用户可以根据接收到的中间结果和相应的VO重新进行根hash的计算,并且与对应的MBtree根hash进行比较,在验证中间结果的正确性和完整性基础上将接收到的中间结果进行重新连接从而验证溯源最终结果的正确性和完整性。
与现有技术相比,本发明具有如下优点和有益效果:
(1)本发明的溯源信息查询直接基于MB+树的查询,并且在查询过程中会依据查询结果搜索路径上的邻居节点建立相应的验证对象VO从而验证查询结果的正确性。
(2)本发明的链式溯源查询中会扩展区块交易结构,使得每个涉及目标实体的交易有唯一版本号用于溯源结果的完整性验证。
(3)本发明的子图溯源查询中,本发明会依据三元组的不同排列方式构建三类索引结构压缩存储为B+树用以实现溯源查询,并且通过将索引结构扩展为MBtree用以查询结果的VO构造从而实现查询结果的可验证。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例提供的一种基于区块链的可验证溯源方法链式查询流程图;
图2为本发明实施例提供的一种基于区块链的可验证溯源方法子图查询流程图;
图3为本发明实施例提供的一种基于区块链的可验证溯源装置链式查询模块结构示意图;
图4为本发明实施例提供的一种基于区块链的可验证溯源装置子图查询模块结构示意图;
图5为本发明实施例提供的一种基于区块链的可验证溯源方法VO验证过程示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下是对说明书涉及的相关英文词汇的释义:
1、PROV:即Provenance,是一种用于描述和表示数据和实体来源的模型。PROV溯源模型旨在揭示数据、实体和活动的来源、演化历史以及相互关系。PROV定义了三类核心数据类型及其相互之间的关系:
(1)实体(Entity):实体是数据的具体化或数据生成过程中的一些物理或数字对象;实体可以是文件、数据库记录、传感器数据等;
(2)活动(Activity):活动表示对实体的操作或处理过程,其中包括对数据的处理、计算、转换等。活动可以创建、使用或影响实体;
(3)代理(Agent):代理是执行活动的实体,可以是人、组织、***等;代理负责执行活动并对实体的生成、使用或影响负责。
PROV是从数据建模的观点出发,并考虑到信息表示和数据共享领域现有的技术状况。因此,PROV提供了类、属性和约束,利用语义网技术(如OWL2本体、XML、Dublin Core等)对溯源信息进行建模。
其中比较重要的PROV-DM(作为W3C标准发布):数据模型的核心慨念,用于描述溯源的通用词汇和概念,应用于由PROV-CONSFRAINTS定义的一组约束。
2、VO,即Verifiable Object,在区块链***中常指由服务提供者(ServiceProvider,SP)构造的,用于验证查询结果是否正确的一类实体。可验证查询是一种机制,用于验证由远程或不可信数据源返回的查询结果是否未被篡改,并且与预期的查询结果一致。本发明通过引入验证对象(VO),可以进行查询结果的可靠性验证。VO的作用是接收查询结果,并使用预先共享的信息、算法或密钥来验证结果的正确性。它可以是一个独立的实体、服务、程序或***,负责验证查询结果的完整性和可信度。验证对象可以基于数字签名、哈希函数、加密算法或其他验证机制来确保结果的安全性和一致性。
3、MHT:全称为Merkle Hash Tree,也称为Merkle树或哈希树,它是一种基于哈希函数的二叉树结构。它的构造过程主要有以下几个步骤:
(1)数据分块:将用于构建MHT的数据按固定大小(通常为2的幂)进行分块,若不能恰好分为整数块可以通过填充等方式使其成为2的幂;
(2)哈希运算:对每个数据块应用hash函数,得到相应的hash值;
(3)构建叶子节点:将每个数据块的hash值作为叶节点,以从左到右的顺序进行叶节点层的构建;
(4)整棵MHT的构建:从叶节点层开始,每相邻的两个节点进行hash计算,即将它们的hash值拼接起来再运用hash函数计算得到其父节点的hash值;依次逐层向上计算,直到得到根节点。
4、RDF,即Resource Description Framework,是图数据库的一种描述方式,或者说是一种使用协议。它以“三元组”(triple)的方式,描述事物与事物之间的直接关系。“三元组”是RDF的核心概念,指两个事物及二者之间的关系(谓语),在语法上呈现为“主语+谓语+宾语”,要求谓语必须具有明确的定义且每个谓语有一个明确的URL,每个URL里面可以包含多种谓语,通过“前缀谓语”的形式来区分。
5、MBtree,即Merkle-BTree,其工作原理与B+-树类似,也是由普通的B+-树节点组成,这些节点被扩展为与每个指针条目相关的一个哈希值。与叶子节点上的条目相关的哈希值是根据数据库记录本身计算的,而与索引节点条目相关的哈希值则是在其子节点的哈希值的串联上计算的。
6、hash,主要指hash函数,是一种将输入数据转换为固定长度输出的算法。它将任意长度的数据映射为固定长度的哈希值(也称为摘要、指纹或签名)。哈希函数是一种单向函数,无法从哈希值还原出原始输入数据。这使得哈希函数在数据安全性、完整性验证和加密等领域中发挥了重要的作用。特别的,在数据完整性验证中,通过比较预期的哈希值和实际计算得到的哈希值,可以验证数据在传输或存储过程中是否被篡改。
现有技术中基于区块链的数据溯源技术大多实现了特定应用场景之下的溯源查询方法并构建了区块链溯源***,但是它们均未考虑到区块链溯源查询结果的验证问题,这就并没有保证查询结果的正确性和完整性,使得溯源查询***并非是完全可靠的。本说明书提供的可验证溯源方法主要适用于链式溯源查询以及针对图数据的溯源查询。链式溯源查询指查询目标实体以一系列版本的方式进行存储的溯源信息,子图查询则是指查询图数据库中存储的目标实体的演变历史。大部分的应用场景下的溯源信息都能够以这两种方式进行存储,所以可以说我们的发明适用于绝大部分应用场景。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
本说明书实施例提供一种基于区块链的可验证溯源方法,当进行链式查询时,即目标实体是一系列快照的偏序组合的溯源信息进行追溯,如图1所示,例如查询目标实体在某时间段内的演化历史,主要执行以下步骤:
S11,首先以PROV溯源模型为基础,对区块交易内容和区块结构进行扩展,并通过在区块链事务中加入必要的元数据来支持溯源查询;
S12,针对扩充后的区块交易内容逐区块进行MBtree的构建,其中将每个目标实体的溯源码procode作为节点key值进行索引,交易内容则作为value存储于叶节点中,每个节点会计算其value的hash值并存储于节点之中用于后续VO的构建;
S13,依据目标实体的溯源码对该MBtree进行搜索并且存储相应的搜索路径及邻居节点进行VO的构建,最终将VO和查询结果一同返回给用户;
S14,用户可以根据VO以及结果数据重新计算出一个根hash,并且将其与区块中存储的根hash值进行比较以验证溯源结果的正确性;
其中,根据区块交易结构的设计,每个目标数据会附有一个版本号,每搜索到一个目标实体的快照则会保存其版本号,通过检查版本号的连续进行溯源信息完整性的验证。同时会对临界的版本所在区块进行向前和向后的逐区块溯源查找,验证小于或大于查询范围区块高度中的首次出现的目标数据版本号与查询范围中临界目标数据的版本号连续性,从而保证查询范围临界处溯源信息的完整性。
其中,区块结构的扩充主要是指在链式溯源查询中,每个区块会嵌入一棵MBtree作为索引用以溯源信息查询和VO的构造。一般区块中的交易内容比较简单,对于溯源查询则需要增加几个数据项例如版本号、溯源码(实体ID)、操作开始和结束的时间等来完善溯源信息,便于我们对相应目标实体溯源信息的查询,并且为了支持PROV模型也需要增添三个基本类所对应的元数据:Agent、Entity、Activity(对应operation),
当进行子图查询时,即对目标实体是以RDF三元组表述的图数据进行追溯时,如图2所示执行以下步骤:
S21,通过以SPARQL语言的语法规则构建查询语句,以MBtree的构建方式来构建相应的索引结构;并根据建立的映射表中的映射关系将三元组中的数据项依次从字符串形式编码为整数ID,并且将所有的三元组按字典序压缩存储于B+树的叶节点之中;使用构造MHT的方法对每个节点自下而上地计算hash值,从而将索引结构扩展为MBtree用以后续VO的构建;
S22,当发起查询请求时,若只涉及单个三元组时,则通过全索引进行范围查询;若涉及到多个三元组时,则首先通过连接排序算法优化三元组顺序,可以使得前一个三元组的匹配结果作为其后续三元组的查询条件进行匹配,用来缩减中间结果数量;当涉及到多个中间结果需要进行连接操作时,可以进行选择率估计进行连接顺序的优化;并且在需要进行选择率估计或查询语句中包括去重操作(DISTINCT)的情景之下可以使用聚合索引来提高查询效率;
S23,通过存储MBtree搜索路径上的邻居节点来构建查询结果的VO,若查询语句中只有一个条件三元组,则将查询结果和VO一起返回给用户;若查询语句包含多个条件三元组,在优化三元组连接顺序之后,对于每一个被选择的MBtree索引会构建一个中间结果的VO,并且在最终将中间结果、中间结果对应的VO以及最终的连接结果返回给用户。
S24,对于查询语句中只有一个条件三元组,用户根据VO以及结果数据可以重新自底向上地计算出一个根hash,并且将其与所存储的MBtree的根hash进行比较从而验证溯源结果的正确性和完整性验证;对于查询语句包含多个条件三元组,用户可以根据接收到的中间结果和相应的VO重新进行根hash的计算,并且与对应的MBtree根hash进行比较,在验证中间结果的正确性和完整性基础上将接收到的中间结果进行重新连接从而验证溯源最终结果的正确性和完整性。
其中,索引结构是本发明中最为重要的数据结构,主要针对图数据中主语、谓语、宾语的六种排列方式(SPO,SOP,OSP,OPS,PSO.POS)构建全索引,以及构建额外的只有两个条目的聚合索引(SP,PS,SO,OS,PO,OP)和单值索引。
其中,字典序压缩存储在三元组有相同的索引前缀时可以将其按字典序在叶节点中连续压缩存储,即在单叶子页面中只存储数值变化的部分。
其中,VO的具体验证过程如图5:查询的目标数据存储在节点1中,在查询过程中会记录下查询路线root→v5|v7→v5|v6以及路径上每个节点的邻居节点v1|v3和v7|v8,即图中的节点2,而邻居节点的有序序列则是返回给用户的VO。进行VO验证的时候,用户会用接收的结果以及VO自底向上地进行相应的hash运算得到root′,然后将root′与root进行比较,若相等则证明查询结果是正确的。
选择率估计中可以使用直方图和频繁路径用于查询优化,其中,直方图估计主要运用于用于估计查询结果的基数(cardinality)或选择性(selectivity)。其主要通过(1)统计三元组数、不同前缀的基数用于估计单个三元组模式的基数;(2)当字面量不是索引前缀的一部分时,通过重排序来推导结果基数。(3)统计桶中三元组与其他三元组连接后的结果基数。因此通过了解每个变量的基数估计信息,***可以更好地选择执行查询的计划和优化查询操作的顺序。
频繁路径是一种基于路径出现频率的查询优化技术,用于估计查询中涉及的路径模式的选择性。该方法可以预计算最频繁的路径,并得到它们的结果基数和路径描述p1...pn。利用此信息,可以精确预测查询中出现的频繁路径的连接基数。频繁路径相较于直方图更精确,但适用范围受限——针对某些常见的连接路径如星形图或链式路径。
本发明实施例还提供一种基于区块链的可验证溯源装置,该装置包括链式查询模块和子图查询模块。该装置包括链式查询模块和子图查询模块,
其中链式查询模块是对目标实体是一系列快照的偏序组合进行追溯,包括区块扩充子模块,MBtree构建子模块,VO构建子模块和验证子模块;如图3所示。
其中,区块扩充子模块用于对区块交易内容和区块结构进行扩展并增加必要的元数据来支持溯源查询;
MBtree构建子模块针对扩充后的区块交易内容逐区块进行MBtree的构建,其中将每个目标实体的溯源码procode作为节点key值进行索引,交易内容则作为value存储于叶节点中,每个节点会计算其value的hash值并存储于节点之中用于后续VO的构建;
VO构建子模块依据目标实体的溯源码对该MBtree进行搜索并且存储相应的搜索路径及邻居节点进行VO的构建,最终将VO和查询结果一同返回给用户;
验证子模块根据VO以及结果数据重新计算出一个根hash,并且将其与区块中存储的根hash值进行比较以验证溯源结果的正确性;
子图查询模块是对目标实体以RDF三元组表述的图数据进行追溯,包括MBtree构建子模块,查询优化子模块、VO构建子模块和验证子模块,如图4所示,其中,
MBtree构建子模块通过以SPARQL语言的语法规则构建查询语句,以MBtree的构建方式来构建相应的索引结构;并根据建立的映射表中的映射关系将三元组中的数据项依次从字符串形式编码为整数ID,并且将所有的三元组按字典序压缩存储于B+树的叶节点之中;使用构造MHT的方法对每个节点自下而上地计算hash值,从而将索引结构扩展为MBtree用以后续VO的构建;
查询优化子模块在发起查询请求时,若只涉及单个三元组时,则通过全索引进行范围查询;若涉及到多个三元组时,则首先通过连接排序算法优化三元组顺序,可以使得前一个三元组的匹配结果作为其后续三元组的查询条件进行匹配,用来缩减中间结果数量;当涉及到多个中间结果需要进行连接操作时,可以进行选择率估计进行连接顺序的优化;并且在需要进行选择率估计或查询语句中包括去重操作(DISTINCT)的情景之下可以使用聚合索引来提高查询效率;
VO构建子模块通过存储MBtree搜索路径上的邻居节点来构建查询结果的VO,若查询语句中只有一个条件三元组,则将查询结果和VO一起返回给用户;若查询语句包含多个条件三元组,在优化三元组连接顺序之后,对于每一个被选择的MBtree索引会构建一个中间结果的VO,并且在最终将中间结果、中间结果对应的VO以及最终的连接结果返回给用户;
验证子模块对于查询语句中只有一个条件三元组,用户根据VO以及结果数据可以重新自底向上地计算出一个根hash,并且将其与所存储的MBtree的根hash进行比较从而验证溯源结果的正确性和完整性验证;对于查询语句包含多个条件三元组,用户可以根据接收到的中间结果和相应的VO重新进行根hash的计算,并且与对应的MBtree根hash进行比较,在验证中间结果的正确性和完整性基础上将接收到的中间结果进行重新连接从而验证溯源最终结果的正确性和完整性。
一个实施例为对药品信息的溯源查询来说明链式查询方法的运用:
在本应用场景下,几类药品信息均存储于区块链***中,其中实体信息包括药品的库存量、销售量、流通量、所在地,代理信息包括药品生产商、药品批发商、药品零售商、医院,针对实体的相关操作包括生产、流通、销售以及使用。在区块中的交易结构定义如下:
实体状态数据库结构定义如下:
proCode | EntityName | amount | parameters |
023 | 药品库存量 | 500 | 最后一条记录区块高度 |
用户要求溯源药品a在指定区块高度范围[h,H]内的库存量变化信息:
(1)从实体状态数据库查找得到药品a的溯源码进行查询;
(2)在指定区块高度范围内进行逐区块的溯源信息查询,根据溯源码对每个区块的MBtree进行搜索得到设计该实体的交易记录,并且在搜索过程中记录搜索路径及相应的邻居节点用于VO的构造;
(3)从区块高度h向前逐区块搜索,溯源涉及药品a的库存信息交易记录,通过查找到的第一条记录与[h,H]内搜索到的第一条交易记录中实体版本的连续性以验证查询结果的完整性,从区块高度H向后搜寻同理。同时仍需记录搜索路径的邻居节点并构建相应的VO以验证结果的正确性。
(4)将查询到的溯源信息以及构建的用于完整性和正确性验证的VO一起返回给客户。
另一个实施例来说明本方法中子图溯源信息查询的运用:
有一图数据展示了亚伯拉罕·林肯的生平信息,用RDF语言存储为三元组表如下所示;
(1)将三元组编码为整数ID方便后续索引构造,映射表如下:
ID | Value |
0 | y:Abraham_Lincoln |
1 | hasName |
2 | “Abraham Lincoln” |
3 | bornOnDate |
4 | “1809-02-12” |
5 | diedOnDate |
6 | “1865-04-15” |
7 | y:Washington_DC |
8 | “Washington D.C.” |
9 | foundingYear |
10 | “1790” |
(2)针对编码后的三元组,构建全排列索引、聚合索引以及单值索引并压缩存储为MBtree,全索引三元组表如下所示。
(3)用户向***发起查询请求,若查询条件只涉及单个三元组则根据匹配条件选择适宜的全排列索引转化为范围查询处理;若查询条件涉及多个三元组则先进行三元组排序优化再选择适合的索引结构进行匹配查询,最后将中间结果的进行连接操作得到最终的子图匹配结果。
本发明有助于营造信息透明、数据安全和价值互联的产业环境,使得用户可以对目标实体的状态变化进行溯源查询并且实现查询结果的自验证,并且本发明不仅能实现对链式数据的溯源信息查询还能够实现对图这类的多模态数据进行溯源查询,扩展了可验证溯源查询的应用范围。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
Claims (7)
1.一种基于区块链的可验证溯源方法,其特征在于,该方法包括以下步骤:
当对目标实体是一系列快照的偏序组合进行追溯时,执行以下步骤:
S11,首先以PROV溯源模型为基础,对区块交易内容和区块结构进行扩展,并通过在区块链事务中加入必要的元数据来支持溯源查询;
S12,针对扩充后的区块交易内容逐区块进行MBtree的构建,其中将每个目标实体的溯源码procode作为节点key值进行索引,交易内容则作为value存储于叶节点中,每个节点会计算其value的hash值并存储于节点之中用于后续VO的构建;
S13,依据目标实体的溯源码对该MBtree进行搜索并且存储相应的搜索路径及邻居节点进行VO的构建,最终将VO和查询结果一同返回给用户;
S14,用户可以根据VO以及结果数据重新计算出一个根hash,并且将其与区块中存储的根hash值进行比较以验证溯源结果的正确性;
当对目标实体是以RDF三元组表述的图数据进行追溯时,执行以下步骤:
S21,通过以SPARQL语言的语法规则构建查询语句,以MBtree的构建方式来构建相应的索引结构;并根据建立的映射表中的映射关系将三元组中的数据项依次从字符串形式编码为整数ID,并且将所有的三元组按字典序压缩存储于B+树的叶节点之中;使用构造MHT的方法对每个节点自下而上地计算hash值,从而将索引结构扩展为MBtree用以后续VO的构建;
S22,当发起查询请求时,若只涉及单个三元组时,则通过全索引进行范围查询;若涉及到多个三元组时,则首先通过连接排序算法优化三元组顺序,可以使得前一个三元组的匹配结果作为其后续三元组的查询条件进行匹配,用来缩减中间结果数量;当涉及到多个中间结果需要进行连接操作时,可以进行选择率估计进行连接顺序的优化;并且在需要进行选择率估计或查询语句中包括去重操作的情景之下可以使用聚合索引来提高查询效率;
S23,通过存储MBtree搜索路径上的邻居节点来构建查询结果的VO,若查询语句中只有一个条件三元组,则将查询结果和VO一起返回给用户;若查询语句包含多个条件三元组,在优化三元组连接顺序之后,对于每一个被选择的MBtree索引会构建一个中间结果的VO,并且在最终将中间结果、中间结果对应的VO以及最终的连接结果返回给用户;
S24,对于查询语句中只有一个条件三元组,用户根据VO以及结果数据可以重新自底向上地计算出一个根hash,并且将其与所存储的MBtree的根hash进行比较从而验证溯源结果的正确性和完整性验证;对于查询语句包含多个条件三元组,用户可以根据接收到的中间结果和相应的VO重新进行根hash的计算,并且与对应的MBtree根hash进行比较,在验证中间结果的正确性和完整性基础上将接收到的中间结果进行重新连接从而验证溯源最终结果的正确性和完整性。
2.根据权利要求1所述的一种基于区块链的可验证溯源方法,其特征在于,当对目标实体是一系列快照的偏序组合进行追溯时,每个目标数据会附有一个版本号,每搜索到一个目标实体的快照则会保存其版本号,通过检查版本号的连续进行溯源信息完整性的验证;同时会对临界的版本所在区块进行向前和向后的逐区块溯源查找,验证小于或大于查询范围区块高度中的首次出现的目标数据版本号与查询范围中临界目标数据的版本号连续性,用于保证查询范围临界处溯源信息的完整性。
3.根据权利要求1所述的一种基于区块链的可验证溯源方法,其特征在于,所述S11中为了支持PROV模型,扩展区块结构和交易内容需要增加版本号、溯源码即实体ID、操作开始和结束的时间及其他需要扩展的内容,同时增加三个基本类所对应的元数据Agent、Entity、Activity。
4.根据权利要求1所述的一种基于区块链的可验证溯源方法,其特征在于,对所述S23选择率估计可以通过直方图和频繁路径方法来进行优化查询,其中,直方图估计用于估计查询结果的基数或选择性;频繁路径用于估计查询中涉及的路径模式的选择性。
5.根据权利要求1所述的一种基于区块链的可验证溯源方法,其特征在于,所述S21的索引结构主要针对图数据中主语、谓语、宾语的六种排列方式(SPO,SOP,OSP,OPS,PSO.POS)构建全索引,以及构建额外的只有两个条目的聚合索引(SP,PS,SO,OS,PO,OP)和单值索引。
6.根据权利要求1所述的一种基于区块链的可验证溯源方法,其特征在于,所述S22中字典序压缩存储在三元组有相同的索引前缀时可以将其按字典序在叶节点中连续压缩存储,即在单叶子页面中只存储数值变化的部分。
7.根据权利要求1所述的一种基于区块链的可验证溯源装置,其特征在于,该装置包括链式查询模块和子图查询模块,其中链式查询模块是对目标实体是一系列快照的偏序组合进行追溯,包括区块扩充子模块,MBtree构建子模块,VO构建子模块和验证子模块;
其中,区块扩充子模块用于对区块交易内容和区块结构进行扩展并增加必要的元数据来支持溯源查询;
MBtree构建子模块针对扩充后的区块交易内容逐区块进行MBtree的构建,其中将每个目标实体的溯源码procode作为节点key值进行索引,交易内容则作为value存储于叶节点中,每个节点会计算其value的hash值并存储于节点之中用于后续VO的构建;
VO构建子模块依据目标实体的溯源码对该MBtree进行搜索并且存储相应的搜索路径及邻居节点进行VO的构建,最终将VO和查询结果一同返回给用户;
验证子模块根据VO以及结果数据重新计算出一个根hash,并且将其与区块中存储的根hash值进行比较以验证溯源结果的正确性;
子图查询模块是对目标实体以RDF三元组表述的图数据进行追溯,包括MBtree构建子模块,查询优化子模块、VO构建子模块和验证子模块,其中,
MBtree构建子模块通过以SPARQL语言的语法规则构建查询语句,以MBtree的构建方式来构建相应的索引结构;并根据建立的映射表中的映射关系将三元组中的数据项依次从字符串形式编码为整数ID,并且将所有的三元组按字典序压缩存储于B+树的叶节点之中;使用构造MHT的方法对每个节点自下而上地计算hash值,从而将索引结构扩展为MBtree用以后续VO的构建;
查询优化子模块在发起查询请求时,若只涉及单个三元组时,则通过全索引进行范围查询;若涉及到多个三元组时,则首先通过连接排序算法优化三元组顺序,可以使得前一个三元组的匹配结果作为其后续三元组的查询条件进行匹配,用来缩减中间结果数量;当涉及到多个中间结果需要进行连接操作时,可以进行选择率估计进行连接顺序的优化;并且在需要进行选择率估计或查询语句中包括去重操作的情景之下可以使用聚合索引来提高查询效率;
VO构建子模块通过存储MBtree搜索路径上的邻居节点来构建查询结果的VO,若查询语句中只有一个条件三元组,则将查询结果和VO一起返回给用户;若查询语句包含多个条件三元组,在优化三元组连接顺序之后,对于每一个被选择的MBtree索引会构建一个中间结果的VO,并且在最终将中间结果、中间结果对应的VO以及最终的连接结果返回给用户;
验证子模块对于查询语句中只有一个条件三元组,用户根据VO以及结果数据可以重新自底向上地计算出一个根hash,并且将其与所存储的MBtree的根hash进行比较从而验证溯源结果的正确性和完整性验证;对于查询语句包含多个条件三元组,用户可以根据接收到的中间结果和相应的VO重新进行根hash的计算,并且与对应的MBtree根hash进行比较,在验证中间结果的正确性和完整性基础上将接收到的中间结果进行重新连接从而验证溯源最终结果的正确性和完整性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310931300.0A CN116894047A (zh) | 2023-07-27 | 2023-07-27 | 一种基于区块链的可验证溯源方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310931300.0A CN116894047A (zh) | 2023-07-27 | 2023-07-27 | 一种基于区块链的可验证溯源方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116894047A true CN116894047A (zh) | 2023-10-17 |
Family
ID=88313488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310931300.0A Pending CN116894047A (zh) | 2023-07-27 | 2023-07-27 | 一种基于区块链的可验证溯源方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116894047A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118095442A (zh) * | 2024-04-17 | 2024-05-28 | 国网山西省电力公司晋城供电公司 | 一种电力数据溯源方法、电力***、电力设备及存储介质 |
-
2023
- 2023-07-27 CN CN202310931300.0A patent/CN116894047A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118095442A (zh) * | 2024-04-17 | 2024-05-28 | 国网山西省电力公司晋城供电公司 | 一种电力数据溯源方法、电力***、电力设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102230661B1 (ko) | Sql 검토 방법, 장치, 서버 및 저장 매체 | |
CN102460404B (zh) | 生成混淆数据 | |
US8275783B2 (en) | Conversion program search system and conversion program search method | |
CN106452450A (zh) | 数据压缩 | |
CN109117440B (zh) | 一种元数据信息获取方法、***和计算机可读存储介质 | |
CN112286963B (zh) | 一种区块链终端数据可信查询***及其实现方法 | |
US11003661B2 (en) | System for rapid ingestion, semantic modeling and semantic querying over computer clusters | |
CN116894047A (zh) | 一种基于区块链的可验证溯源方法和装置 | |
Song et al. | Matching heterogeneous events with patterns | |
US11222131B2 (en) | Method for a secure storage of data records | |
CN108345658A (zh) | 算法计算轨迹的分解处理方法、服务器及存储介质 | |
CN113220820B (zh) | 基于图的高效sparql查询应答方法、装置和设备 | |
Zouaghi et al. | Query optimization for large scale clustered RDF data. | |
CN110941831B (zh) | 基于分片技术的漏洞匹配方法 | |
EP2530609A1 (en) | Apparatus and method of searching for instance path based on ontology schema | |
Ives et al. | Querying provenance for ranking and recommending | |
CN107451179B (zh) | 针对增加区块的整体勘误的区块链的查询方法及*** | |
US10409845B1 (en) | Authenticated pattern matching and exact path queries | |
US9959295B1 (en) | S-expression based computation of lineage and change impact analysis | |
CN114048219A (zh) | 图数据库更新方法及装置 | |
CN113934729A (zh) | 一种基于知识图谱的数据管理方法、相关设备及介质 | |
CN110457341B (zh) | 数据聚合方法、装置、计算机设备及存储介质 | |
Zhou et al. | Sequence pattern matching over event data with temporal uncertainty | |
Bano et al. | Database-Less Extraction of Event Logs from Redo Logs | |
Machado et al. | A Text Similarity-based Process for Extracting JSON Conceptual Schemas. |
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 |