掌桥专利:专业的专利平台
掌桥专利
首页

快速查询智能合约数据的方法、系统、介质及设备

文献发布时间:2023-06-19 12:22:51


快速查询智能合约数据的方法、系统、介质及设备

技术领域

本发明涉及区块链技术领域,具体地,涉及一种快速查询智能合约数据的方法、系统、介质及设备。

背景技术

区块链其本质上是一个共享数据库,在区块链上存储的数据,具有不可篡改、全程留痕、可溯源、公开透明、去中心化维护等特征。

智能合约是架设在区块链上的计算机协议,智能合约允许在没有第三方的情况下做可追溯但不可逆转的可信操作。通过智能合约可以实现在区块链上对数据的存储、查找以及一些对数据对逻辑操作。

当前由于市场需求,数据共享、数据防篡改、数据留痕等,被越来越多的企业及个人所重视。区块链结合智能合约可以完美实现这些需求。对于区块链上的数据查询,一般的查询方式是轮循每个区块进行数据检索,如果区块数量很多,会大大增加搜索的时长。

有的查询方式是通过写入数据记录版本号,查询时通过比较数据库本地版本号与智能合约版本号大小,判断是否增量同步到数据库,然后组装数据库结果集成全量数据。该方法查询全量数据过程复杂,需要同步数据库,组装数据,容易出错。

本发明通过数据叠加的方式,将数据写入智能合约。查询的时候,只需要通过数据的标识值查找链上最近一次的存证数据,即可得到该标识值在区块链上的所有存证数据,且可清晰获得每次数据变更存证的数据信息,方便追溯各个节点的存证数据。不需要使用数据库,搜索效率极高。

专利文献CN111143476A(申请号:201911418150.3)公开了一种基于数据库的智能合约数据快速查询方法。该方法在查询全量数据的时候,通过写入数据记录版本号。查询时通过比较数据库本地版本号与智能合约版本号大小,判断是否增量同步到数据库,然后组装数据库结果集成全量数据。该方法查询全量数据过程复杂,需要同步数据库,组装数据,容易出错。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种快速查询智能合约数据的方法、系统、介质及设备。

根据本发明提供的一种快速查询智能合约数据的方法,包括:

步骤S1:将数据value以及相应的标识值key以{key:value}键值对的形式写入智能合约;

步骤S2:当同一个标识值的数据变更时,则调用智能合约,使用标识值查找区块链上最近一次存证数据,将变更后的数据与查询到的存证数据叠加写入智能合约;

步骤S3:查询智能合约数据时,调用智能合约,根据标识值查询最近一次存证数据,获取当前标识值链上的全量历史数据,实现追溯各个数据变更点的数据。

优选地,所述步骤S1包括:

步骤S1.1:准备上链的数据value,并生成当前数据对应的唯一标识值key;

步骤S1.2:调用智能合约相应的API,以{key:value}键值对的形式写入智能合约,数据上链。

优选地,所述步骤S2包括:当已上链数据产生变更时,智能合约使用同一个标识值key查询最近一次的存证数据,将查询出来的值与现传入的数据叠加作为新的value值,通过调用智能合约相应的API将当前{key:value}键值对写入智能合约。

优选地,所述步骤S3包括:

步骤S3.1:调用智能合约相应的API,将需要查询的数据的标识值key值传入智能合约;

步骤S3.2:智能合约根据标识值key查询区块链上最近一次的存证数据,获取当前标识值key在区块链上的所有存证数据;

步骤S3.3:智能合约将获取的所有存证数据返回给数据查询方。

根据本发明提供的一种快速查询智能合约数据的系统,包括:

模块M1:将数据value以及相应的标识值key以{key:value}键值对的形式写入智能合约;

模块M2:当同一个标识值的数据变更时,则调用智能合约,使用标识值查找区块链上最近一次存证数据,将变更后的数据与查询到的存证数据叠加写入智能合约;

模块M3:查询智能合约数据时,调用智能合约,根据标识值查询最近一次存证数据,获取当前标识值链上的全量历史数据,实现追溯各个数据变更点的数据。

优选地,所述模块M1包括:

模块M1.1:准备上链的数据value,并生成当前数据对应的唯一标识值key;

模块M1.2:调用智能合约相应的API,以{key:value}键值对的形式写入智能合约,数据上链。

优选地,所述模块M2包括:当已上链数据产生变更时,智能合约使用同一个标识值key查询最近一次的存证数据,将查询出来的值与现传入的数据叠加作为新的value值,通过调用智能合约相应的API将当前{key:value}键值对写入智能合约。

优选地,所述模块M3包括:

模块M3.1:调用智能合约相应的API,将需要查询的数据的标识值key值传入智能合约;

模块M3.2:智能合约根据标识值key查询区块链上最近一次的存证数据,获取当前标识值key在区块链上的所有存证数据;

模块M3.3:智能合约将获取的所有存证数据返回给数据查询方。

根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述所述的方法的步骤。

根据本发明提供的一种快速查询智能合约数据的设备,包括:存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述所述的方法。

与现有技术相比,本发明具有如下的有益效果:

1、本发明不需要数据库,查询时不需要轮询每个区块进行数据采集,大大提高查询智能合约数据的效率;

