CN112817968A - 一种基于区块链的数据存入和搜索方法及系统 - Google Patents

一种基于区块链的数据存入和搜索方法及系统 Download PDF

Info

Publication number
CN112817968A
CN112817968A CN202110047130.0A CN202110047130A CN112817968A CN 112817968 A CN112817968 A CN 112817968A CN 202110047130 A CN202110047130 A CN 202110047130A CN 112817968 A CN112817968 A CN 112817968A
Authority
CN
China
Prior art keywords
data
block chain
block
stored
index tree
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.)
Withdrawn
Application number
CN202110047130.0A
Other languages
English (en)
Inventor
肖玉连
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN202110047130.0A priority Critical patent/CN112817968A/zh
Publication of CN112817968A publication Critical patent/CN112817968A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Abstract

本发明涉及一种区块链的技术领域,揭露了一种基于区块链的数据存入和搜索方法,包括:获取待存储数据,利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据;将加密索引树数据存储到基于BloomFilter的区块结构中;利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中;利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收;用户利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,实现基于区块链的数据搜索。本发明还提供了一种基于区块链的数据存入和搜索系统。本发明实现了数据的搜索。

Description

一种基于区块链的数据存入和搜索方法及系统
技术领域
本发明涉及区块链的技术领域,尤其涉及一种基于区块链的数据存入和搜索方法及系统。
背景技术
数据承载着知识、消息“流淌”于网络之中,它们使得我们愈发便利的生活在文明社会。在当前科学技术的支撑之下,信息能够转化为知识,而知识最终将转化为技术以及生产力。现有的生活因数据的快速流通而便捷,当数据的附加价值越来越高,数据如何在因特网环境中安全的存储和搜索正成为当前研究的热门话题。
区块链以其特有的去中心化信任、完全分布式等特点备受各行业瞩目,它的出现为破除大数据共享壁垒,实现数据可信互联成为可能。在现有区块链存储系统中,每个节点接受来自多个用户的数据,最终会把同一个用户的数据存储在不同的物理位置中,从而会导致闪存的物理空间没有得到高效使用,并且会造成系统额外的压缩整理以及在固态硬盘中触发垃圾回收;同时目前信息共享方案存在数据搜索效率低及搜索结果存在偏差的问题。
鉴于此,如何对现有区块链存储系统进行优化,提高数据存储以及搜索效率,成为本领域技术人员亟待解决的问题。
发明内容
本发明提出一种基于区块链的数据存入和搜索方法,通过利用基于索引树的方法对待存储数据进行加密处理,并将加密结果存储到改进的区块结构中,同时利用面向区块链存储的数据缓存策略进行区块链数据的存储,从而实现基于区块链的数据存入和搜索。
为实现上述目的,本发明提供的一种基于区块链的数据存入和搜索方法,包括:
获取待存储数据,利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据;
将加密索引树数据存储到基于Bloom Filter的区块结构中;
利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中;
利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收;
用户利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,实现基于区块链的数据搜索。
可选地,所述利用基于索引树的区块链加密方案对待存储数据进行加密处理,包括:
1)数据拥有者输入安全参数λ,随机生成m维向量μ以及两个m×m维的可逆矩阵M1和M2,输出密钥为k=(m,M1,M2);
2)使用密钥k将待存储数据F=[f1,...,fn]加密成密文Si=Enc(k,fi),并寻找到n个未花费的交易输出UTXi(1≤i≤n)构造交易
Figure BDA0002897731970000021
3)数据拥有者计算密文Si的每个关键词wj的TF值,构成TF向量D=
Figure BDA0002897731970000022
其中m为密文Si的关键词总数;
4)利用索引树I存储向量D,数据拥有者根据密钥向量μ将索引树节点u处的向量Du随机分成两个向量{Du1,Du2},若μ[j]=0,则Du1[j]=Du2[j]=Du[j];若μ[j]=1,则Du1[j]+Du2[j]=Du[j],索引树中的每个节点u存储的加密向量为
Figure BDA0002897731970000023
5)将索引树I嵌入到交易TXI中,并以交易TXI的形式向全区块链系统广播,将验证通过的交易记录到区块链上,并给数据拥有者返回一个嵌入密文的交易标识符
Figure BDA0002897731970000024
可选地,所述将加密索引树数据存储到基于Bloom Filter的区块结构中的流程为:
所述基于Bloom Filter的区块结构由区块头、扩展区块头和区块体三部分组成,区块头中前一区块Hash中存储该区块的前一个区块头的Hash值,时间戳记录区块的写入时间,版本号记录区,相较于传统区块结构,本发明所述基于Bloom Filter的区块结构具有一个区块头扩展模块,该模块中包括拓展区块头大小和一系列Bloom Filter,其中拓展区块头大小是拓展模块的长度,Bloom Filter可以高效地定位区块链中存储数据中某个特定的记录块链版本的变化,难度数表示添加区块的困难程度;
所述将加密数据存储到基于Bloom Filter的区块结构的流程为:
将Bloom Filter进行初始化,即把长度为m的二进制向量的所有比特位都设定成0,其中Bloom Filter采用的是k个哈希函数;
每个区块所存储的数据为加密索引树中每个索引树节点所存储的数据;
如果有新的交易记录被写入区块,将该交易记录使用哈希函数映射,映射结果作为Bloom Filter中的索引位置,该位置数据置为1;然后把交易记录添加到加密索引树的节点中,写入到区块。
可选地,所述利用面向区块链存储的数据缓存策略将区块中所存储数据进行缓存处理,包括:
1)遍历区块中所存储的数据,将属于同一用户的区块数据存放在同一个数据块中;将每个数据块的大小与物理页进行对齐,由于闪存中最小的读取单位是一个物理页,每次读取的数据块中会包含所搜索数据块以外的当前用户的其他数据;
为了将相同用户的数据写入到相同的数据块中,本发明利用一段连续的虚拟地址空间对分散的物理地址空间进行映射,将虚拟地址切分成一定数量的数据块;通过根据用户ID对数据进行散列来分配数据块,从而保证相同用户的数据只会写入到固定的数据块中;
在本发明一个具体实施例中,由于数据块的数量有限,区块链节点面向的用户数量未知,会出现多个用户被散列到相同数据块的情况,因此对每个数据块维护一个用户表,该用户表中保存了每个用户所使用的数据块,从而保证在多个用户同时写入的过程中,将用户的数据限定在所属的数据块中,每个数据块的地址空间等于所有被映射的数据块的地址空间的总和;
2)将所有数据块的索引树索引存储到索引块中,并对索引块进行缓存处理;
3)在对区块链存储系统中的数据进行搜索时,搜索算法分为两部分,第一部分是对数据K的查找,第二部分为对数据的缓存;首先检查所需数据是否位于数据缓存中,若K在数据缓存中不存在,则查找对应的索引项是否在缓存中,当找到对应的缓存,则通过索引中的地址直接读取对应的数据,同时添加数据所在的物理页到数据缓存中,查找到数据后,添加所在索引块到索引缓存,添加所在物理页到数据缓存;最后返回查找到的数据;
由于区块链存储中一个节点会同时面向多个用户的访问请求,每个用户在搜索的数据段的过程中会对键值数据库进行多次请求,每次搜索一个数据块;由于数据的顺序由key的字典排序的顺序所确定的,因此数据的排列方式对于原先数据段中的顺序而言是乱序排列的。对于所缓存的数据块中的数据,由于搜索的方式类似于循环访问,为了在有限的内存空间下提高缓存的命中率,本发明使用最近最长访问(MRU)策略来管理同一个用户的数据。在本发明所述缓存结构中每个用户的数据都使用MRU策略对缓存进行淘汰。由于每个用户会进行多次访问,本发明使用LRU策略来管理多个用户队列;
在管理用户的LRU以及管理用户数据的MRU中,本发明均使用哈希表和双向链表来存放数据。在管理用户的LRU队列以及每个用户的双向链表中,每次删除的都是链表头部的元素,插入数据时,都会插入到链表尾部。缓存数据时,数据会插入对应用户的MRU队列中去,同时将当前用户所在的LRU中的位置调整到链表尾部。每次搜索数据后,会将数据所在的用户队列调整到LRU的链表尾部,将数据所在的MRU中调整到链表头部。当内存中的数据达到上限后,会删除LRU中链表头部所指向用户的MRU队列中的链表头部元素,当用户的数据队列为空后,会从LRU中移除对应的用户。
可选地,所述基于数据访问频率的垃圾回收方法流程为:
在垃圾回收的过程中,不同类型的数据块具有不同的处理优先级以及不同的处理方式,例如,本发明首先对标记为日志的数据块进行垃圾回收,其次对标记为索引的数据块进行垃圾回收,最后对标记为数据块的数据块进行垃圾回收;
1)对所有使用过的数据块A按照无效页的数量进行排序,并统计所有标记为数据块的数据块的访问频率并记录在访问列表中;
2)从A中获取无效页最多的数据块p,在在访问列表中找到所有访问频率与p相似的数据块,将这些数据块中的有效页写入到空白块中,更新地址映射表,擦除所有参加垃圾回收的数据块,清空对应数据块的访问列表;
3)当空白数据块的数量大于所设定的阈值时,结束垃圾回收算法;本发明所设置的空白数据块阈值为10。
可选地,所述利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,包括:
1)用户输入待查询关键集W,若w′j∈W,w′j为待查询关键集中第j个关键字,则Q[j]为存储关键字w′j的IDF值,否则Q[j]=0;其中Q[j]由两个随机向量Q1[j]和Q2[j]组成,若μ[j]=0,则Q1[j]+Q2[j]=Q[j];若μ[j]=1,则Q1[j]=Q2[j]=Q[j],最终得到的陷门为
Figure BDA0002897731970000041
2)区块链存储系统根据所述陷门计算满足待查询关键集的密文文档,并按密文文档与待查询关键集的相关性进行排序,所述θ即为密文文档与待查询关键集的相关分数:
θ=Iu·TW
其中:
TW为基于待查询关键集W的陷门;
Iu为索引树中的每个节点u存储的加密向量;
3)区块链存储系统将排序后的c个密文嵌入到交易g中,并向全区块链广播带有自己签名的交易;
4)用户获得区块链存储系统返回的与搜索关键字相关性最高的c篇文档S,并用数据拥有者所提供的密钥k解密获得明文文档fi=Dec(k,Si)。
此外,为实现上述目的,本发明还提供一种基于区块链的数据存入和搜索系统,所述系统包括:
数据获取装置,用于获取待存储数据;
数据处理器,用于利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据,并将加密索引树数据存储到基于Bloom Filter的区块结构中;利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中,同时利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收;
数据搜索装置,用于利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据搜索程序指令,所述数据搜索程序指令可被一个或者多个处理器执行,以实现如上所述的基于区块链的数据存入和搜索的实现方法的步骤。
相对于现有技术,本发明提出一种基于区块链的数据存入和搜索方法,该技术具有以下优势:
首先,本发明提出一种基于索引树的数据加密和搜索方案,在本方案中,由于搜索是从索引树的根节点到叶子节点的遍历,关键词的搜索时间复杂度与索引树的高度有关系,方案中m阶索引树的高度为
Figure BDA0002897731970000051
因此索引树结构的搜索时间复杂度为
Figure BDA0002897731970000052
其中,n为数据文档的个数,m为搜索关键词词典的大小,α为搜索中包含搜索关键词wj的子集的叶子节点的数量。由于许多包含关键词的叶子结点都没有被访问,并且在被访问的叶子节点中,许多节点具有共同的父节点和相同的访问路径,每次搜索时不需要从索引树的根节点重新遍历,因此本方案的实际搜索时间要小于
Figure BDA0002897731970000053
由于传统数据搜索方案的搜索时间复杂度与搜索关键词呈线性关系,在搜索少量关键词的情况下具有较高的效率,当搜索多个关键词时不再具有较高的效率,而本发明所述基于索引树结构的最大搜索时间复杂度是定值,同时实际搜索复杂度小于该最大值,因此本方案具有较高的搜索效率。
同时本发明提出一种面向区块链存储的数据缓存策略实现区块数据的存储,首先利用一段连续的虚拟地址空间对分散的物理地址空间进行映射,将虚拟地址切分成一定数量的数据块,通过根据用户ID对数据进行散列来分配数据块,从而保证相同用户的数据只会写入到固定的数据块中,并将每个数据块的大小与物理页进行对齐,由于闪存中最小的读取单位是一个物理页,每次读取的数据块中会包含所搜索数据块以外的当前用户的其他数据;由于区块链存储中一个节点会同时面向多个用户的访问请求,每个用户在搜索的数据段的过程中会对键值数据库进行多次请求,每次搜索一个数据块;由于数据的顺序由key的字典排序的顺序所确定的,因此数据的排列方式对于原先数据段中的顺序而言是乱序排列的。对于所缓存的数据块中的数据,由于搜索的方式类似于循环访问,为了在有限的内存空间下提高缓存的命中率,本发明使用最近最长访问(MRU)策略来管理同一个用户的数据,在本发明所述缓存结构中,每个用户的数据都使用MRU策略对缓存进行淘汰,即删除缓存中最近最多被使用的数据,保留最近最少使用的用户数据,在用户数据的访问中,无法确定用户所访问的具体数据,而在缓存系统中找出最少最近数据的时间复杂度较高,因此本发明通过缓存最少最近的数据来提高用户对访问频率较小数据的查询速度;由于每个用户会进行多次访问,本发明使用LRU策略来管理多个用户队列,即将长时间不访问的用户从用户队列中删除。
在管理用户的LRU以及管理用户数据的MRU中,本发明均使用哈希表和双向链表来存放数据。在管理用户的LRU队列以及每个用户的双向链表中,每次删除的都是链表头部的元素,插入数据时,都会插入到链表尾部。缓存数据时,数据会插入对应用户的MRU队列中去,同时将当前用户所在的LRU中的位置调整到链表尾部。每次搜索数据后,会将数据所在的用户队列调整到LRU的链表尾部,将数据所在的MRU中调整到链表头部。当内存中的数据达到上限后,会删除LRU中链表头部所指向用户的MRU队列中的链表头部元素,当用户的数据队列为空后,会从LRU中移除对应的用户,从而对用户数据缓存空间进行实时的更新,通过删除用户缓存队列中的无效用户数据,减少缓存中的缓存数据量,提高用户数据的查询速度。
附图说明
图1为本发明一实施例提供的一种基于区块链的数据存入和搜索方法的流程示意图;
图2为本发明一实施例提供的一种基于区块链的数据存入和搜索系统的结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
通过利用基于索引树的方法对待存储数据进行加密处理,并将加密结果存储到改进的区块结构中,同时利用面向区块链存储的数据缓存策略进行区块链数据的存储,从而实现基于区块链的数据存入和搜索。参照图1所示,为本发明一实施例提供的基于区块链的数据存入和搜索方法示意图。
在本实施例中,基于区块链的数据存入和搜索方法包括:
S1、获取待存储数据,利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据。
首先,本发明获取待存储数据,并利用基于索引树的区块链加密方案对待存储数据进行加密处理,所述基于索引树的区块链加密方案流程为:
1)数据拥有者输入安全参数λ,随机生成m维向量μ以及两个m×m维的可逆矩阵M1和M2,输出密钥为k=(m,M1,M2);
2)使用密钥k将待存储数据F=[f1,...,fn]加密成密文Si=Enc(k,fi),并寻找到n个未花费的交易输出UTXi(1≤i≤n)构造交易
Figure BDA0002897731970000071
3)数据拥有者计算密文Si的每个关键词wj的TF值,构成TF向量D=
Figure BDA0002897731970000072
其中m为密文Si的关键词总数;
4)利用索引树I存储向量D,数据拥有者根据密钥向量μ将索引树节点u处的向量Du随机分成两个向量{Du1,Du2},若μ[j]=0,则Du1[j]=Du2[j]=Du[j];若μ[j]=1,则Du1[j]+Du2[j]=Du[j],索引树中的每个节点u存储的加密向量为
Figure BDA0002897731970000073
5)将索引树I嵌入到交易TXI中,并以交易TXI的形式向全区块链系统广播,将验证通过的交易记录到区块链上,并给数据拥有者返回一个嵌入密文的交易标识符
Figure BDA0002897731970000074
S2、将加密索引树数据存储到基于Bloom Filter的区块结构中。
进一步地,本发明将加密数据存储到基于Bloom Filter的区块结构中;所述基于Bloom Filter的区块结构由区块头、扩展区块头和区块体三部分组成,区块头中前一区块Hash中存储该区块的前一个区块头的Hash值,时间戳记录区块的写入时间,版本号记录区,相较于传统区块结构,本发明所述基于Bloom Filter的区块结构具有一个区块头扩展模块,该模块中包括拓展区块头大小和一系列Bloom Filter,其中拓展区块头大小是拓展模块的长度,Bloom Filter可以高效地定位区块链中存储数据中某个特定的记录块链版本的变化,难度数表示添加区块的困难程度;
所述将加密数据存储到基于Bloom Filter的区块结构的流程为:
将Bloom Filter进行初始化,即把长度为m的二进制向量的所有比特位都设定成0,其中Bloom Filter采用的是k个哈希函数;
每个区块所存储的数据为加密索引树中每个索引树节点所存储的数据;
如果有新的交易记录被写入区块,将该交易记录使用哈希函数映射,映射结果作为Bloom Filter中的索引位置,该位置数据置为1;然后把交易记录添加到加密索引树的节点中,写入到区块。
S3、利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中。
进一步地,本发明利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中;所述面向区块链存储的数据缓存策略流程为:
1)遍历区块中所存储的数据,将属于同一用户的区块数据存放在同一个数据块中;将每个数据块的大小与物理页进行对齐,由于闪存中最小的读取单位是一个物理页,每次读取的数据块中会包含所搜索数据块以外的当前用户的其他数据;
为了将相同用户的数据写入到相同的数据块中,本发明利用一段连续的虚拟地址空间对分散的物理地址空间进行映射,将虚拟地址切分成一定数量的数据块;通过根据用户ID对数据进行散列来分配数据块,从而保证相同用户的数据只会写入到固定的数据块中;
在本发明一个具体实施例中,由于数据块的数量有限,区块链节点面向的用户数量未知,会出现多个用户被散列到相同数据块的情况,因此对每个数据块维护一个用户表,该用户表中保存了每个用户所使用的数据块,从而保证在多个用户同时写入的过程中,将用户的数据限定在所属的数据块中,每个数据块的地址空间等于所有被映射的数据块的地址空间的总和;
2)将所有数据块的索引树索引存储到索引块中,并对索引块进行缓存处理;
3)在对区块链存储系统中的数据进行搜索时,搜索算法分为两部分,第一部分是对数据K的查找,第二部分为对数据的缓存;首先检查所需数据是否位于数据缓存中,若K在数据缓存中不存在,则查找对应的索引项是否在缓存中,当找到对应的缓存,则通过索引中的地址直接读取对应的数据,同时添加数据所在的物理页到数据缓存中,查找到数据后,添加所在索引块到索引缓存,添加所在物理页到数据缓存;最后返回查找到的数据;
由于区块链存储中一个节点会同时面向多个用户的访问请求,每个用户在搜索的数据段的过程中会对键值数据库进行多次请求,每次搜索一个数据块;由于数据的顺序由key的字典排序的顺序所确定的,因此数据的排列方式对于原先数据段中的顺序而言是乱序排列的。对于所缓存的数据块中的数据,由于搜索的方式类似于循环访问,为了在有限的内存空间下提高缓存的命中率,本发明使用最近最长访问(MRU)策略来管理同一个用户的数据。在本发明所述缓存结构中每个用户的数据都使用MRU策略对缓存进行淘汰。由于每个用户会进行多次访问,本发明使用LRU策略来管理多个用户队列;
在管理用户的LRU以及管理用户数据的MRU中,本发明均使用哈希表和双向链表来存放数据。在管理用户的LRU队列以及每个用户的双向链表中,每次删除的都是链表头部的元素,插入数据时,都会插入到链表尾部。缓存数据时,数据会插入对应用户的MRU队列中去,同时将当前用户所在的LRU中的位置调整到链表尾部。每次搜索数据后,会将数据所在的用户队列调整到LRU的链表尾部,将数据所在的MRU中调整到链表头部。当内存中的数据达到上限后,会删除LRU中链表头部所指向用户的MRU队列中的链表头部元素,当用户的数据队列为空后,会从LRU中移除对应的用户。
S4、利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收。
进一步地,本发明利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收,在垃圾回收的过程中,不同类型的数据块具有不同的处理优先级以及不同的处理方式,例如,本发明首先对标记为日志的数据块进行垃圾回收,其次对标记为索引的数据块进行垃圾回收,最后对标记为数据块的数据块进行垃圾回收;
所述基于数据访问频率的垃圾回收方法流程为:
1)对所有使用过的数据块A按照无效页的数量进行排序,并统计所有标记为数据块的数据块的访问频率并记录在访问列表中;
2)从A中获取无效页最多的数据块p,在在访问列表中找到所有访问频率与p相似的数据块,将这些数据块中的有效页写入到空白块中,更新地址映射表,擦除所有参加垃圾回收的数据块,清空对应数据块的访问列表;
3)当空白数据块的数量大于所设定的阈值时,结束垃圾回收算法;本发明所设置的空白数据块阈值为10。
S5、用户利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,实现基于区块链的数据搜索。
进一步地,用户利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,所述基于索引树的区块链搜索方案的方案流程为:
1)用户输入待查询关键集W,若w′j∈W,w′j为待查询关键集中第j个关键字,则Q[j]为存储关键字w′j的IDF值,否则Q[j]=0;其中Q[j]由两个随机向量Q1[j]和Q2[j]组成,若μ[j]=0,则Q1[j]+Q2[j]=Q[j];若μ[j]=1,则Q1[j]=Q2[j]=Q[j],最终得到的陷门为
Figure BDA0002897731970000091
2)区块链存储系统根据所述陷门计算满足待查询关键集的密文文档,并按密文文档与待查询关键集的相关性进行排序,所述θ即为密文文档与待查询关键集的相关分数:
θ=Iu·TW
其中:
TW为基于待查询关键集W的陷门;
Iu为索引树中的每个节点u存储的加密向量;
3)区块链存储系统将排序后的c个密文嵌入到交易g中,并向全区块链广播带有自己签名的交易;
4)用户获得区块链存储系统返回的与搜索关键字相关性最高的c篇文档S,并用数据拥有者所提供的密钥k解密获得明文文档fi=Dec(k,Si)。
下面通过一个算法实验来说明本发明的具体实施方式,并对发明的处理方法进行测试。本发明算法的硬件测试环境为:操作系统为Linux CentOS 6.9,内存为16G;对比搜索方法为基于Hash索引存储的数据搜索方法,基于倒排索引存储的数据搜索方法以及无索引数据搜索方法。
在本发明所述算法实验中,本实验通过搜集5G的数据,并使用对比算法和本发明所提出的算法进行数据存储和搜索,将搜索完成所需的时间作为数据搜索方法的评价指标。
根据实验结果,基于Hash索引存储的数据搜索方法的搜索时间为0.62s,基于倒排索引存储的数据搜索方法的搜索时间为0.61s,无索引数据搜索方法的搜索时间为0.79s,本发明所述数据搜索方法的搜索时间为0.31s,相较于对比算法,本发明所提出的基于区块链的数据存入和搜索方法能更快完成存入数据的搜索。
发明还提供一种基于区块链的数据存入和搜索系统。参照图2所示,为本发明一实施例提供的基于区块链的数据存入和搜索系统的内部结构示意图。
在本实施例中,所述基于区块链的数据存入和搜索系统1至少包括数据获取装置11、数据处理器12、数据搜索装置13,通信总线14,以及网络接口15。
其中,数据获取装置11可以是PC(Personal Computer,个人电脑),或者是智能手机、平板电脑、便携计算机等终端设备,也可以是一种服务器等。
数据处理器12至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。数据处理器12在一些实施例中可以是基于区块链的数据存入和搜索系统1的内部存储单元,例如该基于区块链的数据存入和搜索系统1的硬盘。数据处理器12在另一些实施例中也可以是基于区块链的数据存入和搜索系统1的外部存储设备,例如基于区块链的数据存入和搜索系统1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,数据处理器12还可以既包括基于区块链的数据存入和搜索系统1的内部存储单元也包括外部存储设备。数据处理器12不仅可以用于存储安装于基于区块链的数据存入和搜索系统1的应用软件及各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。
数据搜索装置13在一些实施例中可以是一中央处理器(Central ProcessingUnit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行数据处理器12中存储的程序代码或处理数据,例如数据搜索程序指令等。
通信总线14用于实现这些组件之间的连接通信。
网络接口15可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该系统1与其他电子设备之间建立通信连接。
可选地,该系统1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在基于区块链的数据存入和搜索系统1中处理的信息以及用于显示可视化的用户界面。
图2仅示出了具有组件11-15以及基于区块链的数据存入和搜索系统1,本领域技术人员可以理解的是,图1示出的结构并不构成对基于区块链的数据存入和搜索系统1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图2所示的装置1实施例中,数据处理器12中存储有数据搜索程序指令;数据搜索装置13执行数据处理器12中存储的数据搜索程序指令的步骤,与基于区块链的数据存入和搜索方法的实现方法相同,在此不作类述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据搜索程序指令,所述数据搜索程序指令可被一个或多个处理器执行,以实现如下操作:
获取待存储数据,利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据;
将加密索引树数据存储到基于Bloom Filter的区块结构中;
利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中;
利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收;
用户利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,实现基于区块链的数据搜索。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.一种基于区块链的数据存入和搜索方法,其特征在于,所述方法包括:
获取待存储数据,利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据;
将加密索引树数据存储到基于Bloom Filter的区块结构中;
利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中;
利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收;
用户利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,实现基于区块链的数据搜索。
2.如权利要求1所述的一种基于区块链的数据存入和搜索方法,其特征在于,所述利用基于索引树的区块链加密方案对待存储数据进行加密处理,包括:
1)数据拥有者输入安全参数λ,随机生成m维向量μ以及两个m×m维的可逆矩阵M1和M2,输出密钥为k=(m,M1,M2);
2)使用密钥k将待存储数据F=[f1,...,fn]加密成密文Si=Enc(k,fi),并寻找到n个未花费的交易输出UTXi(1≤i≤n)构造交易
Figure FDA0002897731960000011
3)数据拥有者计算密文Si的每个关键词wj的TF值,构成TF向量
Figure FDA0002897731960000012
Figure FDA0002897731960000013
其中m为密文Si的关键词总数;
4)利用索引树I存储向量D,数据拥有者根据密钥向量μ将索引树节点u处的向量Du随机分成两个向量{Du1,Du2},若μ[j]=0,则Du1[j]=Du2[j]=Du[j];若μ[j]=1,则Du1[j]+Du2[j]=Du[j],索引树中的每个节点u存储的加密向量为
Figure FDA0002897731960000014
5)将索引树I嵌入到交易TXI中,并以交易TXI的形式向全区块链系统广播,将验证通过的交易记录到区块链上,并给数据拥有者返回一个嵌入密文的交易标识符
Figure FDA0002897731960000015
3.如权利要求2所述的一种基于区块链的数据存入和搜索方法,其特征在于,所述将加密索引树数据存储到基于Bloom Filter的区块结构中的流程为:
将Bloom Filter进行初始化,即把长度为m的二进制向量的所有比特位都设定成0,其中Bloom Filter采用的是k个哈希函数;
每个区块所存储的数据为加密索引树中每个索引树节点所存储的数据;
如果有新的交易记录被写入区块,将该交易记录使用哈希函数映射,映射结果作为Bloom Filter中的索引位置,该位置数据置为1;然后把交易记录添加到加密索引树的节点中,写入到区块。
4.如权利要求3所述的一种基于区块链的数据存入和搜索方法,其特征在于,所述利用面向区块链存储的数据缓存策略将区块中所存储数据进行缓存处理,包括:
1)遍历区块中所存储的数据,将属于同一用户的区块数据存放在同一个数据块中;将每个数据块的大小与物理页进行对齐,由于闪存中最小的读取单位是一个物理页,每次读取的数据块中会包含所搜索数据块以外的当前用户的其他数据;
利用一段连续的虚拟地址空间对分散的物理地址空间进行映射,将虚拟地址切分成一定数量的数据块;通过根据用户ID对数据进行散列来分配数据块,从而保证相同用户的数据只会写入到固定的数据块中;
2)将所有数据块的索引树索引存储到索引块中,并对索引块进行缓存处理;
3)在对区块链存储系统中的数据进行搜索时,搜索算法分为两部分,第一部分是对数据K的查找,第二部分为对数据的缓存;首先检查所需数据是否位于数据缓存中,若K在数据缓存中不存在,则查找对应的索引项是否在缓存中,当找到对应的缓存,则通过索引中的地址直接读取对应的数据,同时添加数据所在的物理页到数据缓存中,查找到数据后,添加所在索引块到索引缓存,添加所在物理页到数据缓存;最后返回查找到的数据。
5.如权利要求4所述的一种基于区块链的数据存入和搜索方法,其特征在于,所述基于数据访问频率的垃圾回收方法流程为:
1)对所有使用过的数据块A按照无效页的数量进行排序,并统计所有标记为数据块的数据块的访问频率并记录在访问列表中;
2)从A中获取无效页最多的数据块p,在在访问列表中找到所有访问频率与p相似的数据块,将这些数据块中的有效页写入到空白块中,更新地址映射表,擦除所有参加垃圾回收的数据块,清空对应数据块的访问列表;
3)当空白数据块的数量大于所设定的阈值时,结束垃圾回收算法;所设置的空白数据块阈值为10。
6.如权利要求5所述的一种基于区块链的数据存入和搜索方法,其特征在于,所述利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索,包括:
1)用户输入待查询关键集W,若w′j∈W,w′j为待查询关键集中第j个关键字,则Q[j]为存储关键字w′j的IDF值,否则Q[j]=0;其中Q[j]由两个随机向量Q1[j]和Q2[j]组成,若μ[j]=0,则Q1[j]+Q2[j]=Q[j];若μ[j]=1,则Q1[j]=Q2[j]=Q[j],最终得到的陷门为
Figure FDA0002897731960000031
2)区块链存储系统根据所述陷门计算满足待查询关键集的密文文档,并按密文文档与待查询关键集的相关性进行排序,所述θ即为密文文档与待查询关键集的相关分数:
θ=Iu·TW
其中:
TW为基于待查询关键集W的陷门;
Iu为索引树中的每个节点u存储的加密向量;
3)区块链存储系统将排序后的c个密文嵌入到交易g中,并向全区块链广播带有自己签名的交易;
4)用户获得区块链存储系统返回的与搜索关键字相关性最高的c篇文档S,并用数据拥有者所提供的密钥k解密获得明文文档fi=Dec(k,Si)。
7.一种基于区块链的数据存入和搜索系统,其特征在于,所述系统包括:
数据获取装置,用于获取待存储数据;
数据处理器,用于利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据,并将加密索引树数据存储到基于Bloom Filter的区块结构中;利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中,同时利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收;
数据搜索装置,用于利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索。
数据获取装置,用于获取待存储数据;
数据处理器,用于利用基于索引树的区块链加密方案对待存储数据进行加密处理,得到待存储数据的加密索引树数据,并将加密索引树数据存储到基于Bloom Filter的区块结构中;利用面向区块链存储的数据缓存策略将区块中所存储数据缓存到区块链存储系统中,同时利用基于数据访问频率的垃圾回收方法进行区块链存储系统中垃圾数据块的回收;
数据搜索装置,用于利用基于索引树的区块链搜索方案对区块链存储系统中存储数据进行搜索。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据搜索程序指令,所述数据搜索程序指令可被一个或者多个处理器执行,以实现如权利要求1至6中任一项所述的一种基于区块链的数据存入和搜索的实现方法的步骤。
CN202110047130.0A 2021-01-14 2021-01-14 一种基于区块链的数据存入和搜索方法及系统 Withdrawn CN112817968A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110047130.0A CN112817968A (zh) 2021-01-14 2021-01-14 一种基于区块链的数据存入和搜索方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110047130.0A CN112817968A (zh) 2021-01-14 2021-01-14 一种基于区块链的数据存入和搜索方法及系统

