为区块链上的数据锚定时间的方法及装置、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种为区块链上的数据锚定时间的方法及装置、电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
发明内容
本说明书提出一种为区块链上的数据锚定时间的方法,所述方法包括:
在目标数据中添加已在区块链存证的参考交易的第一交易标识;
生成目标交易;其中,所述目标交易包括添加了第一交易标识的目标数据;
将生成的所述目标交易发布至区块链进行存证,并将所述目标交易的第二交易标识返回给数据验证方,以使所述数据验证方基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳后,进一步基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳,并基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段。
可选的,所述交易标识为针对交易进行计算得到的hash值。
可选的,所述目标交易包括添加了所述第一交易标识的目标数据的hash值;
所述生成目标交易,包括:
计算添加了所述第一交易标识的目标数据的hash值;
基于添加了所述第一交易标识的目标数据的hash值生成目标交易。
可选的,所述区块链上存证的交易对应的时间戳,包括以下示出的任一:
所述区块链上存证的交易所在区块的区块创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易接收时刻对应的时间戳;其中,所述交易接收时刻对应的时间戳由区块链中的节点设备,在接收到该交易时添加至该交易中。
本说明书还提出一种为区块链上的数据锚定时间的方法,包括:
获取在区块链上存证的目标交易的第二交易标识;其中,所述目标交易包括添加了已在区块链存证的参考交易的第一交易标识的目标数据;
基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳,并在查询到所述目标交易对应的第一时间戳后,进一步基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳;
基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段。
可选的,所述交易标识为针对交易进行计算得到的hash值。
可选的,所述目标交易包括添加了所述第一交易标识的目标数据的hash值;
所述基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳,包括:
基于所述第二交易标识查询所述区块链上存证的所述目标交易;
获取所述区块链中的节点设备返回的第一查询结果;其中,所述第一查询结果包括所述目标数据的hash值,和所述目标交易对应的第一时间戳;
获取所述第一查询结果中的所述第一时间戳。
可选的,所述数据验证方本地存储了已添加了所述第一交易标识的目标数据;
所述基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳,包括:
计算本地存储的所述目标数据的hash值;
确定计算出的hash值与所述第一查询结果中的所述目标数据的hash值是否匹配;如果是,进一步读取本地存储的所述目标数据中添加的所述第一交易标识;
基于读取到的所述第一交易标识查询所述区块链上存证的所述参考交易;
获取所述区块链中的节点设备返回的第二查询结果;其中,所述第二查询结果包括所述参考交易对应的第二时间戳;
获取所述第二查询结果中的所述第二时间戳。
可选的,基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段,包括:
将所述第一时间戳对应的第一时刻之后,和所述第二时间戳对应的第二时刻之前的时间段,确定为所述目标数据的产生时间段。
可选的,所述区块链上存证的交易对应的时间戳,包括以下示出的任一:
所述区块链上存证的交易所在区块的区块创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易接收时刻对应的时间戳;其中,所述交易接收时刻对应的时间戳由区块链中的节点设备,在接收到该交易时添加至该交易中。
本说明书还提出一种为区块链上的数据锚定时间的装置,所述装置包括:
添加模块,在目标数据中添加已在区块链存证的参考交易的第一交易标识;
生成模块,生成目标交易;其中,所述目标交易包括添加了第一交易标识的目标数据;
存证模块,将生成的所述目标交易发布至区块链进行存证,并将所述目标交易的第二交易标识返回给数据验证方,以使所述数据验证方基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳后,进一步基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳,并基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段。
可选的,所述交易标识为针对交易进行计算得到的hash值。
可选的,所述目标交易包括添加了所述第一交易标识的目标数据的hash值;
所述生成模块:
计算添加了所述第一交易标识的目标数据的hash值;
基于添加了所述第一交易标识的目标数据的hash值生成目标交易。
可选的,所述区块链上存证的交易对应的时间戳,包括以下示出的任一:
所述区块链上存证的交易所在区块的区块创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易接收时刻对应的时间戳;其中,所述交易接收时刻对应的时间戳由区块链中的节点设备,在接收到该交易时添加至该交易中。
本说明书还提出一种为区块链上的数据锚定时间的装置,包括:
获取模块,获取在区块链上存证的目标交易的第二交易标识;其中,所述目标交易包括添加了已在区块链存证的参考交易的第一交易标识的目标数据;
查询模块,基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳,并在查询到所述目标交易对应的第一时间戳后,进一步基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳;
确定模块,基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段。
可选的,所述交易标识为针对交易进行计算得到的hash值。
可选的,所述目标交易包括添加了所述第一交易标识的目标数据的hash值;
所述查询模块:
基于所述第二交易标识查询所述区块链上存证的所述目标交易;
获取所述区块链中的节点设备返回的第一查询结果;其中,所述第一查询结果包括所述目标数据的hash值,和所述目标交易对应的第一时间戳;
获取所述第一查询结果中的所述第一时间戳。
可选的,所述数据验证方本地存储了已添加了所述第一交易标识的目标数据;
所述查询模块进一步:
计算本地存储的所述目标数据的hash值;
确定计算出的hash值与所述第一查询结果中的所述目标数据的hash值是否匹配;如果是,进一步读取本地存储的所述目标数据中添加的所述第一交易标识;
基于读取到的所述第一交易标识查询所述区块链上存证的所述参考交易;
获取所述区块链中的节点设备返回的第二查询结果;其中,所述第二查询结果包括所述参考交易对应的第二时间戳;
获取所述第二查询结果中的所述第二时间戳。
可选的,所述确定模块:
将所述第一时间戳对应的第一时刻之后,和所述第二时间戳对应的第二时刻之前的时间段,确定为所述目标数据的产生时间段。
可选的,所述区块链上存证的交易对应的时间戳,包括以下示出的任一:
所述区块链上存证的交易所在区块的区块创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易接收时刻对应的时间戳;其中,所述交易接收时刻对应的时间戳由区块链中的节点设备,在接收到该交易时添加至该交易中。
在以上技术方案中,通过在待存证的目标数据中添加已在区块链存证的参考交易的交易标识,再将添加了该交易标识的目标数据发布至区块链中进行存证,使得该目标数据的验证方通过查询区块链上存证的该目标数据的第一时间戳,和该目标数据中添加的参考交易的第二时间戳,就可以确定该目标数据的产生时间段,从而可以为在区块链上存证的目标数据锚定真实的产生时间段。
附图说明
图1是一示例性实施例提供的一种为区块链上的数据锚定时间的方法的流程图;
图2是一示例性实施例提供的一种基于区块链进行司法存证的系统架构图;
图3是一示例性实施例提供的一种基于图2示出的司法存证系统进行司法证据验证的交互图;
图4是一示例性实施例提供的一种电子设备的结构示意图;
图5是一示例性实施例提供的一种为区块链上的数据锚定时间的装置的框图;
图6是一示例性实施例提供的另一种为区块链上的数据锚定时间的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。
而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。
基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
对于物理世界产生的真实数据,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点设备进行共识,并在达成共识后,由区块链中作为记账节点的节点设备,将这笔交易打包进区块,在区块链中进行持久化存证。
然而,在将物理世界产生的一笔数据,以交易的形式在区块链上的区块中进行持有化存证,基于区块链上记录的信息,通常只能够确认该笔数据的产生时刻,早于该数据所在的区块的创建时刻。
而在一些实际的应用场景中,则可能需要获知到区块链上存证的一笔数据,是否是在一个更加精确的特定时间段产生的数据的需求;
例如,以将签订完成的电子合同发布至区块链进行存证的应用场景为例,由于电子合同本身是具有法律效力的文书,因此当该电子合同作为司法证据时,仅仅获知该电子合同的签订时刻是在记录该电子合同的区块的创建时刻之前的某一个时刻是远远不够的,通常需要获知该电子合同,是否是在一个特定的时间段内签订的。
基于此,本说明书提出一种为区块链上存证的数据锚定精确的产生时间段的技术方案。
在实现时,当用户需要将产生的一笔目标数据在区块链上进行存证时,可以将该目标数据的原始内容提交给存证客户端。而存证客户端在收到用户提交的目标数据时,可以从区块链上获取一笔已经在区块链上存证的参考交易的第一交易标识,然后将该第一交易标识添加到该目标数据的原始内容中。
当该目标数据添加了上述第一交易标识之后,存证客户端还可以按照区块链支持的标准交易格式,根据该目标数据来构建一笔目标交易,将该目标交易发布至区块链进行存证,并将该目标交易的第二交易标识返回给数据验证方。
而数据验证方在需要对该目标数据的产生时间段进行验证时,首先可以基于上述第二交易标识在区块链上发起查询,查询区块链上存证的上述目标交易对应的第一时间戳。
当查询到区块链上存证的上述目标交易对应的第一时间戳后,可以进一步基于上述目标数据的原始内容中添加的上述参考交易的第一交易标识在区块链上发起查询,查询区块链上存证的上述参考交易对应的第二时间戳。
当数据验证方查询到上述第一时间戳和第二时间戳后,可以基于上述第一时间戳和第二时间戳,来确定上述目标数据的产生时间段。
例如,在一个例子中,可以将所述第一时间戳对应的第一时刻之后,和所述第二时间戳对应的第二时刻之前的时间段,确定所述目标数据的产生时间段。
在以上技术方案中,通过在待存证的目标数据中添加已在区块链存证的参考交易的交易标识,再将添加了该交易标识的目标数据发布至区块链中进行存证,使得该目标数据的验证方通过查询区块链上存证的该目标数据的第一时间戳,和该目标数据中添加的参考交易的第二时间戳,就可以确定该目标数据的产生时间段,从而可以为在区块链上存证的目标数据锚定真实的产生时间段。
请参见图1,图1是一示例性实施例提供的一种为区块链上的数据锚定时间的方法的流程图。所述方法应用于存证客户端和数据验证方,包括以下步骤:
步骤102,存证客户端在目标数据中添加已在区块链存证的参考交易的第一交易标识;
步骤104,存证客户端生成目标交易;其中,所述目标交易包括添加了第一交易标识的目标数据;
步骤106,将生成的所述目标交易发布至区块链进行存证,并将所述目标交易的第二交易标识返回给数据验证方。
步骤108,数据验证方基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳,并在查询到所述目标交易对应的第一时间戳后,进一步基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳;
步骤110,数据验证方基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段。
上述目标数据,包括物理世界产生的任意形式的,需要作为证据在区块链的分布式账本中进行持久化存储的数据;
例如,在司法存证的场景下,上述目标数据具体可以包括需要作为证据在区块链中进行存证的图片数据、视频数据、电子合同数据,等等。
上述存证客户端,作为用户在区块链上进行数据存证的操作入口,在实际应用中,可以包括基于高级编程语言开发的;或者,采用高级编程语言和web编程语言混合开发的模式开发的原生应用;也可以是采用web编程语言开发的web应用;
例如,在实际应用中,上述存证客户端具体可以是一款移动端的APP应用;或者,也可以是一款web应用(比如浏览器)。
上述数据验证方,具体是指具有对区块链上存证的数据进行数据验证需求的一方。在本说明书中,上述数据验证方可以通过验证,来确定区块链上存证的数据,是否是在一个特定时间段产生的数据;
例如,在司法存证的场景下,上述数据验证方具体可以包括,由司法机构部署的,用于对区块链上存证的作为司法证据的数据进行有效性验证的验证系统、验证设备等等。司法机构可以通过部署的上述验证系统、验证设备等,对区块链上存证的作为司法证据的数据进行验证,来确定这些数据,是否是在一个特定时间段产生的数据。
以下以司法存证的应用场景为例,对本说明书的技术方案进行详细描述。需要强调的是,以司法存证的应用场景为例,仅为示意性的,在实际应用中,本说明书的技术方案显然也可以应用在其它类似的数据存证场景中,在本说明书中不再对具体的存证场景进行一一列举。
请参见图2,图2为本说明书示出的一种基于区块链进行司法存证的系统架构图;
如图2所示,作为存证发起方的用户,一方面,可以通过存证客户端将作为司法证据的目标数据发布至区块链进行存证;另一方面,可以将目标数据作为司法证据提交给司法机构。
而作为数据验证方的司法机构,可以查询区块链上存证的司法证据,并基于查询到的司法证据,对用户提交的司法证据进行验证;例如,验证用户提交的司法证据是否合法是否被篡改;以及,验证用户提交的司法证据是否在一个特定的时间段产生的数据。
图3为本说明书示出的一种基于图2示出的司法存证系统进行司法证据验证的交互图。
其中,需要说明的是,本说明书描述的司法存证的过程,包括参考数据的存证,和作为司法证据的目标数据的存证两阶段。
如图3所示,在参考数据的存证阶段,作为存证发起方的用户,可以通过存证客户端将一笔参考数据,打包生成一笔参考交易,并将打包的参考交易发送给与该存证客户端对接的区块链节点设备。
其中,上述参考数据,可以包含任意的内容,在本说明书中不进行具体限定。
区块链中的节点设备在收到客户端发送的上述参考交易后,可以检查该交易是否有效、格式是否正确,验证该交易的签名是否合法等,并在所有的检查和验证均通过后,可以基于区块链支持的共识算法对接收到的该参考交易发起共识,并在共识通过后,将该笔参考交易在区块链的分布式账本中进行持久化存储,完成该笔参考交易在区块链上的存证过程。
当上述参考交易在区块链上存证成功,区块链中的节点设备可以将与上述参考交易对应的存证结果,返回给上述存证客户端,由上述存证客户端进行保存,并将存证结果通过可视化的用户界面,向用户进行输出;
例如,在实际应用中,上述存证结果具体可以是将数据成功存证至区块链之后,由区块链中的节点设备返回的存证回执。在存证回执中可以包含基于该笔数据打包生成的交易的交易标识,该笔交易所在的区块在区块链上的区块高度(即区块号)、以及该交易在区块链上的存证时刻对应的时间戳等信息。
请继续参见图3,作为司法证据的目标数据的存证阶段,作为存证发起方的用户,首先可以将需要作为司法证据的目标数据提交给存证客户端。而存证客户端在收到用户提交的目标数据之后,可以将已经区块链上存证的上述参考交易的交易标识(即上述第一交易标识),添加到上述目标数据中。
其中,在上述目标数据中添加上述参考交易的交易标识的具体方式,在本说明书中不进行特别限定;
例如,以上述目标数据为作为司法证据的电子合同为例,上述存证客户端可以对上述参考交易的交易标识进行可视化加工,将其转换为图形标识(比如水印,或者二维码等),然后将图形标识覆盖在电子合同的合同内容之上。
需要说明的是,在实际应用中,也可以省略以上描述的参考数据的存证阶段,在这种情况下,当存证客户端收到作为存证发起方的用户提交的目标数据之前,可以向区块链发起一次查询,来随机获取一笔已在区块链上成功存证的交易作为参考交易,并将取得的该参考交易的交易标识,添加至上述目标数据中。
进一步的,当在上述目标数据中添加了上述参考交易的交易标识之后,存证客户端可以将添加了上述参考交易的交易标识的目标数据,打包生成一笔目标交易,并将打包的目标交易发送给与该存证客户端对接的区块链节点设备。
区块链中的节点设备在收到客户端发送的上述目标交易后,仍然可以检查该交易是否有效、格式是否正确,验证该交易的签名是否合法等,并在所有的检查和验证均通过后,可以基于区块链支持的共识算法对接收到的该目标交易发起共识,并在共识通过后,将该笔目标交易在区块链的分布式账本中进行持久化存储,完成该笔目标交易在区块链上的存证过程。
其中,上述区块链中支持的共识算法,在本说明书中不进行特别限定。
一般的,区块链中支持的共识算法,通常分为节点设备需要争夺每一轮的记账周期的记账权的共识算法,和预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法。
例如,前者以工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法为代表;后者以实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法为代表。
对于采用工作量证明(Proof of Work,POW)以及股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法的的区块链网络中,区块链中的节点设备都可以争夺记账权。当任一节点设备在本轮争夺记账权的过程中胜出,则可以成为记账节点。而记账节点可以将收到的由客户端发送的由交易与其它交易一起打包并生成新的区块,并将生成的新的区块发送至其它节点进行共识。
对于采用实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法的区块链网络中,具有记账权的节点在本轮记账前已经商定好。因此,节点设备在接收到由客户端发送的交易后,如果自身不是本轮的记账节点,则可以将该交易进一步发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包生成新区块后,可以将生成的新的区块;或者,该新生成的区块的区块头发送至其它节点进行共识验证。
如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将收到的交易打包并生成新的区块,并将生成的新的区块或者区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到新的区块或者区块头后,经验证没有问题,可以将该新的区块追加到原有的区块链末尾,从而完成记账过程,达成共识。当达成共识后,交易中所包含的数据将在区块链的分布式账本进行持久化存储;也即,当达成共识后,交易中所包含的数据就完成了在区块链上的存证过程。
当上述目标交易在区块链上存证成功,区块链中的节点设备可以将与上述目标交易对应的存证结果,返回给上述存证客户端。
而上述存证客户端在收到区块链中的节点设备返回的与上述目标交易对应的存证结果之后,除了需要保存上述存证客户端,并将该存证结果通过可视化的用户界面,向用户进行输出以外,还可以将该存证结果中的上述目标交易的交易标识返回给数据验证方,由上述数据验证方对作为司法证据的目标数据进行数据验证。
其中,在示出的一种实施方式中,在区块链中存证的交易的交易标识,具体可以是针对该交易整体进行hash计算所得到的hash值。
在这种情况下,存证客户端在向上述目标数据中添加上述参考交易的交易标识时,具体可以将上述参考交易的hash值作为交易标识,添加至上述目标数据;并在上述目标交易在区块链上成功存证后,将上述目标交易的hash值返回给上述数据验证方。
当然,在实际应用中,在区块链中存证的交易的交易标识,具体也可以是由区块链中的节点设备分配的其它形式的标识,在本说明书中不再进行一一;比如,可以是由节点设备分配的交易编号,等等。
在本说明书中,由于作为司法证据的目标数据,其本身可能包含用户的隐私数据;而区块链作为一个完全透明公开的分布式账本,一旦将目标数据的明文内容在区块链上存证后,可能会造成用户隐私泄露的问题。
基于此,在示出的一种实施方式中,用户在将作为司法证据的目标数据发布至区块链进行存证时,可以不再将上述目标数据的明文内容在上述区块链上进行存证,而是仅将上述目标数据的hash值在区块链上进行存证。
在这种情况下,上述存证客户端在收到用户提交的目标数据,并在上述目标数据添加了上述参考交易的交易标识之后,可以计算添加了上述参考交易的交易标识的上述目标数据的hash值,然后基于生成的hash值来打包生成上述目标交易;也即,打包生成的上述目标交易中,仅包含上述目标数据的hash值,并不包含上述目标数据的明文内容。
相应的,上述存证客户端在收到区块链中的节点设备返回的与上述目标交易对应的存证结果之后,除了需要将该存证结果中的上述目标交易的交易标识返回给数据验证方以外,还需要将上述目标数据的明文内容,提交给上述数据验证方。
也即,由于区块链上仅存证了上述目标数据的hash值,对于数据验证方而言,无法直接从区块链上获取到上述目标数据的明文内容,因此需要上述用户通过存证客户端将上述目标数据的明文内容,与上述目标交易的交易标识一并提交给上述数据验证方进行数据验证。
在以下实施例中,将以上述存证客户端仅将上述目标数据的hash至发布至区块链进行存证为例进行说明。
当然,需要强调的是,在实际应用中,在上述目标数据并不涉及用户隐私的情形下,上述存证客户端也可以采用直接将上述目标数据的明文内容发布至区块链进行存证的存证方式。
在本说明书中,数据验证方在收到上述存证客户端返回的上述目标交易的交易标识后,可以基于上述目标交易的交易标识查询上述区块链上存证的上述目标交易,并获取区块链上的节点设备返回的查询结果;
例如,以上述交易标识的hash值为例,数据验证方可以将上述目标交易的hash值作为参数提交至区块链中节点设备上启用的数据访问API接口,发起针对该API接口的接口调用,然后基于该API接口的调用返回来获取区块链上存证的上述目标交易。
其中,在节点设备返回的与上述目标交易对应的查询结果中,通常包括上述目标交易的hash值(即上述目标交易中包含的数据内容),和上述目标交易对应的存证时间戳(即上述第一时间戳)。数据验证方在收到节点设备返回的与上述目标交易对应的查询结果后,可以获取该查询结果中包含的与上述目标交易对应的存证时间戳。
进一步的,数据验证方在收到节点设备返回的查询结果,并获取上述查询结果中包含的与上述目标交易对应的存证时间戳之后,可以进一步读取上述查询结果中包含的上述目标交易的hash值,并计算数据验证方本地存储的由上述存证客户端提交的上述目标数据的明文内容的hash值;然后,可以确定计算出的hash值,与节点设备返回的查询结果中包含的hash值是否匹配;
如果二者不匹配,表明上述存证客户端提交的上述目标数据的明文内容,与在区块链上存证的该目标数据并不匹配,上述存证客户端提交的上述目标数据可能是经过篡改的非法内容;在这种情况下,上述数据验证方可以直接终止针对该目标数据的验证过程。
如果二者匹配,表明上述存证客户端提交的上述目标数据通过了合法性验证,此时上述数据校验方可以进一步读取本地存储的上述目标数据中记录的上述参考交易的交易标识,然后基于读取到的该参考交易的交易标识,查询上述区块链上存证的上述参考交易,并获取区块链上的节点设备返回的查询结果,具体的查询过程不再赘述。
其中,在节点设备返回的与上述参考交易对应的查询结果中,仍然可以包括上述参考交易中包含的数据内容(也可以是参考交易的hash值),和上述参考交易对应的存证时间戳(即上述第二时间戳)。数据验证方在收到节点设备返回的与上述参考交易对应的查询结果后,可以获取该查询结果中包含的与上述参考交易对应的存证时间戳。
在本说明书中,数据验证方在获取到上述目标交易对应的存证时间戳(记为第一时间戳),和上述参考交易对应的存证时间戳(记为第二时间戳)后,由于上述参考交易在区块链上的存证时刻,早于上述目标交易在区块链上的存证时刻;因此,数据验证方在基于上述第一时间戳和上述第二时间戳确定上述目标数据的产生时间段时,可以将上述第一时间戳对应的第一时刻之后,和上述第二时间戳对应的第二时刻之前的时间段,确定为上述目标数据的产生时间段。
其中,上述目标数据的产生时间段的表示方式,在本说明书中不进行特别限定。例如,假设上述第一时间戳对应的时刻记为T1,上述第二时间戳对应的时刻记为T2,那么上述目标数据的产生时间段具体可以表示成[T1,T2]。即将上述时间段用闭区间来表示。当然,在实际应用中,上述目标数据的产生时间段具体可以表示成[T1,T2)、(T1,T2]、(T1,T2)。
其中,需要说明的是,在以上实施例中描述的,与区块链上存证的交易对应的存证时间戳,具体是指区块链中的分布式账本中记录的,能够反应交易在区块链上的存证时刻的时间戳。
其中,与区块链上存证的交易对应的存证时间戳的具体表示形式,在本说明书中不进行特别限定,本领域技术人员可以采用交易所在的区块的区块创建时刻对应的时间戳、交易创建时刻对应的时间戳、交易接收时刻对应的时间戳中的任意一种,来表示上述存证时间戳。
在示出的一种实施方式中,与区块链上存证的交易对应的存证时间戳,具体可以是指,区块链上存证的交易所在区块的区块创建时刻对应的时间戳;区块创建时刻对应的时间戳,通常记录在区块的区块头中。
在这种情况下,上述数据验证方在向区块链查询上述目标交易或者上述参考交易的存证时间戳时,节点设备可以直接从上述目标交易或者上述参考交易所在的区块的区块头中读取时间戳信息,然后作为查询结果返回给上述数据验证方。
在示出的另一种实施方式中,与区块链上存证的交易对应的存证时间戳,具体也可以是指,区块链上存证的交易中携带的交易创建时刻对应的时间戳;
在这种情况下,存证客户端在将上述参考数据或者目标数据打包生成交易时,可以直接获取当前的系统时间作为交易创建时刻,再将当前的系统时间转换成为事件戳,携带在打包生成的交易中。
上述数据验证方在向区块链查询上述目标交易或者上述参考交易的存证时间戳时,节点设备可以直接从上述目标交易或者上述参考交易中读取携带的交易创建时刻对应的时间戳,然后作为查询结果返回给上述数据验证方。
在示出的另一种实施方式中,与区块链上存证的交易对应的存证时间戳,具体也可以是指,区块链上存证的交易中携带的交易接收时刻对应的时间戳;其中,上述交易接收时刻对应的时间戳,具体可以是由区块链中的节点设备,在接收到该交易时添加至该交易中。
也即,存证客户端在将上述参考数据或者目标数据打包生成交易时,可以不再需要将当前的系统时间戳作为交易创建时刻携带在交易中,而是在将打包生成的交易发送至区块链中的节点设备时,由区块链中的节点设备采用区块链中经过共识的分布式时钟确定交易接收时刻,再将该交易接收时刻对应的时间戳添加至该交易中。
在以上技术方案中,通过在待存证的目标数据中添加已在区块链存证的参考交易的交易标识,再将添加了该交易标识的目标数据发布至区块链中进行存证,使得该目标数据的验证方通过查询区块链上存证的该目标数据的第一时间戳,和该目标数据中添加的参考交易的第二时间戳,就可以确定该目标数据的产生时间段,从而可以为在区块链上存证的目标数据锚定真实的产生时间段。
与上述方法实施例相对应,本申请还提供了装置的实施例。
与上述方法实施例相对应,本说明书还提供了一种为区块链上的数据锚定时间的装置的实施例。本说明书的为区块链上的数据锚定时间的装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书的为区块链上的数据锚定时间的装置所在电子设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图5是本说明书一示例性实施例示出的一种为区块链上的数据锚定时间的装置的框图。
请参考图5,所述为区块链上的数据锚定时间的装置50可以应用在前述图4所示的电子设备中,包括:
添加模块501,在目标数据中添加已在区块链存证的参考交易的第一交易标识;
生成模块502,生成目标交易;其中,所述目标交易包括添加了第一交易标识的目标数据;
存证模块503,将生成的所述目标交易发布至区块链进行存证,并将所述目标交易的第二交易标识返回给数据验证方,以使所述数据验证方基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳后,进一步基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳,并基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段。
在本实施例中,所述交易标识为针对交易进行计算得到的hash值。
在本实施例中,所述目标交易包括添加了所述第一交易标识的目标数据的hash值;所述生成模块502:
计算添加了所述第一交易标识的目标数据的hash值;
基于添加了所述第一交易标识的目标数据的hash值生成目标交易。
在本实施例中,所述区块链上存证的交易对应的时间戳,包括以下示出的任一:
所述区块链上存证的交易所在区块的区块创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易接收时刻对应的时间戳;其中,所述交易接收时刻对应的时间戳由区块链中的节点设备,在接收到该交易时添加至该交易中。
图6是本说明书一示例性实施例示出的一种为区块链上的数据锚定时间的装置的框图。
请参考图6,所述为区块链上的数据锚定时间的装置60也可以应用在前述图3所示的电子设备中,包括:
获取模块601,获取在区块链上存证的目标交易的第二交易标识;其中,所述目标交易包括添加了已在区块链存证的参考交易的第一交易标识的目标数据;
查询模块602,基于所述第二交易标识查询所述区块链上存证的所述目标交易对应的第一时间戳,并在查询到所述目标交易对应的第一时间戳后,进一步基于所述目标数据中添加的所述第一交易标识查询所述区块链上存证的所述参考交易对应的第二时间戳;
确定模块603,基于所述第一时间戳和所述第二时间戳来确定所述目标数据的产生时间段。
在本实施例中,所述交易标识为针对交易进行计算得到的hash值。
在本实施例中,所述目标交易包括添加了所述第一交易标识的目标数据的hash值;所述查询模块602:
基于所述第二交易标识查询所述区块链上存证的所述目标交易;
获取所述区块链中的节点设备返回的第一查询结果;其中,所述第一查询结果包括所述目标数据的hash值,和所述目标交易对应的第一时间戳;
获取所述第一查询结果中的所述第一时间戳。
在本实施例中,所述数据验证方本地存储了已添加了所述第一交易标识的目标数据;所述查询模块602进一步:
计算本地存储的所述目标数据的hash值;
确定计算出的hash值与所述第一查询结果中的所述目标数据的hash值是否匹配;如果是,进一步读取本地存储的所述目标数据中添加的所述第一交易标识;
基于读取到的所述第一交易标识查询所述区块链上存证的所述参考交易;
获取所述区块链中的节点设备返回的第二查询结果;其中,所述第二查询结果包括所述参考交易对应的第二时间戳;
获取所述第二查询结果中的所述第二时间戳。
在本实施例中,所述确定模块603:
将所述第一时间戳对应的第一时刻之后,和所述第二时间戳对应的第二时刻之前的时间段,确定为所述目标数据的产生时间段。
在本实施例中,所述区块链上存证的交易对应的时间戳,包括以下示出的任一:
所述区块链上存证的交易所在区块的区块创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易创建时刻对应的时间戳;
所述区块链上存证的交易中携带的交易接收时刻对应的时间戳;其中,所述交易接收时刻对应的时间戳由区块链中的节点设备,在接收到该交易时添加至该交易中。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。