一种可信时间戳添加方法、装置和存储介质与流程

文档序号:19247304发布日期:2019-11-27 19:47阅读:181来源:国知局
一种可信时间戳添加方法、装置和存储介质与流程

本申请涉及区块链技术领域,具体涉及一种可信时间戳添加方法、装置和存储介质。



背景技术:

区块链是区块以链的方式组合在一起形成的去中心化的数据库。具体地,把一段时间内生成的信息(包括存证数据)打包生成一个区块,为该区块添加可信时间戳,再与上一个区块衔接在一起,如此,首尾相连,形成了区块链。其中,每一个区块的区块头中,除了创世区块外,都包括了上一个区块的哈希值,每一个区块的区块体中包括至少一个交易,交易中包括所生成的信息如包括存证数据等。由于区块链在生成区块时添加了可信时间戳,使得保存在区块链中的信息生成的时间是可信的,如此为区块链赋予可信时间。

现有技术中,为区块链添加可信时间戳的方式具体为:区块链网络的共识节点在生成区块时获取可信时间戳。这种添加可信时间戳的方式,需要区块链本身获取可信时间戳,即需要区块链的共识节点在生成区块时去获取可信时间戳,如此,若想为区块链赋予可信时间,对区块链有侵入,需要修改共识节点的代码,使得共识节点支持获取可信时间戳,因此降低了区块链的性能。



技术实现要素:

本申请实施例提供一种可信时间戳添加方法、装置和存储介质,可提高区块链的性能。

本申请实施例提供了一种可信时间戳添加方法,包括:

获取区块链上当前最新区块的区块数据;

获取可信时间,并根据所述可信时间为所述区块数据添加可信时间戳,得到具有可信时间戳的区块数据;

根据所述具有可信时间戳的区块数据构建时间戳交易请求;

向所述区块链中的节点发送所述时间戳交易请求,以使得所述节点根据所述时间戳交易请求将所述具有可信时间戳的区块数据添加至所述区块链中。

本申请实施例还提供了一种可信时间戳添加方法,应用于应用于第一节点,所述第一节点为区块链中的任意节点,包括:

接收时间戳交易请求,所述时间戳交易请求携带具有可信时间戳的区块数据;

当所述第一节点为可生成区块的目标节点时,生成区块,所述区块中包括具有可信时间戳的区块数据;

向区块链中的第二节点广播所述区块的验证请求,其中,所述第二节点为区块链中除第一节点以外的节点;

接收所述第二节点基于所述验证请求返回的验证结果;

基于所述第二节点返回的验证结果,将所述区块加入至所述区块链中。

本申请实施例还提供了一种可信时间戳添加装置,包括:

区块数据获取单元,用于获取区块链上当前最新区块的区块数据;

时间戳添加单元,用于获取可信时间,并根据所述可信时间为所述区块数据添加可信时间戳,得到具有可信时间戳的区块数据;

请求构建单元,用于根据所述具有可信时间戳的区块数据构建时间戳交易请求;

请求发送单元,用于向所述区块链中的节点发送所述时间戳交易请求,以使得所述节点根据所述时间戳交易请求将所述具有可信时间戳的区块数据添加至所述区块链中。

进一步地,所述请求构建单元,包括:

模板获取单元,用于获取预设交易模板,所述预设交易模板中包括交易内容字段;

填充单元,用于根据所述具有可信时间戳的区块数据对所述交易内容字段进行数据填充;

时间戳交易构建单元,用于根据填充后的预设交易模板构建一笔时间戳交易;

请求生成单元,用于根据所述时间戳交易生成时间戳交易请求。

进一步地,所述可信时间戳添加装置,还包括:

时间获取单元,用于获取区块链中上一次记录的最新区块的第一生成时间、以及当前最新区块的第二生成时间;

时间记录单元,用于若所述第二生成时间与所述第一生成时间之差达到预设时间间隔,则记录所述第二生成时间,并触发区块数据获取单元,以用于获取区块链上当前最新区块的区块数据。

进一步地,所述时间戳交易请求包括时间戳交易,所述时间戳交易是根据所述具有可信时间戳的区块数据构建的,所述可信时间戳添加装置,还包括:

目标区块获取单元,用于获取在预设时间间隔内所生成的区块,作为目标区块;

区块检测单元,用于检测所述目标区块中是否包括除所述时间戳交易之外的交易;若所述目标区块中包括除所述时间戳交易之外的交易,则触发区块数据获取单元,以用于获取区块链上当前最新区块的区块数据。

进一步地,所述可信时间戳添加装置,还包括:

高度获取单元,用于获取区块链中上一次记录的区块高度、以及当前区块高度;

高度记录单元,用于当所述当前区块高度与所述上一次记录的区块高度之差达到预设高度差,则记录所述当前区块高度,并触发区块数据获取单元,以用于获取区块链上当前最新区块的区块数据。

本申请实施例还提供了一种可信时间戳添加装置,应用于第一节点,所述第一节点为区块链中的任意节点,包括:

请求接收单元,用于接收时间戳交易请求,所述时间戳交易请求携带具有可信时间戳的区块数据;

区块生成单元,用于当所述第一节点为可生成区块的目标节点时,生成区块,所述区块中包括具有可信时间戳的区块数据;

广播单元,用于向区块链中的第二节点广播所述区块的验证请求,其中,所述第二节点为区块链中除第一节点以外的节点;

验证结果接收单元,用于接收所述第二节点基于所述验证请求返回的验证结果;

区块添加单元,用于基于所述第二节点返回的验证结果,将所述区块添加至所述区块链中。

进一步地,所述可信时间戳添加装置,还包括:

指令生成单元,用于当所述第一节点不为可生成区块的目标节点时,根据所述时间戳交易请求生成发送指令;

指令发送单元,用于将所述发送指令发送至目标节点,所述发送指令用于指示:所述目标节点生成区块,并基于共识机制将所述区块添加至所述区块链中。

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一种可信时间戳添加方法。

本申请实施例通过获取区块链上当前最新区块的区块数据;获取可信时间,并根据可信时间为区块数据添加可信时间戳,得到具有可信时间戳的区块数据,根据具有可信时间戳的区块数据构建时间戳交易请求,并将时间戳交易请求发送至区块链中的节点以使得所述节点根据时间戳交易请求将所述具有可信时间戳的区块数据添加至区块链中。如此,异步地为区块链的当前最新区块添加可信时间戳,并将可信时间戳加入至区块链中,来为区块链赋予可信时间,并不需要区块链本身获取可信时间戳,即本申请中的方案对区块链无侵入,无需对区块链的共识节点进行改造。本申请实施例通过异步地为区块链的当前最新区块添加可信时间戳,提高了区块链的性能,方便对区块链进行管理,无需区块链中的共识节点在生成区块时去获取可信时间戳,提高了区块链的灵活性;另外,本申请实施例中的添加可信时间戳的方案可以为任何一条区块链赋予可信时间,适用性广。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本申请实施例提供的为区块链添加可信时间戳的系统示意图;