2、本发明可清晰获得每次数据变更存证的数据信息,方便追溯各个节点的存证数据。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为数据上链示意图;

图2为数据变更存证示意图;

图3为数据变更存证示意图;

图4为区块链上数据查询示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明采用数据叠加方式写入智能合约,查询的时候,只需要通过数据的标识值查找链上最近一次的数据,即可得到该标识值的所有区块链上数据,且清晰获得每次的上链信息。不需要使用数据库,搜索效率极高。

根据本发明提供的一种快速查询智能合约数据的方法,包括:

步骤S1:数据写入方调用区块链上智能合约,将数据value以及相应的标识值key以{key:value}键值对的形式写入智能合约;

步骤S2:当同一个标识值的数据变更时,则调用智能合约,使用标识值查找区块链上最近一次存证数据,将变更后的数据与查询到的存证数据叠加写入智能合约;

步骤S3:查询智能合约数据时,调用智能合约,根据标识值查询最近一次存证数据,获取当前标识值链上的全量历史数据,实现追溯各个数据变更点的数据。

本发明不需要数据库,查询时不需要轮询每个区块进行数据采集,大大提高查询智能合约数据的效率。

具体地,所述步骤S1包括:

步骤S1.1:准备上链的数据value,并生成当前数据对应的唯一标识值key;

步骤S1.2:调用智能合约相应的API,以{key:value}键值对的形式写入智能合约,数据上链。

具体地,所述步骤S2包括:当已上链数据产生变更时,智能合约使用同一个标识值key查询最近一次的存证数据,将查询出来的值与现传入的数据叠加作为新的value值,通过调用智能合约相应的API将当前{key:value}键值对写入智能合约。

具体地,所述步骤S3包括:

步骤S3.1:调用智能合约相应的API,将需要查询的数据的标识值key值传入智能合约;

步骤S3.2:智能合约根据标识值key查询区块链上最近一次的存证数据,获取当前标识值key在区块链上的所有存证数据;

步骤S3.3:智能合约将获取的所有存证数据返回给数据查询方。

根据本发明提供的一种快速查询智能合约数据的系统,包括:

模块M1:数据写入方调用区块链上智能合约,将数据value以及相应的标识值key以{key:value}键值对的形式写入智能合约;

模块M2:当同一个标识值的数据变更时,则调用智能合约,使用标识值查找区块链上最近一次存证数据,将变更后的数据与查询到的存证数据叠加写入智能合约;

模块M3:查询智能合约数据时,调用智能合约,根据标识值查询最近一次存证数据,获取当前标识值链上的全量历史数据,实现追溯各个数据变更点的数据。

本发明不需要数据库,查询时不需要轮询每个区块进行数据采集,大大提高查询智能合约数据的效率。

具体地,所述模块M1包括:

模块M1.1:准备上链的数据value,并生成当前数据对应的唯一标识值key;

模块M1.2:调用智能合约相应的API,以{key:value}键值对的形式写入智能合约,数据上链。

具体地,所述模块M2包括:当已上链数据产生变更时,智能合约使用同一个标识值key查询最近一次的存证数据,将查询出来的值与现传入的数据叠加作为新的value值,通过调用智能合约相应的API将当前{key:value}键值对写入智能合约。

具体地,所述模块M3包括:

模块M3.1:调用智能合约相应的API,将需要查询的数据的标识值key值传入智能合约;

模块M3.2:智能合约根据标识值key查询区块链上最近一次的存证数据,获取当前标识值key在区块链上的所有存证数据;

模块M3.3:智能合约将获取的所有存证数据返回给数据查询方。

根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述所述的方法的步骤。

根据本发明提供的一种快速查询智能合约数据的设备,包括:存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述所述的方法。

实施例2是实施例1的优选例

如图1-3所示所示,数据上链方式,一种快速查询智能合约数据的方法包括以下步骤:

(1)数据存证方生成一个对应上链数据的唯一标识值(记为key),将需要上链的数据(记为value1)与key,以{key:value1}的键值对的形式,调用智能合约相应的API写入智能合约上链。

(2)对于之前存证过的数据进行变更再次存证,将变更后的数据(记为value2)与原有的key值,以{key:value2}的键值对的形式,调用智能合约相应的API写入智能合约。

(3)智能合约根据key,从区块链上查询并获取最近一次存证的数据。

(4)传入的新的存证数据与区块链上已有的存证数据进行叠加,组成value1+value2的新的存证数据,以{key:value1+value2}的键值对的形式存入区块链。

(5)数据每次变更,调用智能合约相应的API,重复步骤(3)和步骤(4)。

实施例3是实施例1的优选例

如图4所示,查询区块链上的数据,该方法包含以下步骤:

(1)数据查询方调用区块链上智能合约相应的API,将需要查询数据的key值传入智能合约;

(2)智能合约根据key查询最近一次的存证值:value1+value2+value3+……;

(3)智能合约将搜索到的存证值传回给数据查询方。存证值中可以获得每次存证的数据信息,方便追溯各个节点的存证数据。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

相关技术
  • 快速查询智能合约数据的方法、系统、介质及设备
  • 基于智能合约的数据处理方法、设备以及可读存储介质
技术分类

06120113270236