Publications (1)

Publication Number Publication Date
CN112817968A true CN112817968A (zh) 2021-05-18

Family

ID=75869429

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110047130.0A Withdrawn CN112817968A (zh) 2021-01-14 2021-01-14 一种基于区块链的数据存入和搜索方法及系统

Country Status (1)

Country Link
CN (1) CN112817968A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312520A (zh) * 2021-06-11 2021-08-27 西安微电子技术研究所 一种基于HASH和LRU算法的Linux模块化的并行冗余协议系统及数据处理方法
CN114201972A (zh) * 2021-12-14 2022-03-18 长安银行股份有限公司 一种理财产品数据处理方法
CN114266073A (zh) * 2022-03-02 2022-04-01 环球数科集团有限公司 一种基于区块链技术的数据链接隐私处理系统
CN114356937A (zh) * 2022-01-09 2022-04-15 广州聚高信息科技有限公司 一种基于区块链和大数据的金融信息管理系统
CN117312267A (zh) * 2023-07-11 2023-12-29 华东师范大学 一种基于Peleton数据库的行级垃圾回收机制

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312520A (zh) * 2021-06-11 2021-08-27 西安微电子技术研究所 一种基于HASH和LRU算法的Linux模块化的并行冗余协议系统及数据处理方法
CN113312520B (zh) * 2021-06-11 2023-05-02 西安微电子技术研究所 一种基于HASH和LRU算法的Linux模块化的并行冗余协议系统及数据处理方法
CN114201972A (zh) * 2021-12-14 2022-03-18 长安银行股份有限公司 一种理财产品数据处理方法
CN114201972B (zh) * 2021-12-14 2022-07-05 长安银行股份有限公司 一种理财产品数据处理方法
CN114356937A (zh) * 2022-01-09 2022-04-15 广州聚高信息科技有限公司 一种基于区块链和大数据的金融信息管理系统
CN114356937B (zh) * 2022-01-09 2022-08-26 上海即科智能技术集团有限公司 一种基于区块链和大数据的金融信息管理系统
CN114266073A (zh) * 2022-03-02 2022-04-01 环球数科集团有限公司 一种基于区块链技术的数据链接隐私处理系统
CN114266073B (zh) * 2022-03-02 2022-05-17 环球数科集团有限公司 一种基于区块链技术的数据链接隐私处理系统
CN117312267A (zh) * 2023-07-11 2023-12-29 华东师范大学 一种基于Peleton数据库的行级垃圾回收机制
CN117312267B (zh) * 2023-07-11 2024-03-22 华东师范大学 一种基于peloton数据库的行级垃圾回收机制

