基于区块链的键值存储方法、装置、终端设备及介质制造方法及图纸

技术编号:28373560 阅读:8 留言:0更新日期:2021-05-08 00:00
本申请适用于区块链技术领域,尤其涉及一种基于区块链的键值存储方法、装置、终端设备及介质。该方法通过对智能合约进行搜索,将搜索确定的数据层的每个数据节点的key值与待插入key值比较,得到满足预设条件的目标数据节点,将待插入数据插入空数据节点,并将该空数据节点的指针指向目标数据节点的指针指向的节点,将目标数据节点的指针指向该空数据节点,使得目标数据节点、空数据节点和目标数据节点的指针指向的节点形成有序链表,以有序的形式存储可以便于后续的查询使用,查询时可以在有序链表中找到key值与待查询key值较为接近的数据节点,再根据该数据节点的前后顺序找到确定查询结果,无需遍历整个智能合约,查询效率较高。

【技术实现步骤摘要】
基于区块链的键值存储方法、装置、终端设备及介质
本申请属于区块链
,尤其涉及一种基于区块链的键值存储方法、装置、终端设备及介质。
技术介绍
在区块链技术的应用中,为了保证数据的不可篡改和可溯源性,会将所有数据和计算放在智能合约中。现有的智能合约存储是基于键值(Key-Value,K-V)的哈希映射结构表的存储方式,而由于该K-V的哈希映射结构表是一种无序结构,使得查询一组K-V时需要遍历全表,查询的效率较低。
技术实现思路
本申请实施例提供了一种基于区块链的键值存储方法、装置、终端设备及介质,可以解决现有的键值的无序存储方式导致查询的效率较低的问题。第一方面,本申请实施例提供了一种基于区块链的键值存储方法,所述键值存储方法包括:获取待插入key值和所述待插入key值对应的数据值;对智能合约进行搜索,确定所述智能合约的数据层;获取所述数据层的所有数据节点的key值;将所有数据节点的key值分别与所述待插入key值比较,确定目标数据节点,其中,所述目标数据节点为与所述待插入key值的比较结果满足第一预设条件的key值对应的节点;确定所述数据层中的空数据节点,所述空数据节点是指未被插入键值数据的节点;将所述待插入key值和所述数据值插入所述空数据节点,将所述空数据节点的指针指向所述目标数据节点的指针指向的节点,将所述目标数据节点的指针指向所述空数据节点。第二方面,本申请实施例提供了一种基于区块链的键值存储装置,所述键值存储装置包括:<br>插入数据获取模块,用于获取待插入key值和所述待插入key值对应的数据值;数据层确定模块,用于对智能合约进行搜索,确定所述智能合约的数据层;key值获取模块,用于获取所述数据层的所有数据节点的key值;比较模块,用于将所有数据节点的key值分别与所述待插入key值比较,确定目标数据节点,其中,所述目标数据节点为与所述待插入key值的比较结果满足第一预设条件的key值对应的节点;空节点确定模块,用于确定所述数据层中的空数据节点,所述空数据节点是指未被插入键值数据的节点;插入模块,用于将所述待插入key值和所述数据值插入所述空数据节点,将所述空数据节点的指针指向所述目标数据节点的指针指向的节点,将所述目标数据节点的指针指向所述空数据节点。第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的键值存储方法。第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的键值存储方法。第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面所述的键值存储方法。本申请实施例与现有技术相比存在的有益效果是:本申请通过对智能合约进行搜索,确定所述智能合约的数据层,并将数据层的每个数据节点的key值与待插入key值进行比较,得到满足预设条件的目标数据节点,将待插入key值和数据值插入空数据节点,并将该空数据节点的指针指向目标数据节点的指针指向的节点,将目标数据节点的指针指向该空数据节点,从而使待插入key值和数据值插入到目标数据节点与目标数据节点的指针指向的节点之间,使得目标数据节点、空数据节点和目标数据节点的指针指向的节点形成有序链表,以有序的形式存储可以便于后续的查询使用,查询时可以在有序链表中找到key值与待查询key值较为接近的数据节点,再根据该数据节点的前后顺序找到确定查询结果,无需遍历整个智能合约,查询效率较高。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例一的提供的一种基于区块链的键值存储方法的流程示意图;图2是本申请实施例二的提供的一种基于区块链的键值存储方法的流程示意图;图3是本申请实施例三提供的一种基于区块链的键值存储装置的结构示意图;图4是本申请实施例四提供的一种终端设备的结构示意图。具体实施方式以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。本申请实施例提供的一种基于区块链的键值存储方法可以应用于掌上电脑、桌上型计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,UMPC)、上网本、云端服务器、个人数字助理(personaldigitalassistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。为了说明本申请的技术方案,下面通过具体实施例来进本文档来自技高网...

【技术保护点】
1.一种基于区块链的键值存储方法,其特征在于,所述键值存储方法包括:/n获取待插入key值和所述待插入key值对应的数据值;/n对智能合约进行搜索,确定所述智能合约的数据层;/n获取所述数据层的所有数据节点的key值;/n将所有数据节点的key值分别与所述待插入key值比较,确定目标数据节点,其中,所述目标数据节点为与所述待插入key值的比较结果满足第一预设条件的key值对应的节点;/n确定所述数据层中的空数据节点,所述空数据节点是指未被插入键值数据的节点;/n将所述待插入key值和所述数据值插入所述空数据节点,将所述空数据节点的指针指向所述目标数据节点的指针指向的节点,将所述目标数据节点的指针指向所述空数据节点。/n

【技术特征摘要】
1.一种基于区块链的键值存储方法,其特征在于,所述键值存储方法包括:
获取待插入key值和所述待插入key值对应的数据值;
对智能合约进行搜索,确定所述智能合约的数据层;
获取所述数据层的所有数据节点的key值;
将所有数据节点的key值分别与所述待插入key值比较,确定目标数据节点,其中,所述目标数据节点为与所述待插入key值的比较结果满足第一预设条件的key值对应的节点;
确定所述数据层中的空数据节点,所述空数据节点是指未被插入键值数据的节点;
将所述待插入key值和所述数据值插入所述空数据节点,将所述空数据节点的指针指向所述目标数据节点的指针指向的节点,将所述目标数据节点的指针指向所述空数据节点。


2.如权利要求1所述的键值存储方法,其特征在于,在所述对智能合约进行搜索,确定所述智能合约的数据层之后,还包括:
检测所述数据层的第一个数据节点是否为空数据节点;
相应地,所述获取所述数据层的所有数据节点的key值包括:
若所述第一个数据节点不为空数据节点,则获取所述数据层的所有数据节点的key值。


3.如权利要求2所述的键值存储方法,其特征在于,所述检测所述数据层的第一个数据节点是否为空数据节点之后,还包括:
若所述第一个数据节点为空数据节点,则将所述待插入key值和所述数据值插入所述第一个数据节点,将所述第一个数据节点的指针指向所述第一个数据节点的后继节点。


4.如权利要求1所述的键值存储方法,其特征在于,所述确定所述数据层中的空数据节点包括:
获取所述数据层的第一个数据节点的指针,并将所述第一个数据节点的指针作为参考指针;
检测所述参考指针所指向的数据节点中是否存储有键值数据;
若所述参考指针所指向的数据节点中未存储键值数据,则确定该数据节点为空数据节点;
若所述参考指针所指向的数据节点中存储有键值数据,则将该数据节点的指针作为所述参考指针,并返回执行所述检测所述参考指针所指向的数据节点中是否存储有键值数据。


5.如权利要求1所述的键值存储方法,其特征在于,在将所述待插入key值和所述数据值插入所述空数据节点之后,还包括:
获取所述智能合约的索引层的最大层数;
获取目标层数,所述目标层数为大于零且小于所述最大层数的整数;
将所述待插入key值插入每个目标索引层的空索引节点中,其中,所述目标索引层包括所述目标层数对应的索引层、所述最大层数对应的索引层以及层数位于所述目标层数与所述最大层数之间的索引层,所述空索引节点是指未插入key值的节点。


6.如权利要求5所述的键值存储方法,其特征在于,所述智能合约的索引层的索引节点中还包括:用于指向表示该索引节点所在层的下一层级的节点数据结构的指针、用于指向下一层级中与该索引节点对应的节点的指针以及用于指向该索引节点的后继节点...

【专利技术属性】
技术研发人员:李伟蔡亮匡立中曾磊边书豪
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1