图1b是本申请实施例提供的可信时间戳添加方法流程示意图;

图1c是本申请实施例提供的区块结构示意图;

图2a是本申请实施例提供的可信时间戳添加方法流程示意图;

图2b是本申请实施例提供的添加可信时间戳的示意图;

图3是本申请实施例提供的可信时间戳添加方法另一流程示意图;

图4是本申请实施例提供的可信时间戳添加装置的示意性框图;

图5是本申请实施例提供的可信时间戳添加装置的另一示意性框图;

图6是本申请实施例提供的可信时间戳添加装置的另一示意性框图;

图7是本申请实施例提供的计算机设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在对本发明实施例进行详细地解释说明之前,先对本发明实施例涉及到的一些名词进行解释说明。

区块链:区块链技术脱胎于比特币技术,是比特币的底层技术,其是去中心化的分布式账本数据库。区块链本身是一串使用密码学算法相关联产生的数据块(即区块),每一个数据块中包含了多次区块链网络交易有效确认的信息。正是基于此,所以无法通过篡改区块上的数据来进行作弊,能够确保任何区块上的数据均是公开透明的,确保了数据的安全性。

区块链可以分为公有链、私有链、联盟链。其中,联盟链则介于公有链和私有链之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,典型如金融组织。总结来说,区块链是由节点参与的分布式数据库系统,或者,也可称之为一个基于p2p(点对点)网络的分布式公共账本,由于对区块链加入了可信时间戳,因此,区块链的特点是不可更改、不可伪造。

区块链的节点:参与构建区块链的设备。一个节点可以是参与构建区块链的单台计算机设备,也可以是计算机设备集群如服务器集群等。该节点存储有相关区块数据,比如,该区块数据可以包括交易等数据。其中,所述节点中包括共识节点,共识节点指的是可以生成区块的节点(具有生成区块的能力)、可以基于共识机制对在一定的时间内发生的事务进行共识的节点,如对新生成的区块进行共识,以达成共识。同时需要说明的是,区块链网络中同一时刻只有一个共识节点可以生成区块。

区块链的多个节点,以及多个节点之间相互连接的关系,构成区块链网络。因此,区块链网络中的节点和区块链的节点意义相同。

本申请实施例提供一种可信时间戳添加方法、装置、计算机设备和存储介质。

本申请实施例提供了一种可信时间戳添加系统,包括本申请实施例任一提供的可信时间戳添加装置。该可信时间戳添加装置可以集成在服务器等网络设备中。如该可信时间戳添加系统中包括服务器和区块链网络。其中,服务器和区块链网络之间通过网络连接。网络中包括路由器、网关等网络实体。在每个区块链网络中,包括有区块链的多个节点(也可称为网络节点或者节点设备),每个节点之间对等连接,每个节点中保存有区块链的全量数据。

在服务器中配置该区块链网络中的某个节点,获取所配置的该节点,服务器通过区块链网络提供的接口与所获取的该节建立连接。如此,以使得服务器与区块链网络建立连接。

其中,该可信时间戳添加系统的服务器实现:获取区块链上当前最新区块的区块数据;获取可信时间,并根据可信时间为区块数据添加可信时间戳,得到具有可信时间戳的区块数据;根据具有可信时间戳的区块数据构建时间戳交易请求;向区块链中的节点发送时间戳交易请求,以使得节点根据时间戳交易请求将具有可信时间戳的区块数据添加至区块链中。其中,该节点是区块链中的任意一个节点。

该区块链网络中的任意一个节点实现:接收时间戳交易请求,该时间戳交易请求携带具有可信时间戳的区块数据;当该节点为可生成区块的目标节点(目标共识节点)时,生成区块,并基于共识机制将区块添加至区块链中;当该节点不为可生成区块的目标节点时,根据时间戳交易请求生成发送指令;将发送指令发送至目标节点,该发送指令用于指示:所述目标节点生成区块,并基于共识机制将所述区块添加至区块链中。

具有可信时间戳的区块数据,可以包括可信时间戳和区块数据,也可以仅包括可信时间戳。

需要注意的是,该可信时间戳添加系统的服务器可以是一个服务器,也可以是多个服务器,如服务器集群。

例如,参考图1a,可信时间戳添加系统,包括中间服务器、时间戳服务器和区块链网络。即该可信时间戳添加系统中的服务器包括两个:中间服务器和时间戳服务器。中间服务器和时间戳服务器相互连接,如通过接口连接。其中,区块链网络中包括多个共识节点,多个共识节点之间是对等的,比如包括n个共识节点。每个共识节点中保存该区块链的全量数据。在一实施例中,该可信时间戳添加系统还包括国家授时中心。

在中间服务器中配置该区块链网络中的某个共识节点,获取所配置的该共识节点,中间服务器通过区块链网络提供的接口与所获取的该共识节点建立连接。

需要注意的是,中间服务器中所配置的该共识节点可以是区块链网络中的任意一个共识节点,也可以是某个指定的共识节点,比如根据预设规则指定的某个共识节点,例如,指定离中间服务器网络距离最近的一个共识节点,在中间服务器中配置该网络距离最近的该共识节点。

中间服务器与区块链网络建立连接后,中间服务器获取区块链的当前最新区块的区块数据;将该区块数据发送至时间戳服务器。时间戳服务器接收到该区块数据后,为该区块数据添加可信时间戳。具体地,时间戳服务器到国家授时中心去获取可信时间,并将所获取的可信时间和区块数据等一起进行签名,以得到具有可信时间戳的区块数据,并将该具有可信时间戳的区块数据返回至中间服务器。中间服务器接收时间戳服务器返回的具有可信时间戳的区块数据,并根据该具有可信时间戳的区块数据构建时间戳交易请求,并将时间戳交易请求发送至区块链网络中的一个共识节点,该共识节点是预先配置的共识节点,该共识节点可以是区块链网络中的任何一个共识节点。

区块链网络的该共识节点实现的内容与上文中区块链网络中的节点一致,在此不再赘述。

图1b是本申请实施例提供的可信时间戳添加方法流程示意图,该方法应用于服务器中,该可信时间戳添加方法的具体流程可以如下:

101,获取区块链上当前最新区块的区块数据。