Similar Documents

Publication Publication Date Title
CN112817968A (zh) 一种基于区块链的数据存入和搜索方法及系统
Zhang et al. Scalable top-k spatial keyword search
Tan et al. Microsearch: A search engine for embedded devices used in pervasive computing
US7519835B2 (en) Encrypted table indexes and searching encrypted tables
CN105956183A (zh) 一种分布式数据库中海量小文件的多级优化存储方法及系统
TWI549005B (zh) 多層搜尋引擎索引
US20160210470A1 (en) Record level data security
US20080082554A1 (en) Systems and methods for providing a dynamic document index
Anciaux et al. MILo-DB: a personal, secure and portable database machine
Zhao et al. Sim-Min-Hash: An efficient matching technique for linking large image collections
CN107180043B (zh) 分页实现方法和分页系统
Pei et al. An efficient query scheme for hybrid storage blockchains based on merkle semantic trie
Boucenna et al. Secure inverted index based search over encrypted cloud data with user access rights management
Anju et al. Secure content-based image retrieval using combined features in cloud
Lin et al. Reverse keyword search for spatio-textual top-$ k $ queries in location-based services
Mitra et al. Trustworthy keyword search for regulatory-compliant records retention
CN108650268B (zh) 一种实现多级访问的可搜索加密方法及系统
Li et al. A Multi-keyword Search Algorithm Based on Polynomial Function and Safety Inner-product Method in Secure Cloud Environment.
Zhang et al. Compact indexing and judicious searching for billion-scale microblog retrieval
CN112347055A (zh) 一种基于云计算的医疗数据处理方法及系统
CN112540986A (zh) 一种用于电力大数据快速组合查询的动态索引方法及系统
Chung et al. Multiple k nearest neighbor search
Reno et al. Utilizing IPFS and Private Blockchain to Secure Forensic Information
CN114416741A (zh) 基于多级索引的kv数据写入读取方法、装置及存储介质
Henrique et al. A new approach for verifying url uniqueness in web crawlers

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20210518

WW01 Invention patent application withdrawn after publication