CN112948392A - 一种可验证数据结构的建立方法及多维聚合查询方法 - Google Patents
一种可验证数据结构的建立方法及多维聚合查询方法 Download PDFInfo
- Publication number
- CN112948392A CN112948392A CN202110279151.5A CN202110279151A CN112948392A CN 112948392 A CN112948392 A CN 112948392A CN 202110279151 A CN202110279151 A CN 202110279151A CN 112948392 A CN112948392 A CN 112948392A
- Authority
- CN
- China
- Prior art keywords
- accumulator
- value
- query
- merkle tree
- data structure
- 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/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
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种可验证数据结构的建立方法,其结合密码学累加器和Merkle树;所述密码学累加器指的是基于某个数据集合生成一个摘要值,根据这个摘要值可以验证该集合上常见操作,如集合的交、并、差等的结果。本发明先对属性值进行拓展,然后利用密码学累加器对扩展属性值的有序列表进行计算获得累加器值,最后在累加器值上构建Merkle树,从而保证累加器值的可验证。通过这种方法,本发明还提出了一种基于本发明数据结构的可验证多维聚合查询方法,用户可以根据区块头中的Merkle树根和Merkle路径来验证累加器值,并根据累加器值来验证聚合查询的结果,从而在区块链系统上支持可验证的聚合查询。
Description
技术领域
本发明属于区块链技术领域,涉及一种可验证查询技术,具体是一种可验证数据结构的建立方法及多维聚合查询方法。
背景技术
区块链是一种面向互不可信环境的多方共同维护的分布式账本,具有去中心化、不可篡改、历史数据可追溯等特点。然而,作为一种去中心化的拜占庭容错的分布式系统,区块链系统对链上数据的聚合查询支持较弱,严重制约了区块链系统的应用场景,难以满足用户对于丰富查询的需求。
由于拜占庭节点的存在,如果用户直接委托某一个全节点进行数据的聚合查询,用户无法根据简单的Merkle树验证查询结果的正确性和完整性。所以目前的方法只有用户自己维护一个节点存储区块链上所有数据,然后在本地进行数据的查询。然而,随着链上数据的不断增加,维护一个支持存储和查询节点的成本越来越大,这对于用户而言往往是无法负担的。
因此,为了增加区块链系统对于可验证聚合查询的支持,有必要提出一种通过可验证数据结构进行多维聚合查询的方法。
发明内容
为了解决现有技术存在的不足,本发明的目的是提供一种结合密码学累加器和Merkle树的可验证数据结构的建立方法,及通过所述可验证数据结构进行多维聚合查询的方法,借助密码学累加器可以对集合进行验证的性质,所建立的可验证数据结构通过巧妙地将密码学累加器和Merkle树相结合,有着一次建立,便能支持验证任意维度上的任何聚合查询操作的特点,实现了轻节点对于区块数据的可验证多维聚合查询,数据结构建立所需时间和空间均随着属性值维度的增加而线性增加。轻节点向任意全节点委托聚合查询,如SUM,MAX,MIN,COUNT等常见的聚合函数,全节点根据事先生成的可验证数据结构向轻节点返回查询结果和证明。轻节点只需根据区块头中保存的Merkle树根即可验证查询结果的正确性和完整性。相较于其他的多维可验证聚合查询结构,如需要对支持的属性值维度两两建树的Merkle-B树,有着更高效的时间和空间成本,更加适合区块链这种系统本身储存成本就较大的场景;与同样基于密码学累加器的vChain[2]相比,两者支持的查询操作不同。本发明主要针对聚合查询的结果进行验证,而vChain则针对可验证的布尔类型范围查询。
本发明提出了一种可验证数据结构的建立方法,在拓展属性值计算获得的累加器序列上构建Merkle树,所述方法具体包括以下步骤:
步骤1、对每个区块储存的属性值进行拓展,所述拓展后的属性值包括列号、属性值、交易号等;所述列号,属性值,交易号等按顺序前后连接;
步骤2、根据拓展属性值计算相应的累加器序列;
步骤2中,进一步可以包括以下子步骤:
步骤2-1:将每列的拓展属性值按照属性值大小进行排序,获得交易对应的排序列表;
步骤2-2:对交易的排序列表的每个前缀集合中所有交易对应的所有拓展属性值计算累加器值,获得对应的累加器序列;
步骤3、将密码学累加器和Merkle树相结合,在不同列的累加器序列上,构建Merkle树,获取可验证数据结构;
步骤3中,进一步可以包括以下子步骤:
步骤3-1:将步骤2-2中累加器序列上的每个累加器值结合该集合的左右边界属性值以及列号和交易号求哈希;
步骤3-2:在所有求得的哈希值上构建Merkle树,将Merkle树根保存在区块头中,供轻节点用户验证使用,获得可验证数据结构;建立完成后,支持验证任意维度上的任何聚合查询操作。
本发明还提出了通过上述可验证数据结构进行多维聚合查询的方法,所述方法具体包括以下步骤:
步骤一、用户通过所述可验证数据结构进行多维聚合查询;
步骤一中,进一步可以包括以下子步骤:
步骤1.1:将多维聚合查询分解成多个一维聚合查询;
步骤1.2:根据查询需要,在查询所对应的每个维度上的累加器序列上查找符合条件的集合的左右边界值对应的前缀集合,利用累加器值的性质对左右边界值对应的前缀集合求差集得到符合条件的集合对应的累加器值,同时在Merkle树上求左右边界值对应的前缀集合的Merkle树路径;
步骤1.3:将步骤1.2中不同维度上得到的符合条件的累加器值进行交集运算,从而得到多维上查询结果对应的累加器值和查询结果,并将查询结果、对应的累加器值和作为证明的Merkle树路径返回给用户;
步骤二、用户收到查询结果和证明后,利用Merkle路径对累加器值的正确性和符合条件的集合的完整性进行验证,然后利用累加器值的性质对查询结果的正确性进行验证。
本发明的有益效果包括:本发明所建立的可验证数据结构通过巧妙地将密码学累加器和Merkle树相结合,有着一次建立,便能支持验证任意维度上的任何聚合查询操作的特点,能够使得区块链系统有效支持可验证的多维聚合查询,相较于现有技术的Merkle-B树有着更低的存储和建立成本,同时时间上更为高效,更适合区块链这种系统本身储存成本就较大的场景。
附图说明
图1是本发明实施例1属性值拓展具体实施例;
图2是本发明实施例1累加器排序列表示意图;
图3是本发明实施例1可验证数据结构整体示意图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
可验证数据结构(ADS):支持查询结果可验证的数据结构;
密码学累加器:根据密码学技术对某个集合进行计算,得到累加器值作为摘要,从而可以根据累加器值计算和验证该集合上的某些操作,如集合的交、并、差以及常见的SUM、MAX、MIN等聚合函数。
为了实现可验证的聚合查询,本发明提出了一种结合密码学累加器[1]和Merkle树的可验证数据结构的建立方法,及通过所述可验证数据结构进行多维聚合查询的方法,在区块链系统上实现了常见聚合函数的可验证查询。因为密码学累加器[1]无法支持重复值的特性以及便于后续多维查询,本发明首先将每个区块中存储的数据进行属性值拓展,拓展方式为将该属性值所在的所处列号j、属性值和交易号i按顺序前后连接,记作evi,j,如图1中所示,其中左表为拓展前的属性值,右表为拓展后的属性值。
基于拓展后的属性值,本发明提出了结合密码学累加器和Merkle树的可验证数据结构的建立方法,在拓展属性值计算获得的累加器序列上构建Merkle树,所述方法包括以下具体步骤:
步骤1:根据拓展属性值计算相应的累加器序列,如图2所示,包括以下步骤;
步骤1-1:将每列的拓展属性值根据属性值大小进行排序,获得交易对应的排序列表;
步骤1-2:对交易的排序列表的每个前缀集合中所有交易对应的所有拓展属性值计算累加器值,从而获得对应的累加器序列。
步骤2:将密码学累加器和Merkle树相结合,在不同列的累加器序列上,构建Merkle树,包括以下具体步骤:
步骤2-1:将累加器序列上的每个累加器值结合该集合的左右边界属性值以及列号和交易求哈希;
步骤2-2:在所有求得的哈希值上构建Merkle树,将Merkle树根保存在区块头中供验证使用;
所述可验证数据结构建立完成后,支持验证任意维度上的任何聚合查询操作。
构建完可验证数据结构后,对于查询请求,本发明提出了通过所述可验证数据结构进行多维聚合查询的方法,用于数据的查询,包括以下具体步骤:
步骤1:将多维的聚合查询分解成多个一维的聚合查询;
步骤2:根据查询需要,在查询所对应的每个维度上的累加器序列上查找符合条件的集合的左右边界值对应的前缀集合,利用累加器值的性质对左右边界值对应的前缀集合求差集得到符合条件的集合对应的累加器值,同时在Merkle树上求左右边界值对应的前缀集合的Merkle树路径。
步骤3:将步骤1.2中不同维度上得到的符合条件的累加器值进行交集运算,从而得到多维上查询结果对应的累加器值,最后将查询结果和对应的累加器值和作为证明的Merkle树路径返回给用户。
用户收到查询结果和相应的证明后,本发明提出的支持多维聚合查询的可验证数据结构的验证过程包括以下具体步骤:
步骤1:利用区块头中的Merkle树根和证明中的Merkle树路径验证累加器值的正确性和符合条件的集合的完整性;
步骤2:利用累加器值的性质验证聚合查询结果的正确性。
实施例1
本实施例是在已有数据上构建可验证数据结构的方法。首先对于表中的原有数据进行拓展,如图1中原表所示,表由三项属性值构成tid,a1,a2,其中tid是该条数据的交易号,a1,a2则代表了不同的属性值。对于表中除交易号外的每项属性都进行扩展,扩展方法为列号||属性值||交易号。以交易号为2的a1属性值为例,拓展后为1||2||2,对原表中每个属性值都进行拓展后即可得到图1中右表,为了方便后文描述,将交易号为i的第j个属性的扩展属性值记作evi,j。
之后对于a1,a2分别根据属性值对交易进行排序,如图2所示,其中按a1从小到大进行排序得到交易的排序列表t3,t2,t1。对于排序列表的前缀集合中所有交易的拓展属性值,计算累加器值,以a1的排序列表为例,第一个前缀集合中仅包含交易t3的扩展属性值,即ev3,1,ev3,2。而最后的前缀集合中则如图中所示包含了所有交易的扩展属性值。同理,对a2进行相同的处理,得到所有属性列的累加器序列。
最后,如图3所示,对于累加器序列中的每个累加器值,附上前一个和当前的属性值以及当前属性值的列号和交易号求哈希,而对于序列中的第一个属性值来说,并没有前一个属性值,则其中前一个属性值使用当前属性可取的最小值min代替,以图中的a1的累加器序列中的第一个累加器值Acc(Pt1,1)为例,图中标出了具体求哈希的值,即当前前缀集合的累加器值,前一个属性值(由于这是该序列的第一个属性值,所以前一个属性值为该属性值可取最小值min),当前值为1,为第1列的属性值,交易号为3;并在所有求得的哈希上建立Merkle树,将根哈希放入区块头中。
实施例2
本实施例是在构建完的可验证数据结构上进行可验证查询的方法。假设需要查询的多维聚合函数如下:
SELECT SUM(a1)WHERE a1>=2and a1<=3and a2>=5and a2<=6
首先将多维条件分解为多个一维查询,即先在a1的排序列表上查询2<=a1<=3的累加器值。查询左边界值2对应的前缀集合,如图2所示,为Acc(Pt1,1),同理查询右边界值3对应的前缀集合,为Acc(Pt1,3)。对两个累加器值做差集得到符合范围的累加器值,Acc({ev2,1,ev2,2,ev1,1,ev1,2}),同理可以得到满足a2范围条件的做差集后的累加器值Acc(Pt2,3)-Acc(Pt2,1)=Acc({ev2,1,ev2,2,ev3,1,ev3,2});对这两个累加器值求交集,即可得到同时满足多维条件的集合对应的累加器值Acc({ev2,1,ev2,2}),使用累加器的性质,可以求得结果为2。
最后在Merkle树上查找对应累加器值的Merkle路径也作为证明的一部分,如图3所示,查找h0,h2,h3,h5对应的Merkle路径。将Merkle路径和过程中的累加器值作为证明与查询结果2一起作为结果返回。
实施例3
本实施例是用户验证查询结果的方法。用户收到实施例2中求得的Merkle路径和累加器值以及结果2后,首先利用Merkle路径和区块头中的Merkle树根验证对应的累加器值的正确性和符合条件的集合的完整性,在验证完后,同实施例2一样,对每一维的左右边界累加器值进行差集计算求得同时满足多维条件的集合对应的累加器值Acc({ev2,1,ev2,2}),最后利用累加器的性质验证结果2的正确性。
参考文献
[1]An expressive(zero knowledge)set accumulator,IEEE EuroS&P,2017
[2]vChain:Enabling Verifiable Boolean Range Queries over BlockchainDatabases,SIGMOD,2019
本发明的保护内容不局限于以上实施例。在不背离本发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (5)
1.一种可验证数据结构的建立方法,在拓展属性值计算获得的累加器序列上构建Merkle树,其特征在于,所述方法包括以下步骤:
步骤1、对每个区块储存的属性值进行拓展,所述拓展后的属性值包括列号、属性值、交易号;所述列号,所述属性值,所述交易号按顺序前后连接;
步骤2、根据拓展属性值计算相应的累加器序列;
步骤3、将密码学累加器和Merkle树相结合,在不同列的累加器序列上,构建Merkle树,获得可验证数据结构;建立完成后,支持验证任意维度上的任何聚合查询操作。
2.如权利要求1所述的方法,其特征在于,所述步骤2具体包括以下步骤:
步骤2-1:将每列的拓展属性值按照属性值大小进行排序,获得交易对应的排序列表;
步骤2-2:对交易的排序列表的每个前缀集合中所有交易对应的所有拓展属性值计算累加器值,获得对应的累加器序列。
3.如权利要求1所述的方法,其特征在于,所述步骤3具体包括以下步骤:
步骤3-1:将步骤2-2中累加器序列上的每个累加器值结合该集合的左右边界属性值以及列号和交易号求哈希;
步骤3-2:在所有求得的哈希值上构建Merkle树,将Merkle树根保存在区块头中,供轻节点用户验证使用,获得可验证数据结构。
4.一种通过如权利要求1-3至任一项所述建立方法建立的可验证数据结构进行多维聚合查询的方法,其特征在于,所述方法包括以下步骤:
步骤一、用户通过所述可验证数据结构进行多维聚合查询;
步骤二、用户收到查询结果和证明后,利用Merkle路径对累加器值的正确性和符合条件的集合的完整性进行验证,然后利用累加器值的性质对查询结果的正确性进行验证。
5.如权利要求4所述的方法,其特征在于,所述步骤一具体包括以下步骤:
步骤1.1:将多维聚合查询分解成多个一维聚合查询;
步骤1.2:根据查询需要,在查询所对应的每个维度上的累加器序列上查找符合条件的集合的左右边界值对应的前缀集合,利用累加器值的性质对左右边界值对应的前缀集合求差集得到符合条件的集合对应的累加器值,同时在Merkle树上求左右边界值对应的前缀集合的Merkle树路径;
步骤1.3:将步骤1.2中不同维度上得到的符合条件的累加器值进行交集运算,从而得到多维上查询结果对应的累加器值和查询结果,并将查询结果、对应的累加器值和作为证明的Merkle树路径返回给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110279151.5A CN112948392A (zh) | 2021-03-16 | 2021-03-16 | 一种可验证数据结构的建立方法及多维聚合查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110279151.5A CN112948392A (zh) | 2021-03-16 | 2021-03-16 | 一种可验证数据结构的建立方法及多维聚合查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112948392A true CN112948392A (zh) | 2021-06-11 |
Family
ID=76230004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110279151.5A Pending CN112948392A (zh) | 2021-03-16 | 2021-03-16 | 一种可验证数据结构的建立方法及多维聚合查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948392A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451281A (zh) * | 2017-08-08 | 2017-12-08 | 东北大学 | 基于ads的外包数据库sql查询完整性验证系统及方法 |
CN109088719A (zh) * | 2018-08-14 | 2018-12-25 | 重庆第二师范学院 | 外包数据库多关键词可验证密文搜索方法、数据处理系统 |
-
2021
- 2021-03-16 CN CN202110279151.5A patent/CN112948392A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451281A (zh) * | 2017-08-08 | 2017-12-08 | 东北大学 | 基于ads的外包数据库sql查询完整性验证系统及方法 |
CN109088719A (zh) * | 2018-08-14 | 2018-12-25 | 重庆第二师范学院 | 外包数据库多关键词可验证密文搜索方法、数据处理系统 |
Non-Patent Citations (2)
Title |
---|
CHENG XU,CE ZHANG: "vChain: Enabling Verifiable Boolean Range Queries over Blockchain Databases", 《SIGMOD 2019》 * |
朱燕超: "面向区块链系统的查询处理研究", 《中国优秀博硕士学位论文全文数据库(博士) 信息科技辑》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110602148B (zh) | 一种区块的状态树的生成和链上数据验证的方法及装置 | |
US11283616B2 (en) | Method for index-based and integrity-assured search in a blockchain | |
CN109034809B (zh) | 区块链的生成方法、装置、区块链节点及存储介质 | |
US9507875B2 (en) | Symbolic hyper-graph database | |
CN108287886B (zh) | 同步数据变更信息的方法及装置 | |
Papamanthou et al. | Time and space efficient algorithms for two-party authenticated data structures | |
CN103678583B (zh) | 结构化数据比较的方法及系统 | |
CN107451281B (zh) | 基于ads的外包数据库sql查询完整性验证系统及方法 | |
CN105843933B (zh) | 分布式内存列式数据库的索引建立方法 | |
CN109088719B (zh) | 外包数据库多关键词可验证密文搜索方法、数据处理系统 | |
CN106227799B (zh) | 一种基于分布式数据库的sql语句处理方法 | |
US20170154078A1 (en) | Systems and methods for searching multiple related tables | |
Zhu et al. | Enabling generic verifiable aggregate query on blockchain systems | |
CN115328883A (zh) | 一种数据仓库建模方法和系统 | |
CN112948898A (zh) | 一种区块链中防止应用数据被篡改的方法和安全模块 | |
Yuan et al. | Flexible and publicly verifiable aggregation query for outsourced databases in cloud | |
CN113535803A (zh) | 一种基于关键字索引的区块链高效检索及可靠性验证方法 | |
CN112948392A (zh) | 一种可验证数据结构的建立方法及多维聚合查询方法 | |
CN112671712A (zh) | 一种支持高效动态更新的云数据完整性验证方法及系统 | |
CN111414417A (zh) | 一种基于区块链的视频版权管理方法 | |
US20120310919A1 (en) | Apparatus and method of searching for instance path based on ontology schema | |
CN112131235A (zh) | 一种区块链系统内交易可信校验实现方法 | |
Noferesti et al. | A signature-based approach of correctness assurance in data outsourcing scenarios | |
CN112148739A (zh) | 独立于加密数据库的密文索引方法及系统 | |
CN115269586A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210611 |
|
WD01 | Invention patent application deemed withdrawn after publication |