其中,区块链中的每个区块包括区块头和区块体,如图1c所示。区块体中包括至少一个交易,一般情况下,区块体中包括多个交易,交易中包括有存证数据等。如图1c所述,包括8个交易。区块头中包括上一个区块的哈希值、版本、时间戳(用于保存该区块生成时本地的时间)、难度、随机数、merkel跟、区块高度等信息。需要说明的是,图1c中也只是例举出了其中一部分信息而已,区块头中还包括有其他的信息,如区块头中还包括交易数量等。需要注意的是,获取区块链上当前最新区块的区块数据,该区块数据可以是当前最新区块的区块头和区块体的数据,也可以是当前最新区块的区块头的数据,还可以是当前最新区块的区块哈希值等,还可以该处例举的数据的其他组合。需要注意的是,当前最新区块的区块数据可以唯一表示一个区块。其中,区块哈希值指的是对区块头中的信息进行哈希运算后所得到的哈希值,该哈希值可唯一表示一个区块。当前最新区块指的是区块链上最近生成的一个区块。一个区块生成后,就可计算出该区块的哈希值。

具体地,例如,服务器向区块链的某个节点发送获取请求,该获取请求用于请求获取区块链当前最新区块的区块数据,如区块哈希值;区块链的该节点接收到获取请求后,将计算出的当前最新区块的区块数据返回给服务器。或者,也可以设置一些条件来触发服务器发送获取请求,比如,设置到达某个时间段后,触发服务器发送获取请求。

在一实施例中,若服务器包括多个服务器,如中间服务器和时间戳服务器,其中,中间服务器和时间戳服务器通过相互连接。步骤101,包括:从中间服务器获取区块链上当前最新区块的区块数据。可以理解地,中间服务器获取区块链上当前最新区块的区块数据,时间戳服务器从中间服务器获取区块链上当前最新区块的区块数据。

102,获取可信时间,并根据所述可信时间为所述区块数据添加可信时间戳,得到具有可信时间戳的区块数据。

服务器获取当前最新区块的区块数据后,向国家授时中心获取可信时间,服务器接收到国家授时中心返回的可信时间后,根据可信时间为区块数据添加可信时间戳。服务器将所获取的区块数据、可信时间等,用服务器中保存的私钥进行签名,最后得到具有可信时间戳的区块数据。可以理解地,服务器具有时间戳服务器的功能。而时间戳服务器符合“rfc3161标准”,经过公安部、国密局检验检测,安全可靠;时间戳服务器的私钥存在于时间戳服务器密码卡中无法导出,无法被任何人获取;因此时间戳服务器可以提供可信的时间证明。

由于获取的是当前最新区块的区块数据,该区块数据可以唯一的表示当前区块,因此,为该区块数据添加可信时间戳后,即为所获取的区块链的当前最新区块以及所获取的区块链的当前最新区块之前的区块添加可信时间戳,以证明,所获取的区块链中的当前最新区块以及所获取的区块链的当前最新区块之前的区块中的所有交易,在该可信时间戳所对应的可信时间之前已经存在。

103,根据所述具有可信时间戳的区块数据构建时间戳交易请求。

根据具有可信时间戳的区块数据生成一个时间戳交易请求,该时间戳交易请求中包括具有可信时间戳的区块数据。

在一实施例中,步骤103,包括:根据所述具有可信时间戳的区块数据构建时间戳交易,根据时间戳交易生成时间戳交易请求。其中,时间戳交易,指的是交易中包括具有可信时间戳的区块数据。本质上,时间戳交易也是一个交易,只是该交易中包括具有可信时间戳的区块数据。

具体地,根据所述具有可信时间戳的区块数据构建时间戳交易的步骤,包括:

(1)获取预设交易模板,该预设交易模板中包括交易内容。

其中,预设交易模板可以是由运维人员预先进行设置的交易模板,也可以是其他设备预先建立之后提供给服务器的交易模板,或者,还可以由服务器自行生成的交易模板,等等。该预设交易模板可以在构建交易时,由服务器临时生成或者临时获取;也可以是预先设置或者预先生成或者预先获取,保存在服务器中,在构建交易时,获取该保存的预设交易模板。

预设交易模板也可以理解为预设交易格式或者预设交易的数据结构等,预设交易模板中的字段也可以理解为参数,每个参数包括参数名称、参数类型、参数值等信息。需要提醒的是,预设交易模板中的某些字段还可以包括下一级字段。比如,某些字段在定义数据结构时,就定义为该字段包括多个下一级的字段,下一级字段中还包括有下下一级的字段等。如某些字段以数组的方式存储,数组中的多个数据对应该字段的下一级字段。

预设交易模板中的字段包括交易版本号、附加数据(类型为json)、输入数组、输出数组、锁定时间(默认值为0)、base58|hex返回格式等字段。其中,比如,base58|hex返回格式字段,类型为string,默认为该base58|hex返回格式字段不填,若不填的情况下,则该base58|hex返回格式字段值=base58,此字段不参与签名。

其中,每个交易的输入数组字段中包括一个或者多个输入,比如,对于时间戳交易,输入数组字段中有一个输入。每个输入中包括输入序号、引用来源output信息、解锁脚本等字段。比如,输入序号字段,类型为uint32,值为从0开始的某一个正整数,如0,该输入序号只保证唯一性,无需保证连续性。比如,应用来源output信息字段,类型为json,该应用来源output信息指的是引用交易的信息,即上一个交易的输出信息。该字段中还包括下一级的两个字段:hash和index,其中,hash指的是引用交易的hash值,index指的是引用交易的索引。需要注意的是,时间戳交易因为没有引用交易,所以hash和index为固定值,以作特殊处理;而非时间戳交易,即时间戳交易之外的交易,比如存证交易等需引用实际信息。比如,解锁脚本字段,类型可以为string或者base58,该字段的值为利用base58函数计算后得到的值,如base58(脚本类型+脚本版本+签名)计算后得到的值。

其中,每个交易的输出数组字段中包括一个或者多个输出,比如,对于时间戳交易,输出数组字段中有一个输出。每个输出中包括输出序号、到账地址、资产id、金额数量、交易内容、锁定脚本等字段。比如,输出序号字段,类型为uint32,值为从0开始的某一个正整数,如0,该输出序号字段只需保证唯一性,无需保证连续性。比如,到账地址字段,类型为string或者base58,值为1kzbwdacf66fyz1qgb2r6yzp3cfurgfddr。比如,金额数量字段,类型为uint64,值为100。比如,交易内容字段,类型为string或者base58,对于时间戳交易来说,交易内容字段的值为序列化后的具有可信时间戳的区块数据和数据类型等信息。

(2)根据具有可信时间戳的区块数据对预设交易模板中的交易内容字段进行数据填充。

