一种区块链中的智能合约执行方法、系统和电子设备
技术领域
本文件涉及计算机技术领域,尤其涉及一种区块链中的智能合约执行方法、系统和电子设备。
背景技术
在区块链的智能合约的执行中过程,通常会存在事务回滚的问题。比如,当一笔交易调用智能合约进行交易执行时,可能由于运行逻辑错误或GAS耗尽,导致交易执行失败。由于智能合约在进行交易执行过程中会对交易双方的账号状态进行修改。而当交易执行失败时,则需要回滚修改历史,也就是将智能合约修改过的交易双方的账号状态恢复为修改之前的状态。
目前,在以太坊中,通常是使用操作日志(change log)来记录所有修改记录,而当需要回滚修改历史时,则需要对操作日志中记录的所有修改记录进行逐个撤销来恢复修改之前的状态。然而这种回滚修改历史的方式效率比较低,每次操作都需要复制一份修改之前的数据,当需要回滚时也需要逐个撤销修改操作。
发明内容
本说明书实施例提供了一种区块链中的智能合约执行方法、系统和电子设备,以解决现有的区块链中的智能合约执行过程中,一旦交易执行失败,采用回滚修改历史的方式效率较低的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出了一种区块链中的智能合约执行方法,包括:
在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;
如果所述目标交易执行成功,则所述区块链节点将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;
所述区块链节点基于所述第二缓存中的交易执行结果进行写块操作。
第二方面,提出了一种区块链系统,包括:
区块链中的节点,在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;以及基于所述第二缓存中的交易执行结果进行写块操作。
第三方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
在目标提议达成共识后,调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;
如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;
基于所述第二缓存中的交易执行结果进行写块操作。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
在目标提议达成共识后,调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;
如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;
基于所述第二缓存中的交易执行结果进行写块操作。
本说明书实施例采用上述技术方案至少可以达到下述技术效果:
在目标提议达成共识后,区块链节点调用智能合约执行目标提议中的目标交易,并将执行过程中产生的目标交易的交易执行结果存储在第一缓存中,其中,目标交易用于执行目标智能合约;如果目标交易执行成功,则区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中;区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果进行写块操作。也就是说,采用两级缓存记录交易执行过程中产生的交易执行结果,在未确定交易是否执行成功时,将交易执行过程中产生的交易执行结果存储在第一缓存中,在交易执行成功的情况下,才将交易执行结果存储在第二缓存中。那么,在交易执行失败的情况下,即需要进行回滚修改历史操作时,只需要对第一缓存中记录的数据进行修改,而不需要逐个修改第二缓存中记录的数据。这一方面节省了缓存空间;另一方面在交易执行失败时,也提高了回滚修改历史操作的效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书一个实施例提供的一种区块链中的智能合约执行方法的实施流程示意图;
图2为本说明书一个实施例提供的区块链中的智能合约执行方法应用在实际场景中的流程示意图;
图3为本说明书一个实施例提供的一种区块链系统的结构示意图;
图4为本说明书一个实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本文件的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本文件一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文件保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
如背景技术中所述,在区块链智能合约的执行过程中,通常会存在事务回滚的问题。即在智能合约执行过程中会对交易双方的合约状态进行修改,比如甲的合约状态中余额为90元,乙的合约状态中余额为80元,甲向乙转账10元,产生一笔交易,该交易在执行过程中,甲的合约状态的余额就由90元变为80元,乙的合约状态中余额由80元变为90元。如果智能合约执行这笔交易的过程中,由于智能合约内部的逻辑错误或者GAS耗尽,则会导致这笔交易执行失败。
在这种情况下,如果交易执行失败,则需要进行回滚操作,即将修改后的甲的合约状态和乙的合约状态恢复为修改之前的状态,即将修改后的甲的合约状态由余额80元修改为余额90元,将修改后的乙的合约状态由余额90元修改为余额80元。由于在以太坊中,是使用操作日志(change log)来记录每一次的修改记录,那么在交易执行失败后,则需要逐个修改操作日志中记录的修改记录。
在交易次数不多的情况下,这种修改方式可能不会耗费太多的时间,然而,在交易次数很多的情况下,比如以甲和乙的合约状态为例,如果甲和乙之间存在多次交易,在某一次交易执行出错后,其之后的每一笔交易都会有问题,那么修改起来将会耗费大量的时间和精力。
为解决现有的区块链中的智能合约执行过程中,一旦交易执行失败,采用回滚修改历史的方式效率较低的问题,本说明书实施例提供一种区块链中的智能合约执行方法。在目标提议达成共识后,区块链节点调用智能合约执行目标提议中的目标交易,并将执行过程中产生的目标交易的交易执行结果存储在第一缓存中,其中,目标交易用于执行目标智能合约;如果目标交易执行成功,则区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中;区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果进行写块操作。
由于能够采用两级缓存记录交易执行过程中产生的交易执行结果,在未确定交易是否执行成功时,将交易执行过程中产生的交易执行结果存储在第一缓存中,在交易执行成功的情况下,才将交易执行结果存储在第二缓存中。那么,在交易执行失败的情况下,即需要进行回滚修改历史操作时,只需要对第一缓存中记录的数据进行修改,而不需要逐个修改第二缓存中记录的数据。这一方面节省了缓存空间;另一方面在交易执行失败时,也提高了回滚修改历史操作的效率。
具体地,本说明书一个或多个实施例提供的一种区块链中的智能合约执行方法的实现流程示意图如图1所示,包括:
步骤110,在目标提议达成共识后,区块链节点调用智能合约执行目标提议中的目标交易,并将执行过程中产生的目标交易的交易执行结果存储在第一缓存中。
应理解,在一笔交易的执行过程中,会产生对应的交易执行结果。以甲向乙转账为例,甲向乙转账之后,甲的合约账户余额会减少,乙的合约账户余额会增加。而交易执行过程中存在交易执行失败的可能,即每个正在执行的交易不一定能够执行成功,也就是说,已存储的修改记录并不一定能够百分百失效。这就导致交易执行过程中记录的交易执行结果可能要被撤销修改。
基于这一点,以尽可能地减少交易执行过程中占用的缓存并提高交易执行失败后修改已记录的数据的效率为驱动,本说明书实施例对记录交易执行过程中产生的交易执行结果采用两级缓存,即采用第一缓存记录交易执行过程中产生的交易执行结果,采用第二缓存记录交易执行成功后的交易执行结果,也就是使用第二缓存记录能够失效的交易执行结果。
其中,目标提议中可包括一个或多个交易,该一个或多个交易可由区块链中的共识主节点从交易池中捞取得到,目标提议可由区块链中的共识主节点基于该一个或多个交易打包得到,并在区块链中发起针对该目标提议的共识操作,即将基于该一个或多个交易生成的根哈希以及该目标提议广播至区块链中的共识备份节点,使得区块链中的节点对该目标提议进行共识操作。
应理解,在目标提议达成共识后,区块链节点(共识主节点或共识备份节点)可以调用本节点的智能合约执行目标提议中的目标交易,该目标交易为目标提议中的一个交易。当目标提议中包含的交易不止一个时,可按照目标提议中交易的先后顺序,依次对目标提议中的多个交易进行交易执行操作。
为了便于记录目标交易在交易执行过程中产生的交易执行结果,本说明书实施例可设置一个临时缓存,即第一缓存(在实际应用中可设计命名为dirty_cache),不管目标交易是否执行成功,都可以将目标交易在交易执行过程中产生的交易执行结果存储在第一缓存中。
步骤120,如果目标交易执行成功,则区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中。
应理解,为了减少交易执行失败的交易的交易执行结果占用缓存空间,本说明书实施例在一笔交易执行成功之后,才将第一缓存中存储的该笔交易的交易执行记录存储到第二缓存中。也就是说,每一笔交易执行成功的交易的交易执行结果都会被存储到第二缓存中。第二缓存在实际应用中可设计命名为pending_cache。
可选地,为了避免第一缓存中存储的数据量过大增加第一缓存的维护复杂度,本说明书实施例在区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中之后,可清空第一缓存,即使得第一缓存存储的数据为最新的交易在交易执行过程中产生的交易执行结果。具体地,在区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中之后,本说明书实施例提供的方法还包括:
区块链节点清空第一缓存中存储的目标交易的交易执行结果。
可选地,各区块链节点的第一缓存中还可只存储两个固定的账户之间的产生的交易最新的交易执行结果,比如甲和乙之间交易的次数较为频繁,该第一缓存中只存储甲和乙之间最新的一笔交易在交易执行过程中产生的交易执行结果。假设甲、乙、丙都拥有区块链提供的账号,除了记录甲和乙之间的交易执行结果,第一缓存中还可记录有甲和丙、丙和乙之间的交易执行结果,但为了节省第一缓存的缓存空间,第一缓存中只记录甲和乙之间最新的一笔交易的交易执行结果、甲和丙之间最新的一笔交易的交易执行结果、以及丙和乙之间最新的一笔交易的交易执行结果。
或者,第一缓存中只存储当前正在执行的交易在交易执行过程中产生的交易执行结果,在该交易执行失败时,便将第一缓存清空,即第一缓存在清空后不存储任何数据。
可选地,由于交易在执行过程中存在交易执行失败的可能性,为了避免失败的交易执行结果占用过多的缓存空间,本说明书实施例在确定某一笔交易执行失败后,就清楚第一缓存中关于该笔交易的交易执行结果的记录。具体地,若区块链节点确定目标交易执行失败,则清空第一缓存中存储的目标交易的交易执行结果。
可选地,区块链中的交易执行失败的原因通常会包括执行交易的智能合约的逻辑错误或者智能合约的GAS耗尽等原因,为避免执行失败的交易会干扰之后的交易的执行结果,本说明书实施例在确定交易执行失败后,就对第一缓存中记录的执行失败的交易的交易执行结果进行清空操作。具体地,若区块链节点确定所述目标交易执行失败,则清空第一缓存中存储的目标交易的交易执行结果,包括:
若区块链节点确定智能合约的逻辑错误和/或智能合约的GAS耗尽,则清空第一缓存中存储的目标交易的交易执行结果。
其中,智能合约虚拟机对交易执行成功或失败通常都有明确的判断,比如智能合约虚拟机运行到某一行代码确定判断条件不满足,就会导致交易执行失败,或者智能合约的GAS(交易执行的金额)耗尽,即决定执行步骤数量的参数已耗尽(每一步执行步骤都会耗用GAS),也会导致交易执行失败。其中,智能合约的GAS,用于防止有人恶意转账,比如每次转0.00000001这种操作,防止这类操作恶意长时间占用资源。
步骤130,区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果,进行写块操作。
应理解,当目标提议中的交易被执行完成且都被成功执行之后,区块链节点可以基于目标提议中的一个或多个交易进行写块操作。区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果,进行写块操作,包括:
区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果,确定目标提议中包含的交易是否完成交易执行操作;
若区块链中的节点确定目标提议中包含的交易完成交易执行操作,则基于目标提议中包含的交易记录在第二缓存中的交易执行结果,生成记录有目标提议中包含的交易的交易执行结果的区块。
当目标提议中包括目标交易这一个交易时,区块链节点便可以基于目标交易在第二缓存中的交易执行结果进行写块操作;而当目标提议中除目标交易还包括其他交易时,区块链节点在确定第二缓存中的交易执行结果包括目标提议中所有交易的交易执行结果,便可以基于目标提议中的交易记录在第二缓存中的交易执行结果,进行写块操作。
可选地,区块链节点基于目标提议中包含的交易记录在第二缓存中的交易执行结果,生成记录有目标提议中包含的交易的交易执行结果的区块,包括:
区块链节点基于目标提议中包含的交易记录在第二缓存中的交易执行结果,生成默克树,并得到默克树的根哈希;
区块链节点基于默克树和默克树的根哈希,生成记录有默克树和默克树的根哈希的区块。
当目标提议中包括目标交易一个交易时,区块链节点基于目标提议中包含的交易记录在第二缓存中的交易执行结果,生成默克树,并得到默克树的根哈希,具体则可以基于目标交易的哈希值生成默克树,并将目标交易的哈希值作为该默克树的哈希根。此时,区块链节点可以将目标交易和目标交易的哈希值写入到生成的区块的区块体中,将目标交易的哈希值作为默克树的哈希根写入到生成的区块的区块头中。
当目标提议中包括除目标交易以外的其他交易时,比如还包括交易a和交易b,那么区块链节点基于目标提议中包含的交易记录在第二缓存中的交易执行结果,生成默克树,并得到默克树的根哈希,具体则可以基于目标交易的哈希值、交易a的哈希值、以及交易b的哈希值,生成默克树,并将目标交易的哈希值和交易a的哈希值进行哈希得到第一哈希值,再将第一哈希值和交易b的哈希值进行哈希得到第二哈希值,该第二哈希值即为该默克树的哈希根。此时,区块链节点可以将目标交易、交易a和交易b、以及这几个交易的哈希值,以及第一哈希值和第二哈希值写入到生成的区块的区块体中,将第二哈希值作为默克树的哈希根写入到生成的区块的区块头中。
可选地,区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果,进行写块操作之后,本说明书实施例提供的方法还包括:
区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果,更新区块链节点的世界状态。
其中,区块链节点的世界状态为区块链节点本节点中默克尔帕特里夏树(MerklePatricia Tree,MPT)树存储的内容,MPT树中存储的内容为区块链节点在生成区块时更新的。
下面以图2所示的一种实际场景中的流程示意图,对本说明书实施例提供的区块链中的智能合约执行方法进行详细说明,如图2所示,包括:
S21,在合约交易达成共识之后,区块链节点开始调用智能合约执行一笔合约交易;
S22,区块链节点将合约交易在交易执行过程中产生的交易执行结果更新到第一缓存即dirty_cache中;
S23,区块链节点通过智能合约判断合约交易是否执行成功;
S24,若合约交易执行成功,则区块链节点将第一缓存中存储的合约交易的交易执行结果更新到第二缓存即pending_cache中;
S25,如果合约交易执行失败,则区块链节点清空第一缓存即dirty_cache中存储的合约交易的交易执行结果;或者,如果合约执行成功,在将第一缓存中存储的合约交易的交易执行结果更新到第二缓存即pending_cache中之后,则区块链节点清空第一缓存即dirty_cache中存储的合约交易的交易执行结果;
S26,区块链节点基于第二缓存即pending_cache中存储的合约交易的交易执行结果,进行写块操作;
S27,当写块成功之后,区块链节点基于第二缓存即pending_cache中存储的合约交易的交易执行结果,更新本节点的世界状态。
在目标提议达成共识后,区块链节点调用智能合约执行目标提议中的目标交易,并将执行过程中产生的目标交易的交易执行结果存储在第一缓存中,其中,目标交易用于执行目标智能合约;如果目标交易执行成功,则区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中;区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果进行写块操作。也就是说,采用两级缓存记录交易执行过程中产生的交易执行结果,在未确定交易是否执行成功时,将交易执行过程中产生的交易执行结果存储在第一缓存中,在交易执行成功的情况下,才将交易执行结果存储在第二缓存中。那么,在交易执行失败的情况下,即需要进行回滚修改历史操作时,只需要对第一缓存中记录的数据进行修改,而不需要逐个修改第二缓存中记录的数据。这一方面节省了缓存空间;另一方面在交易执行失败时,也提高了回滚修改历史操作的效率。
图3是本说明书实施例提供的区块链系统300的结构示意图。请参考图3,在一种软件实施方式中,区块链系统300可包括联盟链中的区块链节点301,其中:
区块链中的节点301,在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;以及基于所述第二缓存中的交易执行结果进行写块操作。
可选地,在一种实施方式中,在所述区块链节点301将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中之后,所述区块链节点301还用于:
清空所述第一缓存中存储的所述目标交易的交易执行结果。
可选地,在一种实施方式中,若所述区块链节点确定所述目标交易执行失败,则清空所述第一缓存中存储的所述目标交易的交易执行结果。
可选地,在一种实施方式中,若所述区块链节点确定所述智能合约的逻辑错误和/或所述智能合约的GAS耗尽,则清空所述第一缓存中存储的所述目标交易的交易执行结果。
可选地,在一种实施方式中,所述区块链节点301,用于:
基于所述目标提议中的交易记录在所述第二缓存中的交易执行结果,确定所述目标提议中包含的交易是否完成交易执行操作;
若确定所述目标提议中包含的交易完成交易执行操作,则基于所述目标提议中包含的交易记录在所述第二缓存中的交易执行结果,生成记录有所述目标提议中包含的交易的交易执行结果的区块。
可选地,在一种实施方式中,所述区块链节点301,用于:
所述区块链节点基于所述目标提议中包含的交易记录在所述第二缓存中的交易执行结果,生成默克树,并得到所述默克树的根哈希;
所述区块链节点基于所述默克树和所述默克树的根哈希,生成记录有所述默克树和所述默克树的根哈希的区块。
可选地,在一种实施方式中,所述区块链节点301,用于:
所述区块链节点基于所述目标提议中的交易记录在所述第二缓存中的交易执行结果,更新所述区块链节点的世界状态。
区块链系统300能够实现图1~图2的方法实施例的方法,具体可参考图1~图2所示实施例的区块链中的智能合约执行方法,不再赘述。
图4是本说明书的一个实施例提供的电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成区块链节点。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
在目标提议达成共识后,调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;
如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;
基于所述第二缓存中的交易执行结果进行写块操作。
采用两级缓存记录交易执行过程中产生的交易执行结果,在未确定交易是否执行成功时,将交易执行过程中产生的交易执行结果存储在第一缓存中,在交易执行成功的情况下,才将交易执行结果存储在第二缓存中。那么,在交易执行失败的情况下,即需要进行回滚修改历史操作时,只需要对第一缓存中记录的数据进行修改,而不需要逐个修改第二缓存中记录的数据。这一方面节省了缓存空间;另一方面在交易执行失败时,也提高了回滚修改历史操作的效率。
上述如本说明书图1~图2所示实施例揭示的区块链中的智能合约执行方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1~图2的区块链中的智能合约执行方法,本说明书在此不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1~图2所示实施例的方法,并具体用于执行以下操作:
在目标提议达成共识后,调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;
如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;
基于所述第二缓存中的交易执行结果进行写块操作。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。