一种数据存储、数据校验、数据溯源方法和设备
技术领域
本申请涉及互联网信息处理技术领域,尤其涉及一种数据存储、数据校验、数据溯源方法和设备。
背景技术
在数字化的信息时代,数据不再是冰冷的文本记录,而是蕴含了生产价值的信息资源。为了精确分析数据中所蕴含的信息资源,需要保证数据存储的真实性。即保证数据库中存储的数据为原始数据。
所谓数据溯源可以理解为记录原始数据在整个生命周期(从产生、传播到消亡)的演变信息和演变处理内容。那么通过对原始数据的研究,能够跟踪原始数据整个生命周期的演变,确定原始数据的数据溯源。这对于数据提供方和数据需求方来讲具备重要意义。
目前,数据提供方将数据存储在数据库中,并在数据库中存储待存储的数据内容以及与待存储的数据相关的其他信息(例如:数据创建者、数据是否发生版本变更、数据产生时间等等)。当数据需求方需要从数据库中获取数据时,数据提供方向数据需求方提供待获取数据的数字签名,数据需求方根据该数字签名从数据库中获取待获取的数据,并校验待获取的数据是否真实。
然而,数据提供方将数据存储在数据库中,而目前所使用的大量数据库都具备可修改的功能。假设,数据提供方承诺提供给数据需求方A版本数据(A版本数据对应的数字签名为A1),但是,因为其他原因,数据提供方向数据需求方提供了B版本数据(但是对于数据需求方并不知道所获取的数据是A版本数据还是B版本数据),根据B版本数据得到的数字签名为B1;数据提供方为了使数据需求方相信所获取到的数据为A版本数据,此时数据提供方可以对数据库中存储的A版本数据对应的数字签名进行修改,即将A版本数据的数字签名修改为B1,这样,数据需求方在使用B1进行验证时,验证结果为通过,使数据需求方相信所获取到的B版本数据为自己需要获取的A版本数据。但实际上,数据需求方获取的数据并不是自己需要获取的A版本数据,这样将使得数据需求方根据获取到的B版本数据得到的数据分析结果与预期结果出现较大偏差,给数据需求方造成损失。
综上所述,亟需一种数据存储方法,解决现有技术中数据容易被篡改导致的数据真实性无法确定的问题。
发明内容
有鉴于此,本申请实施例提供的一种数据存储、数据校验、数据溯源方法和设备,用于解决现有技术中数据容易被篡改导致的数据真实性无法确定的问题。
本申请实施例提供了一种数据存储方法,包括:
确定目标对象的第一数据版本的第一校验值;
查找所述目标对象的与所述第一数据版本相邻的第二数据版本的第二校验值;
根据所述第一校验值和所述第二校验值创建数据区块,并将所述数据区块存储至区块链中,其中,存储至所述区块链的数据区块不可被修改。
本申请实施例提供了一种数据存储设备,包括:
确定模块,确定目标对象的第一数据版本的第一校验值;
查找单元,查找所述目标对象的与所述第一数据版本相邻的第二数据版本的第二校验值;
存储模块,根据所述第一校验值和所述第二校验值创建数据区块,并将所述数据区块存储至区块链中,其中,存储至所述区块链的数据区块不可被修改。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过确定目标对象的第一数据版本的第一校验值,以及查找所述目标对象的与所述第一数据版本相邻的第二数据版本的第二校验值;根据所述第一校验值和所述第二校验值创建数据区块,并将所述数据区块存储至区块链中。通过数据区块的形式在区块链中存储目标对象的第一数据版本的第一校验值,由于区块链具备不能篡改的特性,那么在数据需求方获取到目标对象的第一数据版本对应的数据内容时,可以通过区块链中存储的第一校验值验证第一数据版本对应的数据内容是否发生修改,进而确定第一数据版本对应的数据内容的真实性,有效解决了数据内容容易被篡改导致的数据内容的真实性无法确定的问题,改善了数据需求方进行数据分析的效率。
本申请实施例还提供了一种数据校验方法,包括:
接收数据验证请求,所述数据验证请求中包含待校验数据的数据版本的版本标识以及基于所述待校验数据的数据内容得到的校验值;
根据所述数据校验请求中包含的数据版本的版本标识,从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值;
根据接收到的所述数据验证请求中包含的校验值和查找到的校验值,对所述待验证数据的数据内容进行验证。
本申请实施例还提供了一种数据校验设备,包括:
接收模块,接收数据验证请求,所述数据验证请求中包含待校验数据的数据版本的版本标识以及基于所述待校验数据的数据内容得到的校验值;
查找模块,根据所述数据校验请求中包含的数据版本的版本标识,从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值;
验证模块,根据接收到的所述数据验证请求中包含的校验值和查找到的校验值,对所述待验证数据的数据内容进行验证。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过接收数据验证请求,所述数据验证请求中包含待校验数据的数据版本的版本标识以及基于所述待校验数据的数据内容得到的校验值;根据所述数据校验请求中包含的数据版本的版本标识,从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值;根据接收到的所述数据验证请求中包含的校验值和查找到的校验值,对所述待验证数据的数据内容进行验证。由于区块链具备不能篡改的特性,那么从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值是可信的,利用可信的校验值校验数据验证请求中的待校验数据是否被篡改,进而确保了待校验数据的真实性。
本申请实施例还提供了一种数据溯源方法,包括:
接收数据回溯请求,所述数据回溯请求中包含待回溯数据的第一数据版本的版本标识;
根据所述第一数据版本的版本标识,从区块链中查找包含所述第一数据版本的版本标识的数据区块,并从所述数据区块中获取与所述第一数据版本相邻的第二数据版本的版本标识;
根据查找到的所述第二数据版本的版本标识,依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块;
根据所述数据区块,确定所述待回溯数据的初始版本对应的数据内容。
本申请实施例还提供了一种数据溯源设备,包括:
接收模块,接收数据回溯请求,所述数据回溯请求中包含待回溯数据的第一数据版本的版本标识;
回溯模块,根据所述第一数据版本的版本标识,从区块链中查找包含所述第一数据版本的版本标识的数据区块,并从所述数据区块中获取与所述第一数据版本相邻的第二数据版本的版本标识;根据查找到的所述第二数据版本的版本标识,依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块;
确定模块,根据所述数据区块,确定所述待回溯数据的初始版本对应的数据内容。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过接收数据回溯请求,所述数据回溯请求中包含待回溯数据的第一数据版本的版本标识;根据所述第一数据版本的版本标识,从区块链中查找包含所述第一数据版本的版本标识的数据区块,并从所述数据区块中获取与所述第一数据版本相邻的第二数据版本的版本标识;根据查找到的所述第二数据版本的版本标识,依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块;根据所述数据区块,确定所述待回溯数据的初始版本对应的数据内容。由于通过数据区块的形式在区块链中不仅存储目标对象的第一数据版本的版本标识而且还存储与第一数据版本相邻的第二数据版本的版本标识,由于区块链具备不能篡改的特性,且采用链式数据结构,这样能够回溯查找到待回溯数据的演变版本以及每一个演变版本对应的数据内容,并且保证数据演变的真实性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种数据存储方法的流程示意图;
图2为区块链中多个不同区块中创建的数据区块的结构示意图;
图3为本申请实施例提供的一种数据校验方法的流程示意图;
图4为本申请实施例提供的一种数据校验方法的场景示意图;
图5为本申请实施例提供的一种数据溯源方法的流程示意图;
图6为本申请实施例提供的一种数据溯源方法的场景示意图
图7为本申请实施例提供的一种数据存储设备的结构示意图;
图8为本申请实施例提供的一种数据校验设备的结构示意图;
图9为本申请实施例提供的一种数据溯源设备的结构示意图。
具体实施方式
为了实现本申请的目的,本申请实施例提供了一种数据存储、数据校验、数据溯源方法和设备,通过数据区块的形式在区块链中存储目标对象的第一数据版本的第一校验值,由于区块链具备不能篡改的特性,那么在数据需求方获取到目标对象的第一数据版本对应的数据内容时,可以通过区块链中存储的第一校验值验证第一数据版本对应的数据内容是否发生修改,进而确定第一数据版本对应的数据内容的真实性,有效解决了数据内容容易被篡改导致的数据内容的真实性无法确定的问题,改善了数据需求方进行数据分析的效率。
需要说明的是,本申请实施例中所记载的区块链可以理解为一个可靠数据库,该可靠数据库属于一种类似非关系型数据库。该可靠数据库与传统数据库不同,区别在于:该可靠数据库具备去中心化和去信任的特点。所谓去中心化是指在由区块链组成的系统中,没有中心化的硬件或者管理机构,该系统的任意节点之间的权利和义务是均等的,且任一节点的损坏或者失去都不会影响整个系统的运行。
所谓去信任是指参与整个系统的各个节点之间数据交换是无需互相信任的,整个系统的运行规则是公开透明的,整个系统的数据内容也是公开的,因此在系统设定的规则范围和时间范围内,各节点之间是不能也无法欺骗其他节点。
本申请实施例中所记载的技术方案,提出了一种数据结构(在后续可以称之为数据区块),在该数据结构中包含数据头和数据体。该数据头中存储目标对象的当前数据版本的校验值和目标对象与当前数据版本相邻的前一个数据版本的校验值,方便后续对该目标对象进行数据溯源。该数据体中可以存储当前数据版本对应的目标对象的数据内容,也可以存储其他内容,这里不做具体限定。这样,利用该种数据结构和区块链确保目标对象本身以及其演变的完整性、真实可信性。
下面结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
图1为本申请实施例提供的一种数据存储方法的流程示意图。所述方法可以如下所示。
步骤101:确定目标对象的第一数据版本的第一校验值。
在本申请实施例中,这里的目标对象可以是任意形式的数据,可以是一份商业表格,一份书籍原稿,一份软件源码;也可以是一套图片,一首音乐,一部视频,这里不做具体限定。
这里的目标对象的数据版本可以是指在目标对象的整个生命周期内,演进产生的不同的数据内容,可以为每一个数据内容设置一个标识,这个标识可以称之为数据版本的版本标识。
例如:对于一部视频,该视频的每一部(或者每一季)可以称之为一个数据版本,假设视频A的第一部对应数据版本1.0,那么演进过程中视频A的第二部对应数据版本2.0,视频A的第三部对应数据版本3.0,......,视频A的第N部对应数据版本n.0。
再例如:对于一个应用软件,根据开发需要可以出现多个版本的应用软件。假设在应用软件演进过程中应用软件的版本包含版本1.0、版本1.0.1、版本1.0.1.1、版本2.0、版本2.0.1、......。
本申请实施例中的目标对象的第一数据版本可以是指目标对象的当前数据版本,以上述应用软件为例,第一数据版本对应的版本号为2.0.1。
具体地,本申请实施例中确定目标对象的第一数据版本的第一校验值的方式包括但不限于以下方式:
首先,确定目标对象在第一数据版本中的数据内容摘要;其次,利用设定算法和所述数据内容摘要,计算得到所述目标对象的第一数据版本的第一校验值。
例如:以目标对象为一份软件源码为例进行说明。针对该软件源码,确定该软件源码当前版本的数据内容摘要,并利用哈希算法,对该数据内容摘要进行计算,得到该软件源码当前版本的散列值(这里可以称之为第一校验值)。
需要说明的是,设定算法可以是哈希算法,也可以是其他(例如:SHA-1)算法等等,这里不做具体限定。
步骤102:查找所述目标对象的与所述第一数据版本相邻的第二数据版本的第二校验值。
本申请实施例中的目标对象的第二数据版本可以是指目标对象的与当前数据版本相邻的前一个数据版本,以上述应用软件为例,第二数据版本对应的版本号为2.0。
具体地,确定所述目标对象的与所述第一数据版本相邻的第二数据版本的版本标识;
从区块链中查找记录所述第二数据版本的版本标识的数据区块,并从该数据区块中读取所述目标对象的第二数据版本的第二校验值。
需要说明的是,若目标对象的当前数据版本为首个数据版本(例如:应用软件的版本1.0),由于不存在与首个数据版本相邻的前一个数据版本,则无需查找步骤102中记载的第二校验值。
此外,在确定所述目标对象的与所述第一数据版本相邻的第二数据版本的版本标识后,也可以参照步骤101中所记载的第一校验值的确定方式得到。这里需要说明的是,如果按照步骤101中所记载的第一校验值的确定方式得到第二校验值,那么需要确保所述目标对象的与所述第一数据版本相邻的第二数据版本的数据内容没有被篡改。
或者,从区块链中查找记录所述第二数据版本的版本标识的数据区块,并从该数据区块中读取所述目标对象的第二数据版本的数据内容摘要,之后参照步骤101中所记载的第一校验值的确定方式得到第二校验值。
步骤103:根据所述第一校验值和所述第二校验值创建数据区块。
在步骤103中,在得到目标对象的第一校验值和第二校验值后,根据第一校验值和第二校验值创建数据区块。
具体地,创建的数据区块中包含数据头部分和数据体部分。
将所述第一校验值和所述第二校验值按照设定格式写入所述数据区块的数据头部分。
如表1所示,为数据区块的数据头部分中写入的校验值的示意表。
表1
数据头部分 |
第一校验值:1234567890ZXCV |
第二校验值:null |
时间标签:XXXX年YYYY月ZZZZ日10:00:00 |
从表1中可以看出,该数据区块的生成时间标签为:XXXX年YYYY月ZZZZ日10:00:00;该数据区块中写入的第一校验值为1234567890ZXCV;第二校验值为空,由此可见,该数据区块是某一目标对象(例如:数据)的初始数据,即某一目标对象的数据源头。
可选地,由于目标对象的第一校验值/第二校验值通过不可逆算法得到,所以目标对象的不同数据版本计算得到的校验值不同,即目标对象的第一校验值/第二校验值具备唯一性。
如表2所示,为数据区块的数据头部分中写入的校验值的示意表。
表2
数据头部分 |
第一校验值:!@#¥%……&*()ASDF |
第二校验值:1234567890ZXCV |
时间标签:MMMM年NNNN月ZZZZ日14:00:00 |
从表2中可以看出,该数据区块的生成时间标签为:MMMM年NNNN月ZZZZ日14:00:00;该数据区块中写入的第一校验值为!@#¥%……&*()ASDF;第二校验值为1234567890ZXCV。由此可见,由于表2中第二校验值与表1中的第一校验值相同,所以表1中所示的数据区块对应的数据版本是表2中所示的数据区块对应的数据版本的相邻前一个数据版本。
需要说明的是,数据区块的数据头部分还可以存储相邻两个数据版本的版本标识,即第一数据版本的版本标识和第二数据版本的版本标识。
可选地,创建的数据区块除了包含数据头部分之外,还包含数据体部分。那么可以将所述目标对象在所述第一数据版本中的数据内容摘要或所述第二校验值或所述目标对象的所述第一数据版本的数据内容写入所述数据区块的数据体部分。
图2为区块链中多个不同数据区块的结构示意图。
从图2中可以看出,数据区块1、数据区块2和数据区块3对应同一个目标对象。数据区块1的数据体部分中存储的是当前数据版本/相邻前一个数据版本的数据内容摘要;数据区块2的数据体部分中存储的是当前数据版本/相邻前一个数据版本的校验值;数据区块3的数据体部分中存储的是当前数据版本/相邻前一个数据版本的数据内容。
在本申请的另一个实施例中,对于目标对象的数据内容可以存储在数据区块中,也可以存储至云数据网关或者数据库中。
需要说明的是,当数据内容的数据量较小时,可以优先选择数据区块3的方式存储数据内容。
具体地,将所述目标对象的所述第一数据版本的数据内容存储至云数据网关或者数据库中。
需要说明的是,数据区块的数据体部分除了可以存储上述记载的内容之外,还可以记录数据提供方提供的目标对象的数字签名,以便于数据需求方对数据提供方的身份进行鉴权认证;还可以记录数据区块创建时间等相关信息,数据版本的版本标识等等,这里不做具体限定。
步骤104:将所述数据区块存储至区块链中。
其中,存储至所述区块链的数据区块不可被修改。
在步骤104中,按照链式数据结构,将所述数据区块上链至区块链中。
具体地,在已经上链的数据区块的尾部加入新创建的数据区块。
在本申请的另一个实施例中,在将所述数据区块存储至区块链中后,所述方法还包括:
存储所述目标对象的第一数据版本的版本标识与所述数据区块的区块标识之间的映射关系。
也可以存储所述目标对象的第一数据版本的版本标识与所述数据区块的区块标识之间的映射关系。
需要说明的是,本申请实施例中将数据区块存储至区块链中也可以称之为对数据区块执行上链操作,使其被存储至区块链中。
通过本申请实施例所记载的技术方案,确定目标对象的第一数据版本的第一校验值,查找所述目标对象的与所述第一数据版本相邻的第二数据版本的第二校验值;根据所述第一校验值和所述第二校验值创建数据区块,并将所述数据区块存储至区块链中。通过数据区块的形式在区块链中存储目标对象的第一数据版本的第一校验值,由于区块链具备不能篡改的特性,那么在数据需求方获取到目标对象的第一数据版本对应的数据内容时,可以通过区块链中存储的第一校验值验证第一数据版本对应的数据内容是否发生修改,进而确定第一数据版本对应的数据内容的真实性,有效解决了数据内容容易被篡改导致的数据内容的真实性无法确定的问题,改善了数据需求方进行数据分析的效率。
实施例2
基于同一发明构思,图3为本申请实施例提供的一种数据校验方法的流程示意图。所述方法可以如下所示。
步骤301:接收数据验证请求。
所述数据验证请求中包含待校验数据的数据版本的版本标识以及基于所述待校验数据的数据内容得到的校验值。
在步骤301中,本申请实施例的执行主体可以为区块链,也可以为其他设备,这里不做具体限定。
具体地,当数据需求方接收到数据提供方提供的数据时,可以将提供的数据视为待校验数据,并确定待校验数据的数据版本的版本标识,以及基于获取到的待校验数据的数据内容计算得到该待校验数据的校验值。
此时数据需求方为了确保所接收到的待校验数据真实可信,向区块链发送数据校验请求,以校验数据提供方所提供的数据是否已被篡改。
步骤302:根据所述数据校验请求中包含的数据版本的版本标识,从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值。
在步骤302中,由于目标对象在被存储时生成数据区块,并将数据区块存储至区块链中,那么在将数据区块存储至区块链中时,存储所述目标对象的第一数据版本的版本标识与所述数据区块的区块标识之间的映射关系。
那么,在接收到数据校验请求时,根据预先存储的数据版本的版本标识、数据区块的单元标识以及区块的区块标识之间的映射关系,确定所述数据验证请求中包含的数据版本的版本标识对应的数据区块的区块标识;
从确定的所述区块标识对应的的数据区块中读取与所述数据版本的版本标识对应的校验值。
需要说明的是,步骤302中查找的数据版本的版本标识对应的校验值是目标对象被存储时生成的并存储在区块链中的,因此查找到的校验值是可信的。
步骤303:根据接收到的所述数据验证请求中包含的校验值和查找到的校验值,对所述待验证数据的数据内容进行验证。
在步骤303中,比较接收到的所述数据验证请求中包含的校验值和查找到的校验值;
当接收到的所述数据验证请求中包含的校验值与查找到的校验值相同时,确定所述待验证数据的数据内容可信;
当接收到的所述数据验证请求中包含的校验值与查找到的校验值不相同时,确定所述待验证数据的数据内容已被修改。
通过本申请实施例提供的技术方案,接收数据验证请求,所述数据验证请求中包含待校验数据的数据版本的版本标识以及基于所述待校验数据的数据内容得到的校验值;根据所述数据校验请求中包含的数据版本的版本标识,从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值;根据接收到的所述数据验证请求中包含的校验值和查找到的校验值,对所述待验证数据的数据内容进行验证。由于区块链具备不能篡改的特性,那么从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值是可信的,利用可信的校验值校验数据验证请求中的待校验数据是否被篡改,进而确保了待校验数据的真实性。
图4为本申请实施例提供的一种数据校验方法的场景示意图。
从图4中可以看出,区块链中包含多个数据节点,这些数据节点可以接收不同用户发送的数据验证请求,根据数据验证请求中携带的数据信息(这里可以指校验值),从区块链中查找相应的数据信息,并基于接收到的数据信息与查找到的数据信息对数据验证请求中包含的待验证数据进行校验,以此确保数据需求方能够获取到真实有效数据。
实施例3
图5为本申请实施例提供的一种数据溯源方法的流程示意图。所述方法可以如下所示。
步骤501:接收数据回溯请求。
所述数据回溯请求中包含待回溯数据的第一数据版本的版本标识。
在步骤501中,当需要查找目标对象的演进过程或者演变历史时,可以启动本申请实施例的操作,即发送数据回溯请求,在该数据回溯请求中包含待回溯数据的第一数据版本的版本标识。
这里的第一数据版本的版本标识可以是当前数据版本的版本标识,也可以是任意一个数据版本的版本标识,这里不做限定。
这里第一数据版本的版本标识用来确定进行数据回溯的待回溯数据的回溯起点。例如:一个应用软件,当前数据版本为3.0,那么一旦发起回溯请求,该回溯请求中携带的数据版本的版本标识可以为3.0,也可以为2.0,等等,这里不做限定。
步骤502:根据所述第一数据版本的版本标识,从区块链中查找包含所述第一数据版本的版本标识的数据区块,并从所述数据区块中获取与所述第一数据版本相邻的第二数据版本的版本标识。
在步骤502中,由于数据区块中不仅存储了第一数据版本的版本标识还存储了与第一数据版本的版本标识相邻的前一个第二数据版本的版本标识,那么可以通过第一数据版本的版本标识,查找到包含第一数据版本的版本标识的数据区块,并从数据区块中获取与第一数据版本的版本标识相邻的前一个第二数据版本的版本标识。
步骤503:根据查找到的所述第二数据版本的版本标识,依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块。
在步骤503中,以查找到的所述第二数据版本的版本标识为起点,按照步骤502中的方式依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块。
具体地,针对已查找到的数据版本的版本标识,执行以下操作,直至查找到包含待回溯数据的初始版本的版本标识的数据区块:
从区块链中查找包含所述已查找到的数据版本的版本标识的数据区块,并从所述数据区块中获取与所述已查找到的数据版本相邻的前一个数据版本的版本标识;
触发循环执行上述操作,直至查找到包含待回溯数据的初始版本的版本标识的数据区块。
需要说明的是,这里已查找到的数据版本的版本标识可以是指除了第一数据版本的版本标识之外的其他数据版本的版本标识。
步骤504:根据所述数据区块,确定所述待回溯数据的初始版本对应的数据内容。
需要说明的是,在本申请实施例中,在每查找到一个数据版本的版本标识时,同步可以确定该数据版本对应的数据内容。这样可以基于查找到的数据内容分析待回溯数据的演变过程,真实有效分析待回溯数据所蕴含的生产价值。
通过本申请实施例提供的技术方案,接收数据回溯请求,所述数据回溯请求中包含待回溯数据的第一数据版本的版本标识;根据所述第一数据版本的版本标识,从区块链中查找包含所述第一数据版本的版本标识的数据区块,并从所述数据区块中获取与所述第一数据版本相邻的第二数据版本的版本标识;根据查找到的所述第二数据版本的版本标识,依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块;根据所述数据区块,确定所述待回溯数据的初始版本对应的数据内容。由于通过数据区块的形式在区块链中不仅存储目标对象的第一数据版本的版本标识而且还存储与第一数据版本相邻的第二数据版本的版本标识,由于区块链具备不能篡改的特性,且采用链式数据结构,这样能够回溯查找到待回溯数据的演变版本以及每一个演变版本对应的数据内容,并且保证数据演变的真实性。
图6为本申请实施例提供的一种数据溯源方法的场景示意图。
从图6中可以看出,由于区块链采用链式数据结构,那么在确定其中一个数据区块时,可以根据链式数据结构的特点查找到与该数据区块关联的其他数据区块,进而起到追溯数据源的目的,同时也能够保证所获取到的信息真实可信。
假设与该目标对象对应的数据区块由5个,数据区块1、数据区块2、数据区块3、数据区块4和数据区块5。这里以数据区块内存储数据版本的版本标识为例进行说明。
由于数据区块5中存储的数据版本的版本标识为5.0和4.0;数据区块4中存储的数据版本的版本标识为4.0和3.0;数据区块3中存储的数据版本的版本标识为3.0和2.0;数据区块2中存储的数据版本的版本标识为2.0和1.0;数据区块1中存储的数据版本的版本标识为1.0。那么在进行数据溯源时,首先确定数据区块51,依次再确定数据区块4、数据区块3和数据区块2,最后确定数据区块1,这样能够完整实现数据溯源的目的。
实施例4
基于同一发明构思,图7为本申请实施例提供的一种数据存储设备的结构示意图。所述数据存储设备包括:确定模块71、查找模块72和存储模块73,其中:
确定模块71,确定目标对象的第一数据版本的第一校验值;
查找模块72,查找所述目标对象的与所述第一数据版本相邻的第二数据版本的第二校验值;
存储模块73,根据所述第一校验值和所述第二校验值创建数据区块,并将所述数据区块存储至区块链中,其中,存储至所述区块链的数据区块不可被修改。
在本申请的另一个实施例中,所述确定模块71确定目标对象的第一数据版本的第一校验值,包括:
确定目标对象在第一数据版本中的数据内容摘要;
利用设定算法和所述数据内容摘要,计算得到所述目标对象的第一数据版本的第一校验值。
在本申请的另一个实施例中,存储模块72根据所述第一校验值和所述第二校验值创建数据区块,包括:
创建数据区块,并将所述第一校验值和所述第二校验值按照设定格式写入所述数据区块的数据头部分。
在本申请的另一个实施例中,所述数据存储设备还包括:写入模块74,其中:
所述写入模块74,将所述目标对象在所述第一数据版本中的数据内容摘要或所述第二校验值或所述目标对象的所述第一数据版本的数据内容写入所述数据区块的数据体部分。
在本申请的另一个实施例中,所述存储模块72,将所述目标对象的所述第一数据版本的数据内容存储至云数据网关或者数据库中。
在本申请的另一个实施例中,所述存储模块72,在将所述数据区块存储至区块链的区块中后,存储所述目标对象的第一数据版本的版本标识与所述数据区块的区块标识之间的映射关系。
在本申请的另一个实施例中,所述存储模块72将所述数据区块存储至区块链中,包括:
按照链式数据结构,将所述数据区块上链至区块链中。
需要说明的是,本申请实施例提供的数据存储设备可以通过硬件方式实现,也可以通过软件方式实现,这里不做具体限定。数据存储设备通过数据区块的形式在区块链中存储目标对象的第一数据版本的第一校验值,由于区块链具备不能篡改的特性,那么在数据需求方获取到目标对象的第一数据版本对应的数据内容时,可以通过区块链中存储的第一校验值验证第一数据版本对应的数据内容是否发生修改,进而确定第一数据版本对应的数据内容的真实性,有效解决了数据内容容易被篡改导致的数据内容的真实性无法确定的问题,改善了数据需求方进行数据分析的效率。
实施例5
图8为本申请实施例提供的一种数据校验设备的结构示意图。所述数据校验设备包括:接收模块81、查找模块82和验证模块83,其中:
接收模块81,接收数据验证请求,所述数据验证请求中包含待校验数据的数据版本的版本标识以及基于所述待校验数据的数据内容得到的校验值;
查找模块82,根据所述数据校验请求中包含的数据版本的版本标识,从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值;
验证模块83,根据接收到的所述数据验证请求中包含的校验值和查找到的校验值,对所述待验证数据的数据内容进行验证。
在本申请的另一个实施例中,所述验证模块83根据接收到的所述数据验证请求中包含的校验值和查找到的校验值,对所述待验证数据的数据内容进行验证,包括:
当接收到的所述数据验证请求中包含的校验值与查找到的校验值相同时,确定所述待验证数据的数据内容可信;
当接收到的所述数据验证请求中包含的校验值与查找到的校验值不相同时,确定所述待验证数据的数据内容已被修改。
在本申请的另一个实施例中,所述查找单元82根据所述数据校验请求中包含的数据版本的版本标识,从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值,包括:
根据预先存储的数据版本的版本标识与数据区块的区块标识之间的映射关系,确定所述数据验证请求中包含的数据版本的版本标识对应的数据区块的区块标识;
从确定的所述区块标识对应的数据区块中读取与所述数据版本的版本标识对应的校验值。
需要说明的是,本申请实施例提供的数据校验设备可以通过硬件方式实现,也可以通过软件方式实现,这里不做具体限定。所述数据校验设备由于区块链具备不能篡改的特性,那么从区块链中查找预先存储的与所述数据版本的版本标识对应的校验值是可信的,利用可信的校验值校验数据验证请求中的待校验数据是否被篡改,进而确保了待校验数据的真实性。
实施例6
图9为本申请实施例提供的一种数据溯源设备的结构示意图。所述数据溯源设备包括:接收模块91、回溯模块92和确定模块93,其中:
接收模块91,接收数据回溯请求,所述数据回溯请求中包含待回溯数据的第一数据版本的版本标识;
回溯模块92,根据所述第一数据版本的版本标识,从区块链中查找包含所述第一数据版本的版本标识的数据区块,并从所述数据区块中获取与所述第一数据版本相邻的第二数据版本的版本标识;根据查找到的所述第二数据版本的版本标识,依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块;
确定模块93,根据所述数据区块,确定所述待回溯数据的初始版本对应的数据内容。
在本申请的另一个实施例中,所述回溯单元92根据查找到的所述第二数据版本的版本标识,依次回溯查找到包含所述待回溯数据的初始版本的版本标识的数据区块,包括:
针对已查找到的数据版本的版本标识,执行以下操作,直至查找到包含待回溯数据的初始版本的版本标识的数据区块:
从区块链中查找包含所述已查找到的数据版本的版本标识的数据区块,并从所述数据区块中获取与所述已查找到的数据版本相邻的前一个数据版本的版本标识;
触发循环执行上述操作,直至查找到包含待回溯数据的初始版本的版本标识的数据区块。
需要说明的是,本申请实施例提供的数据溯源设备可以通过硬件方式实现,也可以通过软件方式实现,这里不做具体限定。数据溯源设备由于通过数据区块的形式在区块链中不仅存储目标对象的第一数据版本的版本标识而且还存储与第一数据版本相邻的第二数据版本的版本标识,由于区块链具备不能篡改的特性,且采用链式数据结构,这样能够回溯查找到待回溯数据的演变版本以及每一个演变版本对应的数据内容,并且保证数据演变的真实性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。