交易内容字段即为输出数组中的一个输出中包括的一个字段信息。在交易内容字段中可以填充任意的数据,其中,填充可以理解为为字段赋值。在时间戳交易中,交易内容字段填充的数据包括:填充数据的类型以及填充数据的具体内容等。比如填充数据的类型为可信时间戳,填充数据的具体内容即为具有可信时间戳的区块数据。将填充数据的类型和填充数据的具体内容进行序列化,以得到序列化的值。如若序列化后的可信时间戳的数据类型的值用5表示,可信时间戳的数据类型的值也可以用其他的数字或者字母或者符号来表示,具有可信时间戳的区块数据的值为djrefasdgjs483k。那么交易内容字段进行数据填充并序列化后,为:5djrefasdgjs483k。需要提醒的是,该处的时间戳的数据类型的值以及具有可信时间戳的区块数据的值并不是真实的值,只是为了进行示例说明而已,并不构成对具有可信时间戳的区块数据的值以及可信时间戳的数据类型的值的限制。

(3)根据填充后的预设交易模板构建一笔时间戳交易。

填充后的预设交易模板中,已经为交易内容的字段赋值。

需要注意的是,引用源output信息,指的是引用交易的信息,即上一个交易的输出信息。由于时间戳交易不存在上一个交易,即时间戳交易并没有引用上一个交易的输出信息,因此,时间戳交易并没有实际引用源output信息,如此将引用源output信息中的hash和index都设置为固定值。其中,hash="000000000000.....000"(64个零),index="-1"。另外,时间戳交易的输出数组中的到帐地址、金额数量等字段的值也都设置为固定值。

根据填充后的预设交易模板构建一笔交易,包括以下三种情况:

一,在获取的预设交易模板中,除了交易内容的字段,其他一些字段,比如引用源output信息中的hash和index值、输出数组中的到帐地址、金额数量等字段,都已经进行了设置(即数据填充),比如设置为固定值或者临时计算出的值。可以理解地,在获取的预设交易模板中除了交易内容字段之外,其他的字段已经都有了对应的值。那么再对交易内容进行数据填充后,填充后的预设交易模板中的所有字段都已经有了对应的值,如此,所有字段都进行数据填充后的预设交易模板即构成一笔交易。将构建出的交易,作为时间戳交易。

二,在获取的预设交易模板中,所有字段都未进行数据填充,可以理解为,所有字段的值都为空。在对交易内容字段进行数据填充后,此时填充后的预设交易模板中只有交易内容字段进行了数据填充。如此,步骤“根据填充后的预设交易模板构建一笔时间戳交易”,还包括:对除了交易内容字段之外的其他字段进行数据填充,将所有字段都进行数据填充后的预设交易模板作为一笔交易。将构建出的交易,作为时间戳交易。

三,在获取的预设交易模板中,有一部分字段进行了数据填充,可以理解为,有一部分字段的值为空,有一部分字段的值不为空。在对交易内容字段进行数据填充后,还存在有一部分的字段的值未进行数据填充。则步骤“根据填充后的预设交易模板构建一笔交易”,还包括:对未进行数据填充的字段进行数据填充,将所有字段都进行数据填充后的预设交易模板作为一笔交易。将构建出的交易,作为时间戳交易。

可以理解地,步骤103,包括:获取预设交易模板,该预设交易模板中包括交易内容;根据具有可信时间戳的区块数据对预设交易模板中的交易内容字段进行数据填充;根据填充后的预设交易模板构建一笔时间戳交易;根据时间戳交易生成时间戳交易请求。

如此,时间戳交易请求中包括时间戳交易,该时间戳交易中包括具有可信时间戳的区块数据。

该实施例进一步限定了如何根据具有可信时间戳的区块数据构建时间戳交易请求。首先,获取预设交易模板,该预设交易模板中包括一个特殊字段:交易内容字段。该交易内容字段中可以填充任意内容,因此,根据具有可信时间戳的区块数据填充预设交易模板中的交易内容字段。再根据填充了交易内容字段的预设交易模板构建时间戳交易,最后,根据时间戳交易生成时间戳交易请求。由于将具有可信时间戳的区块数据填充到预设交易模板的交易内容字段中,因此,构建的时间戳交易对于区块链的节点来说,并没有特别之处,只当做是一个普通交易,区块链的节点将该时间戳交易当做普通交易进行处理。

在一实施例中,若服务器包括多个服务器,如中间服务器和时间戳服务器,步骤103,包括:通过中间服务器根据所述具有可信时间戳的区块数据构建时间戳交易请求。可以理解地,将具有可信时间戳的区块数据发送至中间服务器,以使得中间服务器构建时间戳交易请求。具体地,以上步骤(1)、(2)、(3)以及根据时间戳交易生成时间戳交易请求的步骤是在中间服务器上完成的。

104,向所述区块链中的节点发送所述时间戳交易请求,以使得所述节点根据所述时间戳交易请求将所述具有可信时间戳的区块数据添加至所述区块链中。

服务器可以将时间戳交易请求发送至区块链中的任何一个共识节点,也可以发送到指定的共识节点。其中,需要预先在服务器中配置时间戳交易请求发送的共识节点。其中,区块链中的共识节点接收到时间戳交易请求后,将时间戳交易请求中携带的具有可信时间戳的区块数据添加至区块链中。

本申请实施例中通过获取区块链上当前最新区块的区块数据;获取可信时间,并根据所述可信时间为所述区块数据添加可信时间戳,得到具有可信时间戳的区块数据;根据所述具有可信时间戳的区块数据构建时间戳交易请求;向所述区块链中的节点发送所述时间戳交易请求,以使得所述节点根据所述时间戳交易请求将所述具有可信时间戳的区块数据添加至所述区块链中。如此,通过服务器异步地为区块链当前最新区块的区块数据添加可信时间戳,为区块链赋予可信时间,并不需要区块链本身获取可信时间戳,即本申请实施例中的方案对区块链无侵入,无需对区块链本身进行改造,即可为区块链赋予可信时间。本申请实施例通过异步地为区块链当前最新区块的区块数据添加可信时间戳,提高了区块链的性能,使得区块链本身无需关注可信时间戳的问题,无需区块链中的节点在生成区块时去获取可信时间戳,方便对区块链进行管理,提高了区块链的性能和灵活性。另一方面,将具有可信时间戳的区块数据加入到区块链中后,方便接入到区块链中的节点获取具有可信时间戳的区块数据,方便进行可信时间戳的共享。而且,本申请实施例中的可信时间戳添加的方案可以为任何一条区块链添加可信时间戳,即为任何一条区块链赋予可信时间,适用性广。

图2a是本申请实施例提供的可信时间戳添加方法的另一流程示意图,应用于服务器端,该可信时间戳添加方法的具体流程包括:

201,获取区块链中上一次记录的最新区块的第一生成时间。

上一次记录的最新区块的第一生成时间,可以理解为,上一次为区块链添加可信时间戳时所获取的最新区块,该最新区块生成时间。在该最新区块生成时,记录该最新区块的生成时间。获取上一次记录的最新区块的生成时间,作为第一生成时间。

