一种基于混合存储区块链的可验证布尔Top-K查询方法

文档序号:37310188发布日期:2024-03-13 20:58阅读:15来源:国知局
一种基于混合存储区块链的可验证布尔Top-K查询方法

本发明涉及混合存储区块链结构中多关键词布尔top-k验证查询方法,具体涉及基于混合存储区块链的可验证布尔top-k查询方法,属于可验证查询。


背景技术:

1、随着互联网的高速发展,众包任务在生活中出现得也越来越广泛,如众包视频翻译,众包外卖配送,众包物流等。目前市面上已经有很多公司推出了自己的众包系统。在众包系统中,众包平台作为中介将任务发布者与大量未被充分利用的任务参与者连接起来,根据任务发布者的需求,利用关键词匹配等模式找到合适的参与者,这为任务发布方和参与方都提供了极大的便利。然而,众包云平台作为第三方,在提供便利的同时也存在一定的问题。例如,众包平台可能为了提升任务分配效率,以牺牲任务发布者需求的代价将任务分配给不合适的工人来完成。因此,为了保证众包结果的可靠性,行之有效的方法是任务发布者能对众包结果进行验证。同时,区块链作为一种多方维护的分布式数据库,具有防篡改性和可塑性,其为数据安全存储提供了新思路,近来来得到广泛的关注。但是区块链作为一种只可追加数据的链式结构,存储成本十分昂贵。例如,执行携带17kb数据的交易消耗了约600000gas,约合11元人民币。为了节省区块链存储开销同时保证数据安全存储,结合了链上存储和链下存储的混合区块链应运而生。具体而言:任务参加者将自己的原始数据外包到链下(如众包云平台)进行存储,同时将原始数据的摘要信息和可验证数据结构(authenticated data structure,ads)等规模较小的数据存储到区块链。众包平台将任务需求同参与者的兴趣偏好进行关键词匹配,并生成可验证对象(verifiable object,vo)连同匹配结果返回给用户,用户通过区块链获取的ads,结合vo则能对结果进行验证。

2、随着存储数据类型的丰富和数据量的增大,为了保证任务分配的准确性,通常需要复杂的匹配模式,如布尔查询模式。同时,如果将所有满足查询模式的结果返回,会造成极大的带宽消耗,但任务发布者往往只需要前k个匹配结果。因此设计具有top-k查询功能的任务匹配也极为重要。例如:任务发布者想要发布一个翻译视频的任务,希望众包工人懂中文的同时,懂常用英语,并希望工人完成任务效率尽可能高以保证翻译质量。于是任务发布者查找会中文并且通过了英语cet-6考试或tem-4考试,评分前100的工人,发起查询q=(chinese∧(cet-6∨tem-4),100)。现有解决方案支持的查询种类有限,没有关注混合存储区块链中的布尔top-k查询验证问题,因此本发明提出了一种混合存储区块链中的布尔top-k的查询验证方法。


技术实现思路

1、为了解决以上问题,本发明提出了一种混合存储区块链结构下的布尔top-k查询验证方法。

2、本发明的技术原理在于,采用的该方法中包含四类实体:数据拥有者,用户,众包云平台和区块链。数据拥有者将完整数据存储在众包云平台中,并将用于生成ads的简易数据上传到区块链矿工节点;矿工节点根据简易数据构建ads并上传到区块链中;当用户发布任务到众包平台后,众包平台更具任务条件同数据参与者的偏好信息进行布尔top-k查询,并生成可验证对象vo;当用户收到查询结果和vo后,结合区块链中的ads执行验证。方法主要包含三个内容:

3、1.提出了一种数据摘要生成方法;

4、2.提出了一种查询结果证明生成方法;

5、3.提出了一种查询结果验证方法;

6、通过四个算法来实现可验证布尔top-k查询。1.系统初始化方法,包括系统参数和公私钥对的生成。2.数据摘要生成方法,区块链节点对收到的数据进行摘要生成,生成可验证数据结构。3.查询结果及其证明生成方法,对符合查询条件的结果返回,以及查询结果正确性的证明。4.查询结果验证方法,包括对查询结果和查询表达式的匹配验证方法和top-k排名验证方法。

7、本发明包括以下步骤:

8、步骤1、系统初始化方法:keygen(1λ)->(pk,sk)。给定安全参数区块链节点生成公钥pk={n,(g,qrn)}和私钥sk=(p-1)(q-1);

9、其中n=p·q为rsa累加器参数,p和q是两个大素数,|p·q|>3λ,g是循环群qrn的生成元;

10、步骤2、数据摘要生成方法:adsgen(d,pk)→{φi,φc,φm,φr},区块链节点对接收到的数据进行摘要生成。其中,h为通用抗碰撞哈希函数,p(x)∈{0,1}3λ代表x对应的素数值;

