发明内容
本说明书实施例提供了一种区块链交易的处理方法、装置、设备及系统,以简化区块链交易的处理过程,提升针对区块链交易的处理方案的使用便捷性。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种区块链交易的处理方法,包括:
交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易;
所述交易发起方针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;
所述交易发起方发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点;
所述区块链节点判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易;
若所述判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则执行所述目标区块链交易。
本说明书实施例提供的一种区块链交易的处理方法,包括:
交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易;
针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;
发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点。
本说明书实施例提供的一种区块链交易的处理方法,包括:
区块链网络中的区块链节点获取交易发起方发送的目标区块链交易;所述目标区块链交易携带有所述交易发起方针对所述目标区块链交易生成的目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;
判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到第一判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易;
若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则所述区块链节点执行所述目标区块链交易。
本说明书实施例提供的一种区块链交易的处理装置,包括:
获取模块,用于交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易;
Nonce值生成模块,用于针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;
发送模块,用于发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点。
本说明书实施例提供的一种区块链交易的处理装置,包括:
获取模块,用于区块链网络中的区块链节点获取交易发起方发送的目标区块链交易;所述目标区块链交易携带有所述交易发起方针对所述目标区块链交易生成的目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;
第一判断模块,用于判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到第一判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易;
执行模块,用于若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则所述区块链节点执行所述目标区块链交易。
本说明书实施例提供的一种区块链交易的处理设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易;
针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;
发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点。
本说明书实施例提供的一种区块链交易的处理设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
区块链网络中的区块链节点获取交易发起方发送的目标区块链交易;所述目标区块链交易携带有所述交易发起方针对所述目标区块链交易生成的目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;
判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到第一判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易;
若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则所述区块链节点执行所述目标区块链交易。
本说明书实施例提供的一种区块链交易的处理系统,包括:交易发起方的设备,以及区块链网络中的区块链节点;
所述交易发起方的设备,用于获取用户的业务请求;所述业务请求用于请求发起目标区块链交易;针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;以及,发送携带所述目标Nonce值的所述目标区块链交易至所述区块链节点;
所述区块链节点,用于判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易;若所述判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则执行所述目标区块链交易。
本说明书中提供的至少一个实施例能够实现以下有益效果:
通过令交易发起方可以针对目标区块链交易生成包含目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息的目标Nonce值,并令交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;以使得交易发起方可以发送携带所述目标Nonce值的目标区块链交易至区块链网络中的区块链节点;若所述区块链节点判断所述区块链网络在获取到所述目标区块链交易之前未曾接收到携带该目标Nonce值的区块链交易,则可以执行所述目标区块链交易。该方案,不仅可以令区块链网络识别针对交易发起方的目标区块链交易的重放攻击风险,且可以无需区块链节点去维护各个交易发起方的Nonce值,有利于简化区块链交易的处理过程,提升针对区块链交易的处理方案的使用便捷性。
具体实施方式
为使本说明书一个或多个实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书一个或多个实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书一个或多个实施例保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
现有技术中,Nonce值为Number once的缩写,Nonce值可以指一个只被使用一次的任意或非重复的数值。为预防区块链领域的重放攻击,可以令交易发起方生成携带有致密递增的Nonce值的区块链交易,并在区块链网络处对该交易发起方使用的Nonce值进行维护,以令区块链节点可以检测该交易发起方当前发送的区块链交易中的Nonce值是否与之前已经成功受理的该交易发起方的最近一笔区块链交易中的Nonce值保持严格的致密递增,若是,则可以认为该笔区块链交易的重放攻击风险较低,该区块链节点可以执行该笔区块链交易;若否,则可以认为该笔区块链交易的重放攻击风险较高,该区块链节点可以拒绝执行该笔区块链交易。
例如,假设交易发起方通过区块链账户Account1发起了一笔Nonce值为1的区块链交易,若该笔区块链交易被区块链网络成功执行,则该交易发起方通过账户Account1再次发起区块链交易时,必须将该笔区块链交易中的Nonce值指定为2,才会被区块链网络中的区块链节点认定为一笔合法的区块链交易以进行受理。
相应的,区块链网络会维护交易发起方的区块链账户Account1对应的Nonce值,即在每次成功执行账户Account1发起的一笔区块链交易后,需要将该账户Account1对应的Nonce值增加1。后续该区块链网络中的区块链节点设备若再次接收到账户Account1发起的一笔区块链交易,在确定该笔区块链交易中的Nonce值为维护的账户Account1对应的Nonce值与1之和后,则可以受理该笔交易。
通过以上方式,虽然在某种程度上可以避免区块链交易的重放攻击风险,但对于交易发起方的单个区块链账户而言,需要在其发起的前一笔区块链交易被执行后,才可以继续执行下一笔区块链交易,因此单账户的交易并发能力不足,无法在高并发的场景下进行应用。
基于此,现有技术中,还可以使用区块链网络去针对每个区块链账户生成并维护一个Nonce列表,该Nonce列表种可以包含多条Nonce记录;每条Nonce记录可以包括分组标识和Nonce值。当交易发起方需要通过某区块链账户并发执行N笔区块链交易时,交易发起方可以从区块链网络处的与该区块链账户对应的Nonce列表中获取N条分组标识相同的可用Nonce记录,并将获取到的N条可用Nonce记录分别添加至上述N笔区块链交易中。后续区块链网络中的区块链节点在接收到基于该区块链账户发布的上述N笔区块链交易后,若上述N笔区块链交易携带的Nonce记录与区块链网络处维护的与该区块链账户对应的Nonce列表中的Nonce记录匹配,则可以并发执行上述N笔区块链交易,从而可以提升单账户的交易并发能力。
在实际应用中,当交易发起方为交易机构时,由于一个交易机构的区块链账户后面可以关联数以万计的个人用户,这时候该区块链账户的并发交易的数量较大,因此,需要区块链网络处针对该区块链账户去生成并维护具有大量Nonce记录的Nonce列表,才能降低Nonce冲突以提升交易并发数,这会导致区块链网络及交易发起方的客户端设备对于Nonce值的维护成本均较高。且由于交易发起方需要从区块链网络处去请求获取Nonce记录,不仅将消耗更多的设备资源,同时还会影响交易发起方对于区块链交易的处理实时性。
为了解决现有技术中的缺陷,本方案给出了以下实施例:
图1为本说明书实施例提供的一种区块链交易的处理方法的流程示意图。从程序角度而言,该流程的执行主体可以为交易发起方的用于发布区块链交易的应用,或者搭载有交易发起方的用于发布区块链交易的应用的设备。如图1所示,该流程可以包括以下步骤:
步骤102:交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易。
在本说明书实施例中,交易发起方可以指能够在区块链网络中发布区块链交易的一方。在实际应用中,由于用户既可以通过个人区块链账户在区块链网络中发布区块链交易,或者,用户也可以通过交易机构的区块链账户在区块链网络中发布区块链交易,因此,交易发起方既可以包括交易机构,也可以包括该交易机构处关联的用户。
在本说明书实施例中,当用户需要执行目标业务时,可以发起针对该目标业务的业务请求。交易发起方的用于发布区块链交易的应用客户端(后续简称为“交易发起方的客户端”)在接收到用户的针对该目标业务的业务请求后,可以基于该交易发起方的区块链账户去生成与该业务请求对应的目标区块链交易。
在本说明书实施例中,区块链(Block chain),可以理解为是多个区块顺序存储构成的数据链,每个区块的区块头都包含有本区块的时间戳、前一个区块信息的哈希值和本区块信息的哈希值,由此实现区块与区块之间的相互验证,构成不可篡改的区块链。每个区块都可以理解为是一个数据块(存储数据的单元)。区块链作为一种去中心化的数据库,是一串使用密码学方法相互关联产生的数据块,每一个数据块中包含了一次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块与区块首尾相连形成的链,即为区块链。若需要修改块内数据,则需要修改此区块之后所有区块的内容,并将区块链网络中所有节点备份的数据进行修改。因此,区块链具有难以篡改、删除的特点,在数据已保存至区块链后,其作为一种保持内容完整性的方法具有可靠性。
而区块链交易(Transaction),可以指交易发起方通过区块链的客户端创建,并需要最终发布至区块链网络的分布式数据库中的一笔数据。区块链交易,通常存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,区块链交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,防伪校验业务、租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,区块链交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。在本说明书实施例中,对于目标区块链交易的具体类型及用途不作具体限定。
步骤104:针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同。
在本说明书实施例中,交易发起方可以自行针对待发起的区块链交易去生成Nonce值,并向区块链节点发送携带其生成的Nonce值的区块链交易。其中,交易发起方生成的Nonce值中应至少包含一个序列号(sequence)、Nonce值的生成时刻信息以及该交易发起方的标识信息等。其中,序列号可以为数字。交易发起方的标识信息可以包括交易发起方的区块链账户标识或者交易发起方的分布式数字身份标识(Decentralized Identitfiers,DID)。
在本说明书实施例中,可以通过区块链平台提供分布式数字身份服务,以便于交易发起方可以基于自身的分布式数字身份去发布区块链交易。在实际应用中,交易发起方可以请求分布式身份服务器(Decentralized Identity Service,DIS)来创建自身的分布式数字身份标识DID。其中,DIS是一种基于区块链的身份管理方案,DIS服务器可以与区块链平台相连,并提供数字身份的创建、验证和管理等功能,从而实现规范化地管理和保护实体数据,同时保证信息流转的真实性和效率,并可以解决跨机构的身份认证和数据合作等难题。
在本说明书实施例中,当交易发起方需要并行发起多笔区块链交易时,需要为各笔区块链交易生成不同的Nonce值。为满足交易并发需求,保证区块链交易处理效率,交易发起方通常需要在同一时刻去生成多个不同的Nonce值,这就要求交易发起方在目标Nonce值生成时刻针对各个区块链交易生成的Nonce值各不相同。
由于交易发起方生成的每个Nonce值中应至少包含一个序列号、Nonce值的生成时刻以及该交易发起方的标识信息,而交易发起方使用指定区块链账户在同一时刻生成的各个Nonce值中包含的Nonce值的生成时刻及该交易发起方的标识信息通常均相同,从而可以通过令交易发起方使用指定区块链账户在同一时刻生成的各个Nonce值中包含的序列号各不相同,以保证交易发起方在同一时刻可以生成多个不同的Nonce值。
在实际应用中,可能需要对交易发起方生成的Nonce值的格式进行调整,例如,增加、减少或修改Nonce值中包含的信息的类型等,为对不同的Nonce值格式进行区分,目标Nonce值中还可以包括Nonce值版本信息。其中,不同的Nonce值版本信息对应的Nonce值格式不同。例如,当Nonce值版本信息为1.1.1时,目标Nonce值中的目标Nonce值生成时刻的格式可以为X年X月X日X时X分X秒;而当Nonce值版本信息为1.1.2时,目标Nonce值中的目标Nonce值生成时刻的格式可以变更为了X年X月X日X时X分X秒X毫秒。或者,当 Nonce值版本信息为1.1.1时,目标Nonce值中包含Nonce值版本信息、目标序列号、目标Nonce值生成时刻、交易发起方的标识信息等4类信息;而当Nonce值版本信息为1.1.2时,目标Nonce值中包含了Nonce值版本信息、目标序列号、目标Nonce值生成时刻、交易发起方的标识信息、目标Nonce值有效期等5类信息。在本说明书实施例中,对于不同的Nonce值版本信息对应的Nonce值格式不作具体限定。
步骤106:发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点。
在本说明书实施例中,交易发起方的客户端在生成目标Nonce值后,还可以进一步生成携带所述目标Nonce值的目标区块链交易,以将携带所述目标Nonce值的目标区块链交易发送至区块链网络中的区块链节点处,从而令区块链节点可以基于目标区块链交易携带的目标Nonce值,识别该目标区块链交易对应的重放攻击风险。
在本说明书实施例中,发送至区块链网络处的目标区块链交易通常可以包括交易体、目标Nonce值、该目标区块链交易的提交时间信息以及数字签名信息等。其中,交易体中可以包含反映用户的业务请求的信息,该目标区块链交易的提交时间信息可以指反映交易发起方提交该目标区块链交易的时刻的信息,数字签名信息可以是通过使用交易发起方的私钥对该目标区块链交易中的交易体、目标Nonce值及该目标区块链交易的提交时间信息等进行数字签名而得到的。后续,区块链节点可以在使用交易发起方的公钥对目标区块链交易携带的数字签名信息验证通过后,确定该目标区块链交易未被篡改。
图1中所述的方案,通过令交易发起方可以针对目标区块链交易生成包含目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息的目标Nonce值,并令交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同,从而可以保证交易发起方针对各个区块链交易生成的Nonce是唯一的,以令区块链网络可以识别针对交易发起方的目标区块链交易的重放攻击风险。且该方案中,可以无需区块链节点去生成并维护各个交易发起方的Nonce值,不仅可以降低区块链节点及交易发起方维护Nonce值所占用的设备存储资源,还可以无需交易发起方与区块链节点之间执行传输Nonce值的步骤,有利于简化区块链交易的处理过程,降低交易发起方的设备及区块链节点设备的资源消耗,提升针对区块链交易的处理方式的使用便捷性。同时,该方案通过令交易发起方在同一时刻可以为多个Nonce值分配各不相同的序列号,以快速生成多个不同的Nonce值,从而可以满足交易发起方的交易并发需求,有利于提升交易发起方的交易并发处理能力。
基于图1中的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
步骤104:针对目标区块链交易生成目标Nonce值,具体可以包括:
获取交易发起方处当前使用的Nonce值版本信息。该 Nonce值版本信息可以指示交易发起方当前所生成的Nonce值中包含的各种信息的格式。
将所述Nonce值版本信息设置为目标Nonce值中包含的Nonce值版本信息。
获取所述交易发起方的设备处的当前时间信息。该当前时间信息的格式为目标Nonce值中包含的Nonce值版本信息所指示的时间信息格式。例如,当前时间信息的格式可以为:“X年-X月-X日 X时-X分-X秒”或者“X日/ X月/ X年 X时:X分:X秒:X毫秒”等。在本说明书实施例中,对于当前时间信息的格式不作具体限定。
将所述当前时间信息所指示的时刻设置为目标Nonce值中的目标Nonce值生成时刻。在实际应用中,目标Nonce值中可以直接包含交易发起方的设备处的当前时间信息,以作为目标Nonce值生成时刻。
获取所述交易发起方的标识信息;所述交易发起方的标识信息可以包括:交易发起方当前使用的区块链账户的标识信息,或者,交易发起方的DID标识信息。
将所述交易发起方的标识信息设置为所述目标Nonce值中包含的交易发起方的标识信息。
获取所述交易发起方处的累计序列号;所述累计序列号为所述交易发起方生成的上一个Nonce值中包含的序列号。
将所述累计序列号与预设间隔值之和设置为所述目标Nonce值中的目标序列号。
在本说明书实施例中,由于可以通过保证交易发起方在同一时刻生成的多个Nonce值中包含的序列号互不相同,以令交易发起方可以在同一时刻生成多个不同的Nonce值。基于此,在本说明书实施例中,提供了多种确定目标Nonce值中的目标序列号的实现方式。
实现方式一
所述将所述累计序列号与预设间隔值之和设置为所述目标Nonce值中的目标序列号,具体可以包括:
计算所述累计序列号与预设间隔值之和,得到目标值。
判断所述目标值是否位于预设序列号取值范围内,得到第一判断结果;所述预设序列号取值范围内包含的可用序列号的数量大于等于所述交易发起方的最大交易吞吐量;所述最大交易吞吐量为所述交易发起方在所述当前时间信息中的最小时间单位内所能处理的区块链交易的最大数量。
若所述第一判断结果表示所述目标值位于所述预设序列号取值范围内,则将所述目标值设置为所述目标Nonce值中的目标序列号。
在实际应用中,若所述第一判断结果表示所述目标值位于所述预设序列号取值范围之外,则可以将所述预设序列号取值范围中的数值最小的可用序列号设置为所述目标Nonce值中的目标序列号。
在本实现方式中,交易发起方在不同时刻生成的Nonce值中包含的序列号可以进行累计。例如,交易发起方在上一秒生成的最后一个Nonce值中包含的序列号为100,则该交易发起方在当前这一秒生成的第一个Nonce值中包含的序列号可以为100与预设间隔值之和。其中,预设间隔值可以根据实际需求确定,例如,当预设间隔值为1时,则序列号为致密递增的数值;当然,预设间隔值为也可以设置为非1的整数或小数,对此不作具体限定。
在实际应用中,由于只需要保证交易发起方在当前时间信息中的最小时间单位内生成的Nonce值的数量,大于等于该交易发起方在该最小时间单位内所能并发处理的区块链交易的最大数量(即交易发起方的最大交易吞吐量),即可保证交易发起方对于区块链交易的并发处理能力。同时,由于交易发起方在当前时间信息中的最小时间单位内生成的各个Nonce值携带的序列号需各不相同,而Nonce值携带的序列号均需从预设序列号取值范围内选取,因此,需要令预设序列号取值范围内包含的可用序列号的数量大于等于交易发起方的最大交易吞吐量。
为便于理解,在此进行举例说明。例如,假定,当前时间信息的格式为:“X日/ X月/X年 X时:X分:X秒:X毫秒”,可知,当前时间信息的最小时间单位为毫秒。由于TPS(Transactions Per Second)可以指设备每秒传输的事物处理个数,因此,可以利用交易发起方的设备的TPS参数去计算交易发起方的最大交易吞吐量。具体的,在当前时间信息的最小时间单位为毫秒时,交易发起方的最大交易吞吐量可以为交易发起方的设备的TPS参数与1000之商。同理,在当前时间信息的最小时间单位为秒时,交易发起方的最大交易吞吐量可以为交易发起方的设备的TPS参数。而在当前时间信息的最小时间单位为分钟时,交易发起方的最大交易吞吐量则可以为交易发起方的设备的TPS参数与60之积。
在实际应用中,在预设序列号取值范围内包含的可用序列号的数量大于等于交易发起方的最大交易吞吐量的基础上,还可以通过将预设序列号取值范围的最大值设置为数值较小的值,以降低交易发起方对于生成、维护、存储及传输Nonce值所需消耗的设备资源量。例如,假定,需要保证预设序列号取值范围内包含的可用序列号的数量大于等于2000个时,若预设间隔值为1,则预设序列号取值范围可以为[1,2000],相较于将预设序列号取值范围设置为[1000000,999999999],有利于降低交易发起方的设备在处理区块链交易时所消耗的设备资源量。
在实际应用中,若预设序列号取值范围为[1,2000],预设间隔值为1,且交易发起方生成的上一个Nonce值中包含的序列号(即交易发起方处的累计序列号)为2000,则在生成当前的目标Nonce值时,由于累计序列号与预设间隔值之和为2001,超出了预设列号取值范围,从而可以将当前生成的目标Nonce值中的目标序列号设置为预设序列号取值范围中的数值最小的可用序列号(即数值1),以符合预设要求。
实现方式二
所述将所述累计序列号与预设间隔值之和设置为所述目标Nonce值中的目标序列号之前,还可以包括:
判断所述当前时间信息所指示的时刻与所述上一个Nonce值的生成时刻是否相同,得到第二判断结果。
所述将所述累计序列号与预设间隔值之和设置为所述目标Nonce值中的目标序列号,具体可以包括:
若所述第二判断结果表示所述当前时间信息所指示的时刻与所述上一个Nonce值的生成时刻相同,则将所述累计序列号与预设间隔值之和设置为所述目标Nonce值中的目标序列号。
在实际应用中,若所述第二判断结果表示所述当前时间信息所指示的时刻与所述上一个Nonce值的生成时刻不同,则将预设的序列号初始值设置为所述目标Nonce值中的目标序列号。
在本实现方式中,交易发起方在不同时刻生成的Nonce值中包含的序列号可以不进行累计。例如,假定,预设序列号取值范围为[5,5000],预设间隔值为2,若交易发起方在上一秒生成的最后一个Nonce值中包含的序列号为100,则该交易发起方在当前这一秒生成的第一个Nonce值中包含的序列号可以为5,而无需设置为100与2之和。
但是,交易发起方在同一时刻生成的各个Nonce值中包含的序列号需进行累计。例如,假定,预设的序列号初始值为5,预设间隔值为2,则交易发起方在同一时刻生成的各个Nonce值中包含的序列号依次可以为5、7、9……等,从而可以避免同一时刻生成的Nonce值中包含相同的序列号。在本实现方式中,是可以无需设置可用序列号的最大值的。
在本说明书实施例中,无论采用上述何种实现方式去确定目标Nonce值中的目标序列号,在针对所述目标区块链交易生成目标Nonce值之后,均可以将所述交易发起方处的累计序列号更新为所述目标序列号,以便于后续基于所述交易发起方处的累计序列号,继续生成Nonce值。
图2为本说明书实施例提供的一种区块链交易的处理方法的流程示意图。从程序角度而言,该方法的执行主体可以为区块链网络中的区块链节点处的设备。如图2所示,该流程可以包括以下步骤:
步骤202:区块链网络中的区块链节点获取交易发起方发送的目标区块链交易;所述目标区块链交易携带有所述交易发起方针对所述目标区块链交易生成的目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同。
在本说明书实施例中,步骤202中的区块链节点获取到的目标区块链交易,可以是交易发起方利用图1中所示的方案生成的,对此不做赘述。
步骤204:判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到第一判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易。
步骤206:若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则所述区块链节点可以执行所述目标区块链交易。
步骤208:而若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前已接收到所述指定区块链交易,则所述区块链节点可以拒绝执行所述目标区块链交易。
在本说明书实施例中,若区块链节点确定区块链网络在接收到目标区块链交易之前未接收到指定区块链交易,则可以表示区块链网络首次接收到携带目标Nonce值的区块链交易,因此,可以认为携带了该目标Nonce值的目标区块链交易存在的重放攻击风险较低,从而使得区块链节点可以执行该目标区块链交易;否则,则可以认为携带了该目标Nonce值的目标区块链交易存在的重放攻击风险较高,从而使得区块链节点可以拒绝执行该目标区块链交易,以降低重放攻击对于用户合法利益产生的不利影响。
图2中方案,区块链网络中的区块链节点通过判别区块链网络在接收到目标区块链交易之前是否已接收到指定区块链交易,该指定区块链交易为携带有目标区块链交易中的目标Nonce值的区块链交易,即可识别各个区块链交易对应的重放攻击风险。使得区块链节点既无需生成交易发起方所需携带在区块链交易中的Nonce值,也无需维护上一次接收或受理成功的各个交易发起方的区块链交易中的Nonce值,从而可以减少区块链网络在处理区块链交易时所需执行的步骤及所需消耗的设备资源。
基于图2中的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
步骤204:判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,具体可以包括:
针对所述区块链网络在第一预设时间段内接收到的区块链交易,判断所述区块链交易携带的Nonce值与所述目标Nonce值是否相同;所述第一预设时间段的起始时刻为所述区块链节点接收到所述目标区块链交易的时刻之前的第一预设时刻;所述第一预设时间段的终止时刻为所述区块链节点接收到所述目标区块链交易的时刻;或者,所述第一预设时间段的终止时刻为所述区块链节点接收到所述目标区块链交易的时刻之后的第二预设时刻。
在本说明书实施例中,可以根据实际需求设置第一预设时间段的起始时刻及终止时刻,但应保证第一预设时间段的起始时刻要早于区块链节点接收到目标区块链交易的时刻。在实际应用中,还可以根据实际需求设置第一预设时间段的时长,以便于确定第一预设时间段的起始时刻及终止时刻。由于通常情况下,第一预设时间段的时长越长,区块链网络在第一预设时间段内接收到的区块链交易数量越大,从而使得执行步骤204所需的时间越长,因此,可以通过控制第一预设时间段的时长,以保证图2中方案的执行效率。例如,第一预设时间段的时长可以设置为数天、数小时,或者,数百秒等,对此不作具体限定。
在本说明书实施例中,当将第一预设时间段的终止时刻设置为区块链节点接收到目标区块链交易的时刻之后的时刻时,该实施例中的方案,能够针对“区块链网络在接收到目标区块链交易之前未接收到指定区块链交易,但区块链网络在接收到目标区块链交易之后却接收到指定区块链交易”这一情况进行识别,在此情况下,也可以表示目标区块链交易对应的攻击风险较高,从而可以令区块链节点对于目标区块链交易以及指定区块链交易均拒绝执行,以降低重放攻击带来的风险。
在本说明书实施例中,交易发起方发送的目标区块链交易中还可以携带有该交易发起方的设备提交该目标区块链交易的提交时间信息。由于当区块链节点经过较长时延后才接收到目标区块链交易时,该目标区块链交易存在被不发分子截获、篡改的风险,因此,可以令区块链节点拒绝执行该目标区块链交易。
具体的,步骤204:判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易之前,还可以包括:
判断所述提交时间信息所指示的时刻是否位于第二预设时间段内,得到第二判断结果;所述第二预设时间段的起始时刻为所述区块链节点接收到所述目标区块链交易的时刻之前的第三预设时刻,所述第二预设时间段的终止时刻为所述区块链节点接收到所述目标区块链交易的时刻之后的第四预设时刻。
若所述第二判断结果表示所述提交时间信息所指示的时刻位于所述第二预设时间段内,则判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易。
若所述第二判断结果表示所述提交时间信息所指示的时刻位于所述第二预设时间段之外,则所述区块链节点拒绝执行所述目标区块链交易。
在本说明书实施例中,第二预设时间段的时长也可以根据实际需求自行确定,但通常来说,可以将第二预设时间段的时长设置为数分钟、或数十秒,以保证该实施例中方案针对不法分子的攻击行为的抵御有效性。
图3为本说明书实施例提供的一种区块链交易的处理方法的流程示意图。从程序角度而言,该流程的执行主体可以包括:交易发起方的设备以及区块链节点处的设备。如图3所示,该流程可以包括以下步骤:
步骤302:交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易。其中,所述交易发起方可以包括:交易机构或者用户。
步骤304:所述交易发起方针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同。
步骤306:所述交易发起方发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点。
步骤308:所述区块链节点判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易。
步骤310:若所述判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则执行所述目标区块链交易。
步骤312:若所述判断结果表示所述区块链网络在接收到所述目标区块链交易之前已接收到所述指定区块链交易,则拒绝执行目标区块链交易。
在本说明书实施例中,图3中的交易发起方对于区块链交易的处理原理与图1中的交易发起方对于区块链交易的处理原理可以是相同的,而图3中的区块链节点对于区块链交易的处理原理与图2中的区块链节点对于区块链交易的处理原理也可以是相同的,对此不做赘述。
基于同样的思路,本说明书实施例还提供了图1中方法对应的装置。图4为本说明书实施例提供的对应于图1中方法的一种区块链交易的处理装置的结构示意图,该装置可以应用于交易发起方的设备处。如图4所示,该装置可以包括:
获取模块402,用于交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易。
Nonce值生成模块404,用于针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同。
发送模块406,用于发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点。
在本说明书实施例中,所述Nonce值生成模块404,具体可以包括:
第一获取单元,用于获取所述交易发起方处的当前时间信息。
第一设置单元,用于将所述当前时间信息所指示的时刻设置为目标Nonce值中的目标Nonce值生成时刻。
第二获取单元,用于获取所述交易发起方处的累计序列号;所述累计序列号为所述交易发起方生成的上一个Nonce值中包含的序列号。
第二设置单元,用于将所述累计序列号与预设间隔值之和设置为所述目标Nonce值中的目标序列号。
在本说明书实施例中,所述第二设置单元,具体可以用于:
计算所述累计序列号与预设间隔值之和,得到目标值。
判断所述目标值是否位于预设序列号取值范围内,得到第一判断结果;所述预设序列号取值范围内包含的可用序列号的数量大于等于所述交易发起方的最大交易吞吐量;所述最大交易吞吐量为所述交易发起方在所述当前时间信息中的最小时间单位内所能处理的区块链交易的最大数量。
若所述第一判断结果表示所述目标值位于所述预设序列号取值范围内,则将所述目标值设置为所述目标Nonce值中的目标序列号。
在本说明书实施例中,所述Nonce值生成模块404,还可以包括:
第三设置单元,用于若所述第一判断结果表示所述目标值位于所述预设序列号取值范围之外,则将所述预设序列号取值范围中的数值最小的可用序列号设置为所述目标Nonce值中的目标序列号。
在本说明书实施例中,所述Nonce值生成模块404,还可以包括:
判断单元,用于判断所述当前时间信息所指示的时刻与所述上一个Nonce值的生成时刻是否相同,得到第二判断结果。
所述第二设置单元,具体可以用于:
若所述第二判断结果表示所述当前时间信息所指示的时刻与所述上一个Nonce值的生成时刻相同,则将所述累计序列号与预设间隔值之和设置为所述目标Nonce值中的目标序列号。
在本说明书实施例中,所述Nonce值生成模块404,还可以包括:
第四设置单元,用于若所述第二判断结果表示所述当前时间信息所指示的时刻与所述上一个Nonce值的生成时刻不同,则将预设的序列号初始值设置为所述目标Nonce值中的目标序列号。
在本说明书实施例中,图4中所述的装置,还可以包括:
更新模块,用于将所述交易发起方处的累计序列号更新为所述目标序列号。
图4中所述的装置中,所述目标Nonce值还可以包括Nonce值版本信息。所述目标区块链交易还可以携带有目标区块链交易的提交时间信息。
基于同样的思路,本说明书实施例还提供了图2中方法对应的装置。图5为本说明书实施例提供的对应于图2中方法的一种区块链交易的处理装置的结构示意图,该装置可以应用于区块链网络中的区块链节点处的设备中。如图5所示,该装置可以包括:
获取模块502,用于区块链网络中的区块链节点获取交易发起方发送的目标区块链交易;所述目标区块链交易携带有所述交易发起方针对所述目标区块链交易生成的目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同。
第一判断模块504,用于判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到第一判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易。
执行模块506,用于若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则所述区块链节点执行所述目标区块链交易。
在本说明书实施例中,图5中所述的装置,还可以包括:
第一拒绝执行模块,用于若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前已接收到所述指定区块链交易,则所述区块链节点拒绝执行所述目标区块链交易。
在本说明书实施例中,所述第一判断模块504,具体可以用于:
针对所述区块链网络在第一预设时间段内接收到的区块链交易,判断所述区块链交易携带的Nonce值与所述目标Nonce值是否相同;所述第一预设时间段的起始时刻为所述区块链节点接收到所述目标区块链交易的时刻之前的第一预设时刻;所述第一预设时间段的终止时刻为所述区块链节点接收到所述目标区块链交易的时刻;或者,所述第一预设时间段的终止时刻为所述区块链节点接收到所述目标区块链交易的时刻之后的第二预设时刻。
在本说明书实施例中,所述目标区块链交易还携带有所述目标区块链交易的提交时间信息。图5中所述装置,还可以包括:
第二判断模块,用于判断所述提交时间信息所指示的时刻是否位于第二预设时间段内,得到第二判断结果;所述第二预设时间段的起始时刻为所述区块链节点接收到所述目标区块链交易的时刻之前的第三预设时刻,所述第二预设时间段的终止时刻为所述区块链节点接收到所述目标区块链交易的时刻之后的第四预设时刻。
所述第一判断模块504,具体可以用于:若所述第二判断结果表示所述提交时间信息所指示的时刻位于所述第二预设时间段内,则判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易。
图5中所述的装置,还可以包括:第二拒绝执行模块,用于若所述第二判断结果表示所述提交时间信息所指示的时刻位于所述第二预设时间段之外,则所述区块链节点拒绝执行所述目标区块链交易。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图6为本说明书实施例提供的对应于图1的一种区块链交易的处理设备的结构示意图。该设备可以为交易发起方处的设备。
如图6所示,设备600可以包括:
至少一个处理器610;以及,
与所述至少一个处理器通信连接的存储器630;其中,
所述存储器630存储有可被所述至少一个处理器610执行的指令620,所述指令被所述至少一个处理器610执行,以使所述至少一个处理器610能够:
交易发起方获取用户的业务请求;所述业务请求用于请求发起目标区块链交易。
针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同。
发送携带所述目标Nonce值的所述目标区块链交易至区块链网络中的区块链节点。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图7为本说明书实施例提供的对应于图2的一种区块链交易的处理设备的结构示意图。该设备可以为区块链节点处的设备。
如图7所示,设备700可以包括:
至少一个处理器710;以及,
与所述至少一个处理器通信连接的存储器730;其中,
所述存储器730存储有可被所述至少一个处理器710执行的指令720,所述指令被所述至少一个处理器710执行,以使所述至少一个处理器710能够:
区块链网络中的区块链节点获取交易发起方发送的目标区块链交易;所述目标区块链交易携带有所述交易发起方针对所述目标区块链交易生成的目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同。
判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到第一判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易。
若所述第一判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则所述区块链节点执行所述目标区块链交易。
基于同样的思路,本说明书实施例还提供了图3中方法对应的一种区块链交易的处理系统。该系统可以包括:交易发起方的设备以及区块链网络中的区块链节点。图8为本说明书实施例提供的对应于图3的一种区块链交易的处理系统的泳道流程示意图。如图8所示:
在交易发起阶段,用户可以基于个人设备发起业务请求。
交易发起方的设备,可以用于获取用户的业务请求;所述业务请求用于请求发起目标区块链交易;针对所述目标区块链交易生成目标Nonce值;所述目标Nonce值包括:目标序列号、目标Nonce值生成时刻以及所述交易发起方的标识信息;所述交易发起方在所述目标Nonce值生成时刻针对其他区块链交易生成的Nonce值与所述目标Nonce值不同;以及,发送携带所述目标Nonce值的所述目标区块链交易至所述区块链节点。
而在交易风险识别阶段,所述区块链节点,可以用于判断所述区块链网络在接收到所述目标区块链交易之前是否已接收到指定区块链交易,得到判断结果;所述指定区块链交易为携带有所述目标Nonce值的区块链交易;若所述判断结果表示所述区块链网络在接收到所述目标区块链交易之前未接收到所述指定区块链交易,则执行所述目标区块链交易。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于图6及图7所示的设备而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字符系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字符助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字符多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。