需要注意的是,若第一次为区块链添加可信时间戳,则不存在上一次记录的最新区块的第一生成时间,那么执行步骤202,获取当前最新区块的生成时间,并记录当前最新区块的生成时间,作为第一生成时间,并执行“获取区块链上当前最新区块的区块数据”的步骤,以直接为区块链添加可信时间戳。

202,获取当前最新区块的第二生成时间。即获取当前最新区块的生成时间,作为第二生成时间。其中,第一生成时间和第二生成时间都是获取的服务器的时间。

203,判断所述第二生成时间与所述第一生成时间之差是否达到预设时间间隔。

其中,预设时间间隔是预先设定的,比如以秒级为粒度,如5秒等,也可以设置为其他的粒度。判断第二生成时间与第一生成时间之差是否达到预设时间间隔。若达到预设时间间隔,则执行步骤204;若未达到预设时间间隔,执行“获取当前最新区块的第二生成时间”的步骤。

204,记录所述第二生成时间。

205,获取区块链上最新区块的区块数据。

206,获取可信时间,并根据所述可信时间为所述区块数据添加可信时间戳,得到具有可信时间戳的区块数据。

207,根据所述具有可信时间戳的区块数据构建时间戳交易请求。

208,向所述区块链中的节点发送所述时间戳交易请求,以使得所述节点根据所述时间戳交易请求将所述具有可信时间戳的区块数据添加至所述区块链中。

该实施例中的步骤205-208请参看上述实施例中步骤101-104的描述,在此不再赘述。

该实施例进一步限定了根据预设时间间隔来为区块链当前最新区块的区块数据添加可信时间戳,即每隔预设时间间隔,为区块链当前最新区块的区块数据添加一次可信时间戳,并根据具有可信时间戳的区块数据构建时间戳交易请求,根据该时间戳交易请求将具有可信时间戳的区块数据加入到区块链中。如此,不必实时为区块链当前最新区块的区块数据添加可信时间戳,减少了与服务器的交互,节约添加可信时间戳的成本,同时也减少了存储具有可信时间戳的区块数据的存储开销和存储成本。

在一实施例中,若根据所述具有可信时间戳的区块数据构建时间戳交易请求,包括:根据所述具有可信时间戳的区块数据构建时间戳交易,根据所述时间戳交易生成时间戳交易请求,或者也可以理解为,时间戳交易请求中携带时间戳交易,而该时间戳交易是根据所述具有可信时间戳的区块数据构建的,则在记录所述第二生成时间之后,获取区块链上当前最新区块的区块数据之前,所述方法还包括:

a,获取在预设时间间隔内所生成的区块,作为目标区块。

在区块链中,若未加入到区块链的交易数量达到预设数量,或者未加入到区块链的交易存在的时间达到预定时间,则会触发生成新区块。因此,在预设时间间隔内,有可能生成了多个区块,也有可能只生成了一个区块。

区块链中的每个区块生成时,都会在区块头中写入区块生成的时间,如图1c中,区块头中的“时间戳”,保存的即是生成区块时的时间。可以根据生成区块时的时间,来获取区块链在预设时间间隔内所生成的区块,作为目标区块。也可以根据区块的高度来获取区块链在预设时间间隔内所生成的区块,如获取上一次获取时间时区块链的高度,达到预设时间间隔时区块链的高度,以来获取区块链在预设时间间隔内所生成的区块。

b,检测目标区块中是否包括除时间戳交易之外的交易。

其中,除时间戳交易之外的交易,包括存储有存证数据的交易。存储有存证数据的交易,也可以称为存证交易。如此,可以理解为,本申请实施例中的交易至少包括时间戳交易和存证交易。

检测目标区块的数量,若目标区块有多个,则确定目标区块中包括除时间戳交易之外的交易,即确定目标区块中包括存证交易。可以理解地,在预设时间间隔内只会生成一个时间戳交易,若该时间戳交易存在的时间达到预设时间,而在预设时间间隔内没有生成任何存证交易,在这种情况下,生成的区块中只包括该时间戳交易,不包括存证交易。则在该预设时间间隔内仅生成了一个目标区块,该目标区块中仅包括该时间戳交易。若目标区块有多个,假设其中一个目标区块仅包括时间戳交易,那么其他区块一定包括存证交易,也即目标区块中一定包括除时间戳交易之外的交易。

若目标区块有一个,则包括以下两种情况:1、该一个目标区块中包括时间戳交易,也包括存证交易。2、该一个目标区块中仅包括时间戳交易。若目标区块有一个,可获取目标区块的交易数量,通过该交易数量判断该目标区块是否包括除时间戳交易之外的交易。如若一个目标区块仅包括时间戳交易,那么该目标区块的交易数量是固定的,将该固定的交易数量值作为预设数量。获取目标区块的交易数量后,判断该目标区块的交易数量值是否为预设数量,若为预设数量,则确定目标区块中不包括除时间戳交易之外的交易,即确定目标区块中仅包括时间戳交易;若该目标区块的交易数量不为预设数量,则确定目标区块中包括除时间戳交易之外的交易,即目标区块中包括存证交易。需要注意的是,还可以通过其他方式来确定目标区块中是否包括除时间戳交易之外的交易。

若目标区块中包括除时间戳交易之外的交易,执行“获取区块链中当前最新区块的区块数据”的步骤。若目标区块中包括除时间戳交易之外的交易,即目标区块中包括存证交易,那么再次为区块链添加可信时间戳,即为目标区块中的存证交易添加可信时间,这是有必要的。若目标区块中不包括除时间戳交易之外的交易,执行“获取区块链中上一次记录的最新区块的第一生成时间”的步骤。

若目标区块中不包括除时间戳交易之外的交易,执行获取区块链中上一次记录的最新区块的第一生成时间的步骤。可以理解地,若目标区块中不包括除时间戳交易之外的交易,则不执行获取区块链上当前最新区块的区块数据步骤,暂停为区块链添加可信时间戳。以避免预设时间间隔内仅生成一个区块,而该区块中仅包括时间戳交易的情况,即避免为仅包括时间戳交易的区块再添加可信时间,或者也可以理解为,避免所生成的连续多个区块仅包括时间戳交易的情况。