11、步骤2.1、对数据d中的所有对象根据关键词进行倒排索引,并生成索引对象(wi,oj),每个索引对象(wi,oj)代表对象oj存在关键词wi,并生成索引对象集合invert indexobject set:io,其中io[t]代表第t个块的索引对象集合,包含块内的所有索引对象,φi代表索引对象集合io的摘要;

12、步骤2.2、对数据d中每个关键词生成计数对象代表关键词wi的对象为个,生成对象数量集合object count set:oc,其中oc[t]代表第t个块的计数对象集合,φc代表对象数量集合oc的验证摘要;

13、步骤2.3、对数据d中所有对象根据关键词进行倒排索引,生成不匹配对象(wi,oj),每个不匹配对象(wi,oj)代表oj不存在关键词wi,并生成不匹配对象集合mismatchedobject set:mo,其中mo[t]代表第t个块的不匹配对象集合,φm代表不匹配对象集合mo的验证摘要;

14、步骤2.4、对数据d中的所有对象按照数值属性大小生成比较对象(oi,oj),代表oi数值属性大于oj,并生成比较对象集合object rank set:or,其中or[t]代表第t个块的比较对象集合,φr代表对象比较集合or的验证摘要;

15、步骤2.5、计算

16、

17、步骤3、查询结果及证明生成方法:包括查询方法:search(ω,k)→(res,vo),用户向云服务器发起查询q=(ω,k),代表查询满足布尔表达式ω的前k个查询结果,其中布尔表达式ω为合取范式cnf,例如w1∧(w2∨w3),代表符合关键词w1并且符合关键词w2或w3,云服务器返回结果res。证明生成方法:proofgen(ω,k)→vo,生成查询结果符合布尔表达式和top-k排名的证明;

18、步骤3.1、查询出集合oc[t]中符合第一个关键词的数量对象并放入src中。查询出集合io[t]中所有的符合关键词w1的索引对象(w1,oj),令其为set1,对set1遍历,将符合完整布尔表达式ω的对象oi,将(w1,oi)放入sri,对符合第一个关键词的但没有满足完整条件的对象oj,将(w1,oj)放入计算其中sri代表匹配查询条件的查询结果集合,代表部分匹配的查询结果集合,πc代表匹配第一个关键词的对象数量的证明,πi代表sri和中对象匹配第一个关键词证明;

19、步骤3.2、对每个中索引对象(w1,oj)的对象oj,生成后续布尔表达式的不匹配对象,例如w1∧(w2∨w3)中,对每个oj生成(w2,oj),(w3,oj),放放入srm中,并计算其中srm代表中对象不匹配关键词的不匹配对象集合,πm代表srm中的不匹配对象集合的证明;

20、步骤3.3、找出sri中的对象排序的top-k个匹配对象{(w1,o1),(w1,o2),…(w1,ok)},放入srk中,其他匹配对象放入中,对中的对象生成生成比较对象(ok,oj),代表oj在排序上小于ok,将这些比较对象存入srr,并计算其中srk代表符合完整查询条件的数值排序前k个对象集合,代表k个之外的对象集合,πr代表匹配对象的数值属性排序证明;

21、步骤3.4、返回云服务器中srk中对象的原始数据res,验证对象vo。其中

22、步骤4、查询结果验证方法:verify(res,vo,ω,k)->{0,1},用户对查询结果res,验证对象vo,查询条件ω,k,进行验证,只有当查询结果res是满足布尔表达式ω的对象中的top-k个时返回1表示验证成功,其他情况返回0表示验证失败;

23、步骤4.1、从区块链中获取验证数据结构ads:{φi,φc,φm,φr}辅助验证;

24、步骤4.2、验证src(w,count)的关键词w是否匹配布尔表达式ω,计算等式是否正确。错误则返回0,表示验证失败,验证结束;正确则继续验证;

25、步骤4.3、验证中对象数量之和以及关键词是否等于src,计算等式是否正确。错误则返回0,表示验证失败,验证结束;正确则继续验证;

26、步骤4.4、验证srm的对象和数量是否匹配,即是否对中的每个对象,srm中都有足够的不匹配证明,并计算等式是否正确。错误则返回0,表示验证失败,验证结束;正确则继续验证;

27、步骤4.5、验证srk,srr对象标识是否匹配,即srr中的匹配对象(ok,oj)中oj是否均在中,ok是否为srk中最小的对象。计算等式是否正确。错误则返回0,表示验证失败,验证结束;正确则返回1,验证成功。

28、本发明的优点在于,现有混合存储区块链查询场景的解决方案支持的查询种类有限,没有关注混合存储区块链中的布尔top-k查询验证问题,且现有技术领域缺乏相关技术支持,无从获得相应技术启示。因此提出了一种混合存储区块链中的布尔top-k的可验证查询,以简短的摘要和验证证明实现了混合存储区块链中的布尔top-k查询的查询验证。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1