本说明书公开了一种区块链中的智能合约执行方法、系统及电子设备,该方法包括:在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;如果所述目标交易执行成功,则所述区块链节点将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;所述区块链节点基于所述第二缓存中的交易执行结果进行写块操作。
【技术实现步骤摘要】
一种区块链中的智能合约执行方法、系统和电子设备
本文件涉及计算机
,尤其涉及一种区块链中的智能合约执行方法、系统和电子设备。
技术介绍
在区块链的智能合约的执行中过程,通常会存在事务回滚的问题。比如,当一笔交易调用智能合约进行交易执行时,可能由于运行逻辑错误或GAS耗尽,导致交易执行失败。由于智能合约在进行交易执行过程中会对交易双方的账号状态进行修改。而当交易执行失败时,则需要回滚修改历史,也就是将智能合约修改过的交易双方的账号状态恢复为修改之前的状态。目前,在以太坊中,通常是使用操作日志(changelog)来记录所有修改记录,而当需要回滚修改历史时,则需要对操作日志中记录的所有修改记录进行逐个撤销来恢复修改之前的状态。然而这种回滚修改历史的方式效率比较低,每次操作都需要复制一份修改之前的数据,当需要回滚时也需要逐个撤销修改操作。
技术实现思路
本说明书实施例提供了一种区块链中的智能合约执行方法、系统和电子设备,以解决现有的区块链中的智能合约执行过程中,一旦交易执行失败,采用回滚修改历史的方式效率较低的问题。为解决上述技术问题,本说明书实施例是这样实现的:第一方面,提出了一种区块链中的智能合约执行方法,包括:在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;如果所述目标交易执行成功,则所述区块链节点将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;所述区块链节点基于所述第二缓存中的交易执行结果进行写块操作。第二方面,提出了一种区块链系统,包括:区块链中的节点,在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;以及基于所述第二缓存中的交易执行结果进行写块操作。第三方面,提出了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:在目标提议达成共识后,调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;基于所述第二缓存中的交易执行结果进行写块操作。第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:在目标提议达成共识后,调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;如果所述目标交易执行成功,则将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;基于所述第二缓存中的交易执行结果进行写块操作。本说明书实施例采用上述技术方案至少可以达到下述技术效果:在目标提议达成共识后,区块链节点调用智能合约执行目标提议中的目标交易,并将执行过程中产生的目标交易的交易执行结果存储在第一缓存中,其中,目标交易用于执行目标智能合约;如果目标交易执行成功,则区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中;区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果进行写块操作。也就是说,采用两级缓存记录交易执行过程中产生的交易执行结果,在未确定交易是否执行成功时,将交易执行过程中产生的交易执行结果存储在第一缓存中,在交易执行成功的情况下,才将交易执行结果存储在第二缓存中。那么,在交易执行失败的情况下,即需要进行回滚修改历史操作时,只需要对第一缓存中记录的数据进行修改,而不需要逐个修改第二缓存中记录的数据。这一方面节省了缓存空间;另一方面在交易执行失败时,也提高了回滚修改历史操作的效率。附图说明此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:图1为本说明书一个实施例提供的一种区块链中的智能合约执行方法的实施流程示意图;图2为本说明书一个实施例提供的区块链中的智能合约执行方法应用在实际场景中的流程示意图;图3为本说明书一个实施例提供的一种区块链系统的结构示意图;图4为本说明书一个实施例提供的一种电子设备的结构示意图。具体实施方式为使本文件的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本文件一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文件保护的范围。以下结合附图,详细说明本说明书各实施例提供的技术方案。如
技术介绍
中所述,在区块链智能合约的执行过程中,通常会存在事务回滚的问题。即在智能合约执行过程中会对交易双方的合约状态进行修改,比如甲的合约状态中余额为90元,乙的合约状态中余额为80元,甲向乙转账10元,产生一笔交易,该交易在执行过程中,甲的合约状态的余额就由90元变为80元,乙的合约状态中余额由80元变为90元。如果智能合约执行这笔交易的过程中,由于智能合约内部的逻辑错误或者GAS耗尽,则会导致这笔交易执行失败。在这种情况下,如果交易执行失败,则需要进行回滚操作,即将修改后的甲的合约状态和乙的合约状态恢复为修改之前的状态,即将修改后的甲的合约状态由余额80元修改为余额90元,将修改后的乙的合约状态由余额90元修改为余额80元。由于在以太坊中,是使用操作日志(changelog)来记录每一次的修改记录,那么在交易执行失败后,则需要逐个修改操作日志中记录的修改记录。在交易次数不多的情况下,这种修改方式可能不会耗费太多的时间,然而,在交易次数很多的情况下,比如以甲和乙的合约状态为例,如果甲和乙之间存在多次交易,在某一次交易执行出错后,其之后的每一笔交易都会有问题,那么修改起来将会耗费大量的时间和精力。为解决现有的区块链中的智能合约执行过程中,一旦交易执行失败,采用回滚修改历史的方式效率较低的问题,本说明书实施例提供一种区块链中的智能合约执行方法。在目标提议达成共识后,区块链节点调用智能合约执行目标提议中的目标交易,并将执行过程中产生的目标交易的交易执行结果存储在第一缓存中,其中,目标交易用于执行目标智能合约;如果目标交易执行成功,则区块链节点将第一缓存中存储的目标交易的交易执行结果存储到第二缓存中;区块链节点基于目标提议中的交易记录在第二缓存中的交易执行结果进行写块操作。由于能够采用两级缓存记录交易本文档来自技高网...
【技术保护点】
1.一种区块链中的智能合约执行方法,包括:/n在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;/n如果所述目标交易执行成功,则所述区块链节点将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;/n所述区块链节点基于所述目标提议中的交易记录在所述第二缓存中的交易执行结果,进行写块操作。/n
【技术特征摘要】
1.一种区块链中的智能合约执行方法,包括:
在目标提议达成共识后,区块链节点调用智能合约执行所述目标提议中的目标交易,并将执行过程中产生的所述目标交易的交易执行结果存储在第一缓存中;
如果所述目标交易执行成功,则所述区块链节点将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中;
所述区块链节点基于所述目标提议中的交易记录在所述第二缓存中的交易执行结果,进行写块操作。
2.如权利要求1所述的方法,在所述区块链节点将所述第一缓存中存储的所述目标交易的交易执行结果存储到第二缓存中之后,所述方法还包括:
所述区块链节点清空所述第一缓存中存储的所述目标交易的交易执行结果。
3.如权利要求1所述的方法,所述方法还包括:
若所述区块链节点确定所述目标交易执行失败,则清空所述第一缓存中存储的所述目标交易的交易执行结果。
4.如权利要求3所述的方法,若所述区块链节点确定所述目标交易执行失败,则清空所述第一缓存中存储的所述目标交易的交易执行结果,包括:
若所述区块链节点确定所述智能合约的逻辑错误和/或所述智能合约的GAS耗尽,则清空所述第一缓存中存储的所述目标交易的交易执行结果。
5.如权利要求1所述的方法,所述区块链节点基于所述目标提议中的交易记录在所述第二缓存中的交易执行结果,进行写块操作,包括:
所述区块链节点基于所述目标提议中的交易记录在所述第二缓存中的交易执行结果,确定所述目标提议中包含的交易是否完成交易执行操作;
若所述区块链中的节点确定所述目标提议中包含的交易完成交易执行操作,则基于所述目标提议中包含的交易记录在所述第二缓存中的交易执行结果,生成记录有所述目标提议中包含的交易的交易执行结果的区块。
6.如权利要求5所述的方法,所述区块链节点基于所述目标提议中包含的交易记录在所述第二缓存中的交易执行结果,生成记录有所述目标提议中包含的交易的交易执行结果的区块,包括:
所述区块...
【专利技术属性】
技术研发人员:李帅,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。