如图2b所示,为本申请实施例提供的可信时间戳添加的示意图。本申请实施例中,交易包括两种:时间戳交易和存证交易。在图2b中,服务器包括多个:中间服务器和时间戳服务器,中间服务器获取区块链当前最新区块的区块数据,如区块哈希值,中间服务器将所获取的区块数据发送至时间戳服务器,时间戳服务器获取国家授时中心的可信时间,并将区块数据、可信时间一起进行签名,以生成具有可信时间戳的区块数据。中间服务器接收时间戳服务器返回的具有可信时间戳的区块数据,并构建一笔包括该可信时间戳的交易,作为时间戳交易,根据时间戳交易生成时间戳交易请求,将该时间戳交易请求发送至区块链网络中的节点中。区块链网络的节点将时间戳交易请求中包括的时间戳交易加入到区块链中。其中,区块链中第一生成时间和第二生成时间达到预设时间间隔后,接着为区块链的当前最新区块的区块数据添加可信时间戳。在预设时间间隔内,目标区块包括多个,比如图2b中的六个(图2b中的第二个到第七个)。在预设时间间隔内,生成了包括时间戳交易的区块,如背景为白色的区块,在该区块中,除了包括时间戳交易(背景为白色的交易)外,还包括存证交易(背景为深灰色的交易),即在图2b中,时间戳交易和其他存证交易一起生成一个区块,加入到区块链中。需要说明的是,在一些实施例中,时间戳交易可以独立生成一个区块,并加入到区块链中。

该实施例进一步限定了,若在预设时间间隔内所生成的目标区块中,包括除时间戳交易之外的交易,则获取区块链中最新区块的区块数据,为区块链的最新区块添加可信时间戳;若在预设时间间隔内所生成的目标区块中,不包括除时间戳交易之外的交易,则暂停为区块链的最新区块添加可信时间戳。该实施例进一步排除了为仅包括时间戳交易的区块添加可信时间,减少了与服务器的交互,节约添加可信时间戳的成本,同时也减少了存储时间戳交易和具有可信时间戳的区块数据的存储开销和存储成本。

本申请实施例还提供了一种可信时间戳添加方法,应用于服务器端,该实施例与图1b中的实施例的区别在于:在获取区块链上当前最新区块的区块数据之前,增加了步骤:获取计时时间,并检测计时时间是否达到预设时间间隔,若达到预设时间间隔,则执行获取区块链上当前最新区块的区块数据的步骤以及之后的步骤;若未达到预设时间间隔,则继续执行检测计时时间是否达到预设时间间隔的步骤。其中,获取区块链上当前最新区块的区块数据的步骤以及之后的步骤,与图1b中的实施例一致,具体请参看图1b中的实施例对应的描述。

其中,检测计时时间是否达到预设时间间隔,可通过多种方式实现。比如,设置一个计时器,获取计时时间即为获取计时器的时间,该计时器从零开始计时,当达到预设时间间隔时,则确定计时时间达到预设时间间隔,将该计时器重新置为零。比如,获取本机上的第一时间,从第一时间开始计时,若检测到从第一时间开始经过了预设时间间隔,则确定检测到计时时间达到预设时间间隔。可以理解地,若设置预设时间间隔为一分钟,则理解为每隔一分钟执行“获取区块链上当前最新区块的区块数据”的步骤。

该实施例中,在获取区块链上当前最新区块的区块数据之前,还可以执行上述描述的a和b步骤。在此不再赘述。

该实施例根据计时时间来确定是否达到预设时间间隔,若达到预设时间间隔,则执行“获取区块链上当前最新区块的区块数据”的步骤。即该实施例进一步限定了根据计时时间来确定是否达到预设时间间隔,根据预设时间间隔来为区块链当前最新区块的区块数据添加可信时间戳,并根据具有可信时间戳的区块数据构建时间戳交易请求,根据该时间戳交易请求将具有可信时间戳的区块数据加入到区块链中。如此,不必实时为区块链当前最新区块的区块数据添加可信时间戳,减少了与服务器的交互,节约添加可信时间戳的成本,减少了存储具有可信时间戳的区块数据的存储开销和存储成本。

本申请实施例还提供了一种可信时间戳添加方法,应用于服务器端,该实施例与图1b中的实施例的区别在于:在获取区块链上当前最新区块的区块数据之前,增加了步骤a-d。下面将详细描述该实施例与图1b中的实施例的区别之处。另外,获取区块链上当前最新区块的区块数据的步骤以及之后的步骤,与图1b中的实施例一致,具体请参看图1b中的实施例对应的描述。

a,获取区块链中上一次记录的区块高度。

可以理解地,在上一次为区块链的最新区块的区块数据添加可信时间戳时,获取区块链的区块高度,并记录下来。

b,获取当前区块高度。

c,判断当前区块高度与上一次记录的区块高度之差是否达到预设高度差。

其中,预设高度差预先进行设定,预设高度差是大于1的正整数,如预设高度差为2、5等。预设高度差为大于1的正整数,说明在获取区块链的当前区块高度的时间,与获取上一次区块高度时的时间间隔内,已经生成了大于1的区块数量,那么生成的区块中,一定包括除时间戳交易之外的交易。若当前区块高度与上一次区块高度之差达到预设高度差,执行步骤d;若当前区块高度与上一次区块高度之差未达到预设高度差,执行步骤b,以获取当前区块高度。

d,记录当前区块高度。并执行获取区块链上当前最新区块的区块数据的步骤以及之后的步骤。

该实施例进一步限定了根据预设高度差来为区块链的最新区块的区块数据添加可信时间戳,即每隔预设高度差(每隔预设区块数),为区块链的最新区块的区块数据添加一次可信时间戳,以得到具有可信时间戳的区块数据,并构建时间戳交易请求,根据时间戳交易请求将具有可信时间戳的区块数据添加至到区块链中。如此,不必实时为区块链的最新区块的区块数据添加可信时间戳,减少了与服务器的交互,节约添加可信时间戳的成本,同时也减少了存储具有可信时间戳的区块数据的存储开销和存储成本。

图3是本申请实施例提供的可信时间戳添加方法的另一流程示意图,该方法应用于第一节点中,该第一节点为区块链中的任意节点。需要注意的是,本申请实施例中的节点指的是共识节点。该方法的具体流程包括:

301,接收时间戳交易请求,所述时间戳交易请求携带具有可信时间戳的区块数据。

区块链网络中的第一共识节点接收服务器发送时间戳交易请求,该时间戳交易请求中携带时间戳交易。需要注意的是,该第一共识节点即为服务器中配置的共识节点。

302,检测所述第一节点是否为目标节点。

其中,目标节点指的是目标共识节点,目标共识节点是当前能生成区块的节点。区块链网络中的第一共识节点接收服务器发送的时间戳交易请求后,获取保存在该第一共识节点中的目标共识节点信息,目标共识节点信息包括目标共识节点的ip等信息。获取该第一共识节点的ip;判断该第一共识节点的ip是否与目标共识节点的ip相同;若相同,则确定该第一共识节点为目标共识节点;若不相同,则确定所述第一共识节点不为目标共识节点。

需要说明的是,本区块链网络中会预先选择出目标共识节点,并将目标共识节点的信息保存在其他的共识节点中。一旦选择出目标共识节点,若检测到该目标共识节点生成的区块未通过本区块链网络中的其他共识节点验证后,需要更换目标共识节点。具体的,根据算法从其他的共识节点中选择出一个共识节点,将该共识节点作为目标共识节点,并将该目标共识节点的信息发送至其他的共识节点,以让其他的共识节点中都保存目标共识节点的信息。

若该第一共识节点为目标共识节点,执行步骤303;若该第一共识节点不为目标共识节点,执行步骤307。

303,生成区块,所述区块中包括具有可信时间戳的区块数据。

若确定该第一共识节点为目标共识节点,若检测到目标共识节点满足生成区块的条件(如是否达到生成区块的时间),生成包括具有可信时间戳的区块数据的区块。

304,向区块链中的第二节点广播所述区块的验证请求,其中,所述第二节点为区块链中除第一节点以外的节点。

其中,第二节点指的是第二共识节点,向区块链中的第二共识节点广播所述区块的验证请求,如此,第二共识节点都接收到了区块的消息。第二共识节点接收到区块的消息后,对该区块进行验证。

305,接收所述第二节点基于所述验证请求返回的验证结果。

第二共识节点把验证结果会进行广播,如此,第二共识节点都会接收到广播的验证结果。其中,验证结果包括验证通过结果和验证未通过结果。

306,基于所述第二节点返回的验证结果,将所述区块添加至所述区块链中。

其中,基于所述第二节点返回的验证结果,将所述区块添加至所述区块链中,包括:若第二共识节点返回的验证结果中有达到第一预设数量的验证通过结果,将所述区块添加至所述区块链中。其中,第一预设数量与区块链网络中的总共识节点数相关,(第一预设数量+1)/总共识节点数=预设比值。其中,预设比值为大于1/2的值,比如预设比值=2/3。第一预设数量+1,指的是第一预设数量的第二共识节点和目标共识节点。若接收到达到第一预设数量的第二共识节点发送的验证通过结果,即意味着新生成的该区块完成共识,将该区块加入到区块链中。

307,根据所述时间戳交易请求生成发送指令。

即若第一共识节点不为目标共识节点,根据时间戳交易请求生成发送指令。

308,将所述发送指令发送至目标节点,所述发送指令用于指示:所述目标节点生成区块,并基于共识机制将所述区块添加至所述区块链中。

目标共识节点接收到发送指令(包括时间戳交易请求)后,检测是否满足生成区块的条件(如是否达到生成区块的时间),若满足生成区块的条件,生成区块,并向区块链中的第一共识节点和第二共识节点广播该区块的验证请求,其中,该处的第二共识节点为区块链中除第一共识节点和目标共识节点以外的节点;第一共识节点基于验证请求会得到一个验证结果,同时接收第二共识节点和目标共识节点基于验证请求返回的验证结果;若检测到达到第二预设数量的验证通过结果,将该区块加入至所述区块链中。其中,第二预设数量与区块链网络中的总共识节点数相关,(第二预设数量)/总共识节点数=预设比值。若检测到达到第二预设数量的验证通过结果,即意味着新生成的该区块完成共识,将新生成的该区块加入到区块链中。

该实施例中预先选择出区块链网络中的目标共识节点,选择出目标共识节点后,该目标共识节点一般不再变动(在该目标共识节点生成的区块未通过验证才会重新再选择目标共识节点)。通过该固定的目标共识节点生成当前区块,而无需让所有共识节点争夺当前生成区块的权利,提高了生成区块的效率,降低了争夺当前生成区块权利的资源消耗。另一方面,接收到服务器发送的时间戳交易请求的第一共识节点,无需将该时间戳交易请求广播发送至其他的共识节点,而只需发送至目标共识节点,由目标共识节点生成区块,降低了带宽,节省了网络资源,以及每个共识节点存储该交易的存储资源。

根据上述实施例所描述的方法,本实施例将从可信时间戳添加装置的角度进一步进行描述,该可信时间戳添加装置具体可以作为独立的实体来实现,也可以集成在服务器中来实现。

如图4所示,该可信时间戳添加装置包括用于执行上述图1b中的可信时间戳添加方法所对应的单元。该装置可以包括区块数据获取单元401、时间戳添加单元402、请求构建单元403、以及请求发送单元404。

区块数据获取单元401,用于获取区块链上当前最新区块的区块数据。

时间戳添加单元402,用于获取可信时间,并根据所述可信时间为所述区块数据添加可信时间戳,得到具有可信时间戳的区块数据。

请求构建单元403,用于根据所述具有可信时间戳的区块数据构建时间戳交易请求。

请求发送单元404,用于根据所述时间戳交易生成提交指令,并将所述提交指令发送至第二服务器,所述提交指令用于指示所述第二服务器将所述时间戳交易加入所述区块链中。

在一实施例中,请求构建单元403包括具体包括:交易构建单元、请求生成单元。其中,交易构建单元,用于根据具有可信时间戳的区块数据构建时间戳交易。请求生成单元,用于根据时间戳交易生成时间戳交易请求。其中,交易构建单元,包括:模板获取单元、填充单元、时间戳交易构建单元。其中,模板获取单元,用于获取预设交易模板,所述预设交易模板中包括交易内容字段。填充单元,用于根据所述可信时间戳对所述预设交易模板中的所述交易内容字段进行数据填充。时间戳交易构建单元,用于根据填充后的预设交易模板构建一笔时间戳交易。

图5是本申请实施例提供的可信时间戳添加装置的另一示意性框图,该装置包括用于执行上述图2a实施例的可信时间戳添加方法所对应的单元。该装置包括时间获取单元501、时间判断单元502、时间记录单元503、区块数据获取单元504、时间戳添加单元505、请求构建单元506、以及请求发送单元507。该装置实施例与图4所示的装置实施例的区别在于:增加了时间获取单元501、时间判断单元502、时间记录单元503。该实施例中的区块数据获取单元504、时间戳添加单元505、请求构建单元506、以及请求发送单元507与上述实施例中的区块数据获取单元401、时间戳添加单元402、请求构建单元403、以及请求发送单元404一一对应,具体可参看图4实施例中的描述,在此不再赘述。下面将描述将装置实施例与图4所示的装置实施例的区别之处。

时间获取单元501,用于获取区块链中上一次记录的最新区块的第一生成时间。时间获取单元501,还用于当前最新区块的第二生成时间。

时间判断单元502,用于第二生成时间与第一生成时间之差是否达到预设时间间隔。

时间记录单元503,用于若第二生成时间与第一生成时间之差达到预设时间间隔,记录该第二生成时间。接着触发区块数据获取单元504;若第二生成时间与第一生成时间之差未达到预设时间间隔,触发时间获取单元501,以用于获取当前最新区块的第二生成时间。

在一实施例中,若时间戳交易请求中携带时间戳交易,而该时间戳交易是根据所述具有可信时间戳的区块数据构建的,则所述可信时间戳添加装置还包括目标区块获取单元、区块检测单元。其中,

目标区块获取单元,用于获取在预设时间间隔内所生成的区块,作为目标区块。

区块检测单元,用于检测目标区块中是否包括除时间戳交易之外的交易。

若目标区块中不包括除时间戳交易之外的交易,触发时间获取单元501,以用于获取区块链中上一次记录的最新区块的第一生成时间;若目标区块中包括除时间戳交易之外的交易,触发区块数据获取单元504。

在一实施例中,还提供了一种可信时间戳添加装置,该装置包括计时检测单元、区块数据获取单元、时间戳添加单元、请求构建单元、以及请求发送单元。其中,该装置实施例与图4所示的装置实施例的区别在于:增加了计时检测单元,其中计时检测单元,用于获取计时时间,并检测计时时间是否达到预设时间间隔。其中,该装置实施例中的区块数据获取单元、时间戳添加单元、请求构建单元、以及请求发送单元与图4所示的装置实施例中的区块数据获取单元401、时间戳添加单元402、请求构建单元403、以及请求发送单元404一一对应,具体可参看图4实施例中的描述,在此不再赘述。

本申请的实施例中还提供了一种可信时间戳添加装置,该装置集成在服务器中。该装置包括高度获取单元、高度判断单元、高度记录单元、区块数据获取单元、时间戳添加单元、请求构建单元、以及请求发送单元。该装置实施例与图4所示的装置实施例的区别在于:增加了高度获取单元、高度判断单元、高度记录单元。该实施例中的区块数据获取单元、时间戳添加单元、请求构建单元、以及请求发送单元与上述图4所示实施例中的区块数据获取单元401、时间戳添加单元402、请求构建单元403、以及请求发送单元404一一对应,具体可参看图4实施例中的描述,在此不再赘述。下面将描述将装置实施例与图4所示的装置实施例的区别之处。

高度获取单元,用于获取区块链中上一次记录的区块高度,以及还用于获取区块链的当前区块高度。

高度判断单元,用于判断当前区块高度与上一次记录的区块高度之差是否达到预设高度差。

高度记录单元,用于若当前区块高度与上一次记录的区块高度之差达到预设高度差,记录当前区块高度,并触发区块数据获取单元;若当前区块高度与上一次记录的区块高度之差未达到预设高度差,触发高度获取单元,以用于获取区块链的当前区块高度。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上装置和各单元的具体实现过程,以及所达到的有益效果,可以参考前述应用于服务器端的方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

根据上述实施例所描述的方法,本实施例将从可信时间戳添加装置的角度进一步进行描述,该可信时间戳添加装置具体可以作为独立的实体来实现,也可以集成在区块链网络中的节点中来实现。

本申请的实施例中也提供了另一可信时间戳添加装置,如图6所示,该装置包括用于执行上述图3实施例的可信时间戳添加方法所对应的单元。该装置包括请求接收单元601、节点检测单元602、区块生成单元603、广播单元604、验证结果接收单元605、区块添加单元606、指令生成单元607、指令发送单元608。其中,

请求接收单元601,用于接收时间戳交易请求,所述时间戳交易请求携带具有可信时间戳的区块数据;

节点检测单元602,用于检测所述第一节点是否为目标节点。

区块生成单元603,用于当所述第一节点为可生成区块的目标节点时,生成区块,所述区块中包括具有可信时间戳的区块数据;

广播单元604,用于向区块链中的第二节点广播所述区块的验证请求,其中,所述第二节点为区块链中除第一节点以外的节点;

验证结果接收单元605,用于接收所述第二节点基于所述验证请求返回的验证结果;

区块添加单元606,用于基于所述第二节点返回的验证结果,将所述区块添加至所述区块链中。

指令生成单元607,用于当所述第一节点不为可生成区块的目标节点时,根据所述时间戳交易请求生成发送指令;

指令发送单元608,用于将所述发送指令发送至目标节点,所述发送指令用于指示:所述目标节点生成区块,并基于共识机制将所述区块添加至所述区块链中。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上装置和各单元的具体实现过程,以及所达到的有益效果,可以参考前述应用于区块链的节点中的方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

本申请实施例还提供一种计算机设备,如图7所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:

该计算机设备可以包括一个或者一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702、射频(radiofrequency,rf)电路703、电源704、输入单元705、以及显示单元706等部件。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器701是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器701可包括一个或多个处理核心;优选的,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。

存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。

rf电路703可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器701处理;另外,将涉及上行的数据发送给基站。通常,rf电路703包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(sim)卡、收发信机、耦合器、低噪声放大器(lna,lownoiseamplifier)、双工器等。此外,rf电路703还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(gsm,globalsystemofmobilecommunication)、通用分组无线服务(gprs,generalpacketradioservice)、码分多址(cdma,codedivisionmultipleaccess)、宽带码分多址(wcdma,widebandcodedivisionmultipleaccess)、长期演进(lte,longtermevolution)、电子邮件、短消息服务(sms,shortmessagingservice)等。

计算机设备还包括给各个部件供电的电源704(比如电池),优选的,电源704可以通过电源管理系统与处理器701逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源704还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该计算机设备还可包括输入单元705,该输入单元705可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元705可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器701,并能接收处理器701发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元705还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

该计算机设备还可包括显示单元706,该显示单元706可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元706可包括显示面板,可选的,可以采用液晶显示器(lcd,liquidcrystaldisplay)、有机发光二极管(oled,organiclight-emittingdiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器701以确定触摸事件的类型,随后处理器701根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。

尽管未示出,计算机设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,计算机设备中的处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能,如下:

获取区块链上当前最新区块的区块数据;获取可信时间,并根据所述可信时间为所述区块数据添加可信时间戳,得到具有可信时间戳的区块数据;根据所述具有可信时间戳的区块数据构建时间戳交易请求;向所述区块链中的节点发送所述时间戳交易请求,以使得所述节点根据所述时间戳交易请求将所述具有可信时间戳的区块数据添加至所述区块链中。

该计算机设备可以实现本申请实施例所提供的应用于服务器中的可信时间戳添加方法任一实施例中的步骤或者实现本申请实施例中所提供的应用于区块链节点中的可信时间戳添加方法任一实施例中的步骤,因此,可以实现本申请实施例所提供的应用于服务器中的任一可信时间戳添加方法所能实现的有益效果或者实现本申请实施例所提供的应用于区块链节点中的任一可信时间戳添加方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的应用于服务器端的可信时间戳添加方法中任一实施例的步骤或者以执行本申请实施例所提供的的应用于区块链节点的可信时间戳添加方法的步骤。

其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一可信时间戳添加方法实施例中的步骤,因此,可以实现本发明实施例所提供的任一可信时间戳添加方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种可信时间戳添加方法、装置、计算机设备以及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1