一种基于区块链系统的交易处理方法及装置与流程

文档序号:18303829发布日期:2019-07-31 10:37阅读:152来源:国知局
一种基于区块链系统的交易处理方法及装置与流程
本发明涉及金融科技(fintech)
技术领域
,尤其涉及一种基于区块链系统的交易处理方法及装置。
背景技术
:随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融行业正在逐步向金融科技(fintech)转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。区块链系统中通常可以设置有多个节点,多个节点之间可以互相通信,一般来说,客户端设备可以向区块链系统中的某一个节点发送交易请求,该节点接收到交易请求后,可以处理交易,并可以通过与其它节点的共识,生成交易对应的区块信息。在实际操作中,由于业务类型的多样性,区块链系统在一段时间内处理的交易会非常多,因此,如何合理处理每一个交易,对于区块链系统的发展是非常重要的。现有技术中,节点在接收到客户端发送的交易请求后,通常可以对交易请求进行解析,获取交易数据,比如交易的发起方、交易的接收方和交易所属的业务类型等;进一步地,节点可以将交易数据与区块链系统处理的历史交易的交易数据进行对比,若确定交易与历史交易发生冲突,则可以根据区块链系统中预设的冲突处理指令对交易进行处理。然而,采用该种方式,交易数据中包括的数据量较多,可能需要耗费较长的时间完成交易数据与历史交易的交易数据的对比过程,通常情况下,区块链系统中的交易可以被频繁触发,因此采用上述方式可能并不能及时地处理多个交易,导致区块链系统中交易处理的效率较差。综上,目前亟需一种基于区块链系统的交易处理方法,用以提高区块链系统中交易处理的效率。技术实现要素:本发明实施例提供一种基于区块链系统的交易处理方法及装置,用以提高区块链系统中交易处理的效率。第一方面,本发明实施例提供的一种基于区块链系统的交易处理方法,所述方法包括:区块链系统中的第一节点接收客户端设备发送的交易请求,所述交易请求包括第一交易的标识和冲突处理指令,所述冲突处理指令包括所述第一交易与历史交易存在冲突时对所述第一交易的处理方式,和/或,所述第一交易与历史交易不存在冲突时对所述第一交易的处理方式;进一步地,所述第一节点根据所述第一交易的标识,确定所述第一交易的冲突结果,并根据所述第一交易的冲突结果和所述冲突处理指令,对所述第一交易进行处理,所述第一交易的冲突结果用于指示所述第一交易与历史交易是否存在冲突。上述技术方案中,通过设置交易的标识,可以采用对比交易的标识的方式对第一交易进行冲突检测,而无需对比交易数据,从而可以使得对交易进行冲突检测的过程更为快速,提高区块链系统中交易处理的效率;且,由于冲突处理指令由客户端设备进行设置,因此可以基于不同的业务场景和客户端设备的要求设置不同的冲突处理指令,也就是说,上述技术方案中的交易处理方法更加符合实际情况。可选地,所述第一节点根据所述第一交易的标识,确定所述第一交易的冲突结果,包括:所述第一节点首先根据所述第一交易的标识确定所述第一交易的键值;进一步地,所述第一节点从第一预设数据库中获取目标历史交易的标识,并将所述目标历史交易的标识存储到预设内存空间;其中,所述第一预设数据库包括所述多个历史交易的标识和所述多个历史交易的键值,所述目标历史交易为所述第一预设数据库中键值与所述第一交易的键值匹配的历史交易;所述第一节点若确定所述预设内存空间中存在与所述第一交易的标识匹配的目标历史交易,则确定所述第一交易与历史交易存在冲突。本发明实施例中,由于第一预设数据库的响应速度通常较慢,因此上述技术方案预先将第一交易的标识与第一内存空间中存储的目标历史交易的标识进行对比,而并未直接将第一交易的标识与第一预设数据库中存储的历史交易的标识进行对比,可以提高冲突检测过程的响应速度。一方面,基于键值对第一预设数据库中的目标历史交易进行筛选,可以降低筛选过程所占用的内存,提高筛选效率;另一方面,若预设内存空间中存在与第一交易的标识匹配的目标历史交易,则可以直接确定第一交易与历史交易冲突,从而可以避免执行后续的冲突检测过程,提高冲突检测的效率。可选地,所述方法还包括:所述第一节点若确定预设内存空间中不存在与所述第一交易的标识匹配的目标历史交易,则将第一交易的标识输入到第一预设过滤模型,所述第一预设过滤模型为使用所述多个历史交易的交易信息训练得到的,每个历史交易的交易信息包括所述每个历史交易的标识、键值、交易数据、冲突处理指令、冲突次数;进一步地,若所述第一预设过滤模型输出的结果为所述第一交易与历史交易不存在冲突,则所述第一节点确定第一交易与历史交易不存在冲突。上述技术方案中,在基于内存中的目标历史交易对第一交易进行第一次冲突检测后,可以使用第一预设过滤模型对第一交易进行第二次冲突检测,从而可以提高冲突检测的准确率;且,第二次冲突检测的过程也可以是在预设内存空间中执行的,从而可以避免直接第一预设数据库中的历史交易进行冲突检测,从而提高检测效率。也就是说,上述技术方案中,通过基于预设内存空间中的两次检测过程,可以将较大部分的冲突交易检测出来,在提高检测效率的同时提高检测准确性。可选地,所述方法还包括:若所述第一预设过滤模型输出的结果为所述第一交易与历史交易存在冲突,则所述第一节点将所述第一交易的标识与所述第一预设数据库中的一个或多个历史交易的标识进行对比,若确定所述第一预设数据库中存在与所述第一交易的标识匹配的历史交易,则确定所述第一交易与历史交易存在冲突;若确定所述第一预设数据库中不存在与所述第一交易的标识匹配的历史交易,则确定所述第一交易与历史交易不存在冲突。上述技术方案中,若基于预设内存空间中的两次冲突检测过程均未检测出第一交易的冲突结果,则可以基于第一预设数据库中的历史交易对第一交易进行冲突检测,从而可以获取到第一交易的冲突结果,且使得检测得到的第一交易的冲突结果较为准确。可选地,所述冲突处理指令包括以下任意一项或任意多项:所述第一交易与历史交易存在冲突时拒绝执行所述第一交易、所述第一交易与历史交易存在冲突时执行所述第一交易、所述第一交易与历史交易存在冲突时将所述第一交易重定向到容错合约、所述第一交易与历史交易不存在冲突时执行所述第一交易;所述第一节点根据所述第一交易的冲突结果和所述冲突处理指令,对所述第一交易进行处理,包括:若所述第一交易与历史交易不存在冲突,且所述冲突处理指令为所述第一交易与历史交易不存在冲突时执行所述第一交易,或者,若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时执行所述第一交易,则所述第一节点执行所述第一交易;若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时将所述第一交易重定向到容错合约,则所述第一节点获取所述冲突处理指令中包括的容错合约的地址,并向所述客户端设备发送所述容错合约的地址;若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时拒绝执行所述第一交易,则所述第一节点向所述客户端设备发送冲突指示值,所述冲突指示值用于指示所述第一交易与所述历史交易存在冲突。上述技术方案中,冲突处理指令是由客户端设备设置的,因此可以基于客户端设备的要求或者业务场景设置符合实际情况的冲突处理指令,相应地,基于冲突处理指令处理第一交易,可以使得第一交易的处理结果满足客户端设备的需要,且可以更加符合实际情况。可选地,所述第一节点执行所述第一交易,包括:所述第一节点若确定所述区块链系统中对所述第一交易达成共识的节点的数量大于或等于预设阈值,则生成所述第一交易对应的区块信息;所述第一节点根据所述第一交易的交易信息更新所述第一预设数据库和/或所述预设内存空间。上述技术方案中,通过使用第一交易的区块信息更新第一预设数据库和预设内存空间,可以使用更新后的第一预设数据库和预设内存空间对下一个交易进行冲突检测,从而使得交易处理过程满足实时性要求,提高交易处理的准确性。可选地,所述第一节点生成所述第一交易对应的区块信息之后,还包括:所述第一节点向所述客户端设备发送所述第一交易对应的区块信息,所述区块信息用于所述客户端设备对所述第一交易进行修正。上述技术方案中,由于冲突处理指令为客户端设备设置的,因此可能会存在某些发生冲突的交易仍然被处理,通过在处理完交易后使用客户端设备对交易进行修正,可以避免交易处理过程出现较大的失误,提高区块链系统的业务处理能力和业务处理的准确性。可选地,所述第一预设数据库中还存储有所述多个历史交易数据对应的第一校验值,所述第一校验值为所述第一节点使用预设校验算法对所述多个历史交易数据进行校验得到的;所述第一节点生成所述第一交易对应的区块信息,包括:所述第一节点生成所述第一交易对应的初始区块信息,斌点使用所述预设校验算法对所述第一校验值和所述第一交易对应的交易信息进行校验,得到第二校验值;进一步地,所述第一节点将所述第二校验值添加到所述初始区块信息中,得到所述第一交易对应的区块信息。上述技术方案中,第一校验值可以用于标识区块链系统所处理过的历史交易,通过在处理第一交易后,使用第一交易更新第一校验值得到第二校验值,一方面,可以使得区块链系统中的多个节点基于相同的第二校验值实现共识,从而提高区块链系统中交易处理的准确性;另一方面,可以使得区块链系统在处理交易的过程中实时更新区块链系统所处理过的历史交易,从而提高后续处理交易的准确性。可选地,所述第一节点根据所述第一交易的交易信息更新所述第一预设数据库和/或所述预设内存空间,包括:所述第一节点使用所述第一交易的标识更新所述第一预设过滤模型,得到第二预设过滤模型,并将预设内存空间和/或所述第一预设数据库中的所述第一预设过滤模型更新为所述第二预设过滤模型;进一步地,所述第一节点将所述第一交易对应的交易信息和所述第二校验值添加到所述第一预设数据库中,并使用所述第二校验值更新所述预设内存空间中的所述第一校验值。上述技术方案中,通过使用第一交易的区块信息依次更新第一预设数据库和预设内存空间中的第一预设过滤模型、历史交易信息和历史交易的校验值,可以采用基于预设内存空间的两次冲突检测方法和基于第一预设数据库的依次冲突检测方法对下一个交易进行冲突检测,从而可以使得采用上述方法对每一个交易进行冲突检测,提高交易处理的效率。第二方面,本发明实施例提供一种基于区块链系统的交易处理方法,所述方法包括:客户端设备向区块链系统中的第一节点发送交易请求,所述交易请求包括第一交易的标识和冲突处理指令;进一步地,所述客户端设备接收所述第一节点发送的容错合约的地址,并根据所述容错合约的地址,调用容错处理模块对所述第一交易进行修正。可选地,所述方法还包括:所述客户端设备接收所述第一节点发送的所述第一交易对应的区块信息;进一步地,所述客户端设备获取所述区块信息中存储的所述第一交易的标识,若确定所述客户端设备的第二预设数据库中存在标识与所述第一交易的标识匹配的历史交易,则使用所述容错处理模块按照预设处理规则对所述第一交易进行修正;所述第二预设数据库中存储有所述客户端设备处理的多个历史交易。可选地,所述预设处理规则包括输出日志记录、输出第二预设数据库的交易记录、无效交易、撤销交易、冻结后续交易中的任意一项或任意多项。第三方面,本发明实施例提供一种基于区块链系统的交易处理装置,所述装置包括:接收模块,用于接收客户端设备发送的交易请求,所述交易请求包括第一交易的标识和冲突处理指令;所述冲突处理指令包括所述第一交易与历史交易存在冲突时对所述第一交易的处理方式,和/或,所述第一交易与历史交易不存在冲突时对所述第一交易的处理方式;冲突检测模块,用于根据所述第一交易的标识,确定所述第一交易的冲突结果,所述第一交易的冲突结果用于指示所述第一交易与历史交易是否存在冲突;处理模块,用于根据所述第一交易的冲突结果和所述冲突处理指令,对所述第一交易进行处理。可选地,所述冲突检测模块用于:根据所述第一交易的标识确定所述第一交易的键值;进一步地,从第一预设数据库中获取目标历史交易的标识,并将所述目标历史交易的标识存储到所述预设内存空间;所述第一预设数据库包括所述多个历史交易的标识和所述多个历史交易的键值,所述目标历史交易为所述第一预设数据库中键值与所述第一交易的键值匹配的历史交易;若确定预设内存空间中存在与所述第一交易的标识匹配的目标历史交易,则确定所述第一交易与历史交易存在冲突。可选地,所述冲突检测模块还用于:若确定预设内存空间中不存在与所述第一交易的标识匹配的目标历史交易,则将第一交易的标识输入到第一预设过滤模型,所述第一预设过滤模型为使用所述多个历史交易的交易信息训练得到的,每个历史交易的交易信息包括所述每个历史交易的标识、键值、交易数据、冲突处理指令、冲突次数;进一步地,若所述第一预设过滤模型输出的结果为所述第一交易与历史交易不存在冲突,则确定第一交易与历史交易不存在冲突。可选地,所述冲突检测模块还用于:若所述第一预设过滤模型输出的结果为所述第一交易与历史交易存在冲突,则将所述第一交易的标识与所述第一预设数据库中的一个或多个历史交易的标识进行对比,若确定所述第一预设数据库中存在与所述第一交易的标识匹配的历史交易,则确定所述第一交易与历史交易存在冲突;若确定所述第一预设数据库中不存在与所述第一交易的标识匹配的历史交易,则确定所述第一交易与历史交易不存在冲突。可选地,所述冲突处理指令包括以下任意一项或任意多项:所述第一交易与历史交易存在冲突时拒绝执行所述第一交易、所述第一交易与历史交易存在冲突时执行所述第一交易、所述第一交易与历史交易存在冲突时将所述第一交易重定向到容错合约、所述第一交易与历史交易不存在冲突时执行所述第一交易;所述处理模块用于:若所述第一交易与历史交易不存在冲突,且所述冲突处理指令为所述第一交易与历史交易不存在冲突时执行所述第一交易,或者,若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时执行所述第一交易,则执行所述第一交易;若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时将所述第一交易重定向到容错合约,则获取所述冲突处理指令中包括的容错合约的地址,并向所述客户端设备发送所述容错合约的地址;若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时拒绝执行所述第一交易,则向所述客户端设备发送冲突指示值,所述冲突指示值用于指示所述第一交易与所述历史交易存在冲突。可选地,所述处理模块用于:若确定所述区块链系统中对所述第一交易达成共识的节点的数量大于或等于预设阈值,则生成所述第一交易对应的区块信息;进一步地,根据所述第一交易的交易信息更新所述第一预设数据库和/或所述预设内存空间。可选地,所述处理模块生成所述第一交易对应的区块信息之后,还用于:向所述客户端设备发送所述第一交易对应的区块信息,所述区块信息用于所述客户端设备对所述第一交易进行修正。可选地,所述第一预设数据库中还存储有所述多个历史交易数据对应的第一校验值,所述第一校验值为所述第一节点使用预设校验算法对所述多个历史交易数据进行校验得到的;所述处理模块具体用于:生成所述第一交易对应的初始区块信息;进一步地,使用所述预设校验算法对所述第一校验值和所述第一交易对应的交易信息进行校验,得到第二校验值,并将所述第二校验值添加到所述初始区块信息中,得到所述第一交易对应的区块信息。可选地,所述处理模块用于:使用所述第一交易的标识更新所述第一预设过滤模型,得到第二预设过滤模型,并将预设内存空间和/或所述第一预设数据库中的所述第一预设过滤模型更新为所述第二预设过滤模型;进一步地,将所述第一交易对应的交易信息和所述第二校验值添加到所述第一预设数据库中,并使用所述第二校验值更新所述预设内存空间中的所述第一校验值。第四方面,本发明实施例提供一种基于区块链系统的交易处理装置,所述装置包括:收发模块,用于向区块链系统中的第一节点发送交易请求,所述交易请求包括第一交易的标识和冲突处理指令;以及,接收所述第一节点发送的容错合约的地址;处理模块,用于根据所述容错合约的地址,调用容错处理模块对所述第一交易进行修正。可选地,所述接收模块还用于:接收所述第一节点发送的所述第一交易对应的区块信息;所述处理模块还用于:获取所述区块信息中存储的所述第一交易的标识,若确定客户端设备的第二预设数据库中存在标识与所述第一交易的标识匹配的历史交易,则使用所述容错处理模块按照预设处理规则对所述第一交易进行修正;所述第二预设数据库中存储有所述客户端设备处理的多个历史交易。可选地,所述预设处理规则包括输出日志记录、输出第二预设数据库的交易记录、无效交易、撤销交易、冻结后续交易中的任意一项或任意多项。第五方面,本发明实施例还提供一种计算机可读存储介质,包括指令,当其在计算机的处理器上运行时,使得计算机的处理器执行如上述第一方面和/或第二方面任一项所述的方法。第六方面,本发明实施例还提供一种计算机程序产品,当其在计算机的处理器上运行时,使得计算机的处理器执行上述第一方面和/或第二方面任一项所述的方法。本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种区块链系统的系统架构示意图;图2为本发明实施例提供的一种基于区块链系统的交易处理方法对应的流程示意图;图3为本发明实施例中提供的一种客户端设备与第一节点的结构示意图;图4为本发明实施例中提供的一种基于区块链系统的交易处理装置的结构示意图;图5为本发明实施例中提供的一种基于区块链系统的交易处理装置的结构示意图;图6为本发明实施例中提供的一种终端设备的结构示意图;图7为本发明实施例中提供的一种的后端设备的结构示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。金融科技(fintech)领域中通常涉及到大量的交易,通过采用区块链技术实现对交易的处理,可以使得不同节点之间的交易顺利执行。因此,提高保证区块链系统中交易处理的效率,对于金融行业的发展尤为重要。图1为本发明实施例中的交易处理方法所适用的一种系统架构示意图,如图1所示,该系统架构中可以包括区块链系统中的一个或多个节点(比如图1所示意出的节点101、节点102、节点103与节点104)和客户端设备200。其中,区块链系统中的一个或多个节点可以共同维护区块链系统。客户端设备200可以通过接入网络而与区块链系统中的一个或多个节点进行通信。本发明实施例中,区块链系统可以是由多个节点组成的点对点(peertopeer,p2p)网络。p2p是一种运行在传输控制协议(transmissioncontrolprotocol,tcp)协议之上的应用层协议,在区块链系统中的节点可以彼此对等,系统中不存在中心节点,因此每个节点都可以随机地连接其它节点。以客户端设备200与节点102之间的交易过程为例,具体实施中,客户端设备200可以向节点102发送交易请求,节点102接收到交易请求后,可以通过解析交易请求获取到交易数据,并可以向区块链系统中的其它节点(即节点101、节点103和节点104)发送交易数据。进一步地,节点101~节点104可以基于交易数据进行共识,若共识通过,则可以生成交易对应的区块信息;若共识不通过,则节点102(或者也可以为其它节点)可以向客户端设备200发送交易响应消息,交易响应消息用于指示交易失败。本发明实施例中,区块链系统中的节点可以具有多种功能,比如,路由功能、交易功能、区块链功能和共识功能等。具体地说,区块链系统中的节点可以把其他节点传送过来的交易数据等信息传送给更多的节点以实现节点之间的通信;或者,区块链系统中的节点可以用于支持用户进行交易;或者,区块链系统中的节点可以用于记录历史上的所有交易;或者,区块链系统中的节点可以通过验证和记录交易生成区块链中的新区块。实际应用中,路由功能是区块链系统中的每个节点必须具有的功能,而其它功能可由本领域技术人员根据实际需要进行设置。需要说明的是,区块链系统中的一个节点可以在一台物理机(服务器)上,且一个节点具体可以是指服务器中运行的一个进程或者一系列进程。比如,区块链1网络中的节点101可以为一个服务器上运行的一个进程,或者也可以为是指节点所在的服务器,具体不作限定。基于图1所示意的系统架构,图2为本发明实施例提供的一种基于区块链系统的交易处理方法对应的流程示意图,该方法包括:步骤201,客户端设备设置第一交易的标识和冲突处理指令。本发明实施例中,客户端设备若确定需要执行第一交易,则可以设置第一交易的标识。在一种可能的实现方式中,客户端设备可以根据第一交易所属的业务场景设置第一交易的标识,第一交易所属的业务场景可以包括第一交易所属的业务和第一交易在业务中的流程(即业务流程)。举例来说,在一个示例中,订单业务的执行流程可以包括创建订单流程、存储订单流程、查询订单流程等,若第一交易所属的业务流程为创建订单流程,则可以使用第一交易创建得到的订单号作为第一交易的标识。其中,订单号的长度可以由本领域技术人员根据经验进行设置,比如可以为小于或等于256字节的可变长度的数据,或者也可以为固定长度的数据,具体不作限定。在另一个示例中,交互数据业务的执行流程可以包括双方传递数据流程、一方向其他用户传递数据流程等,若第一交易所属的业务流程为双方传递数据流程,则第一交易的标识可以包括数据发送方的标识、数据接收方的标识和数据的校验值。比如,若第一交易为用户a1向用户a2传递数据的交易,则第一交易的标识可以包括用户a1的地址、用户a2的地址和数据的hash值。其中,用户a1和/或用户a2的地址可以为账号名,或者也可以为邮件地址,或者还可以为用户名,具体不作限定。进一步地,客户端设备还可以设置第一交易对应的冲突处理指令,冲突处理指令可以包括第一交易与历史交易存在冲突时对第一交易的处理方式,和/或,第一交易与历史交易不存在冲突时对第一交易的处理方式。在一个示例中,第一交易与历史交易存在冲突时对第一交易的处理方式可以包括执行第一交易、将第一交易重定向到容错合约、拒绝执行第一交易中的任意一项;第一交易与历史交易不存在冲突时对第一交易的处理方式可以包括执行第一交易。在一种可能的实现方式中,客户端设备发送的冲突处理指令可以包括处理指示值和附加数据。表1为本发明实施例提供的几种可能的冲突处理指令的示意表。表1:几种冲突处理指令的示意冲突处理指令含义1拒绝执行2执行3:http://address/0x289重定向到容错合约4拒绝执行且发出告警5执行且打印日志0执行如表1所示,本发明实施例中定义了第一交易与历史交易存在冲突时的5种冲突处理指令,分别为“1”、“2”、“3:http://address/0x289”、“4”、“5”,还定义了第一交易与历史交易不存在冲突时的1种冲突处理指令,即“0”。其中,冲突处理指令“0”、“1”、“2”、“4”、“5”的附加数据均可以为空,冲突处理指令“3:http://address/0x289”的处理指示值可以为3,附加数据可以为http://address/0x289。具体地说,若第一交易与历史交易存在冲突,且冲突处理指令为“1”,则第一节点可以拒绝执行第一交易;若第一交易与历史交易不存在冲突,且冲突处理指令为“0”,或者第一交易与历史交易存在冲突,且冲突处理指令为“2”,则第一节点可以执行第一交易;若第一交易与历史交易存在冲突,且冲突处理指令为“3”,则第一节点可以执行第一交易,并可以将第一交易发送给合约地址为http://address/0x289的容错处理装置进行修正;若第一交易与历史交易存在冲突,且冲突处理指令为“4”,则第一节点可以拒绝执行第一交易,且可以发出告警信息;若第一交易与历史交易存在冲突,且冲突处理指令为“5”,则第一节点可以执行第一交易,且可以打印第一交易冲突的日志记录,以便于后续排错。需要说明的是,本发明实施例中所述的冲突具体为同一个业务流程中生成的多个交易的冲突,若同一个业务流程中生成的多个交易的标识相同,则多个交易可以是冲突的;若不同业务的同一流程中生成的多个交易的标识相同,或者同一个业务的不同流程中生成的多个交易的标识相同,则多个交易是不冲突的。举例说明,交易b1为业务a1的第二流程中生成的交易,交易b2为业务a1的第二流程中生成的交易,交易b3为业务a1的第一流程中生成的交易,交易b4为业务a2的第二流程中生成的交易,则由于交易b1与交易b3属于同一业务的不同流程,因此即使交易b1与交易b3的标识相同,交易b1与交易b3也不冲突;相应地,由于交易b1与交易b4属于不同业务的同一流程,因此即使交易b1与交易b4的标识相同,交易b1与交易b4也不冲突;而针对于交易b1与b2,由于交易b1与交易b2属于同一业务的同一流程,因此若交易b1与交易b2的标识相同,则交易b1与交易b2冲突。以第一交易为创建订单号的交易为例,由于需要保证同一个业务的创建订单流程中不同交易创建得到的订单号不同,因此订单号可以唯一标识一个交易;若不同交易的订单号相同,则说明不同交易是冲突的。为了生成不冲突的订单号,可以设置相邻交易之间的订单号是递增的,或者也可以在不同订单号中添加随机数序列或交易的哈希值。本发明实施例中,通过以业务场景为维度,可以使得客户端设备为同一业务场景的交易采用同一种标识设置方式,从而可以使得交易的标识能够表征交易在同一业务场景包括的多个交易中的唯一性;也就是说,本发明实施例通过客户端设备设置交易的标识,可以采用对比交易的标识的方式对交易进行冲突检测,而无需对比具体的交易数据,从而可以使得对交易进行冲突检测的过程更为快速,提高区块链系统中交易处理的效率;且,冲突处理指令可以由客户端设备基于实际业务场景进行设置,从而可以使得交易处理过程更加符合实际需要。步骤202,客户端设备向区块链系统中的第一节点发送交易请求。此处,客户端设备可以通过多种方式向第一节点发送交易请求,比如可以通过有线方式向第一节点发送交易请求,或者也可以通过无线方式向第一节点发送交易请求,具体不作限定。在一个示例中,交易请求中可以包括第一交易的标识和冲突处理指令。在另一个示例中,交易请求中可以包括第一交易的标识、冲突处理指令和第一交易的交易数据,第一交易的交易数据可以包括第一交易的键值、账号、合约地址等。步骤203,第一节点接收客户端设备发送的交易请求,并根据第一交易的标识,确定第一交易的冲突结果。具体实施中,第一节点可以解析交易请求,获取第一交易的标识和冲突处理指令(或者第一交易的标识、交易数据和冲突处理指令)。进一步地,第一节点可以根据第一交易的标识,确定第一交易与历史交易是否存在冲突;其中,历史交易可以包括第一节点在接收到第一交易的交易请求之前所处理过的全部交易。需要说明的是,第一节点在解析交易请求之前,还可以将交易请求发送给区块链系统中的其它节点,以使其它节点执行第一交易,如此,区块链系统中的多个节点可以在执行第一交易后,进行区块共识过程。其它节点执行第一交易的过程可以参照第一节点执行第一交易的过程进行实现,此处不再赘述。本发明实施例中,历史交易可以存储在第一节点的第一预设数据库中,基于表1所示意的冲突处理指令,表2为一种第一预设数据库中存储的历史交易的示意表。表2:一种第一预设数据库中存储的历史交易的示意交易标识合约地址键值交易账号冲突处理指令冲突次数a1x1http://address/0x75510.33y112a2x2http://address/0x73314.24y100a3x3http://address/0x5552.56y131a4x4http://address/0x75510.33y143a5x5http://address/0x76532.54y127a6x6http://address/0x75510.33y100a7x7http://address/0x7369.56y112如表2所示,第一预设数据库中可以存储有每个历史交易的标识、合约地址、键值、交易账号、冲突处理指令和冲突次数。比如,交易的标识为a1x1的历史交易(为便于描述,简称为历史交易a1x1)的合约地址可以为http://address/0x755,键值可以为10.33,交易账号可以为y1,冲突处理指令可以为1(即该历史交易与该历史交易之前的历史交易存在冲突,且已拒绝处理该历史交易),冲突次数为2(即已存在两次冲突)。具体地说,交易的合约地址可以为实现业务逻辑的合约在区块链上的地址,可以为一段固定长度的数据,交易的合约地址可以为交易所属的业务的标识;如表2所示,历史交易a1x1、历史交易a4x4与历史交易a6x6的合约地址相同,则可以说明历史交易a1x1、历史交易a4x4与历史交易a6x6所属的业务相同。相应地,交易的键值可以为对交易的合约地址和交易的标识进行联合键值计算得到的,键值可以为长度小于255字节的二进制数据;基于合约地址与交易的标识得到的键值,可以使得冲突检测过程以业务流程为维度。如表2所示,历史交易a1x1、历史交易a4x4与历史交易a6x6的键值相同,可以说明历史交易a1x1、历史交易a4x4与历史交易a6x6为同一个业务的同一个流程中的交易,比如可以均为创建订单的流程中的交易。以历史交易a1x1为例,历史交易a1x1的交易账号可以由历史交易a1x1的哈希值表示,第一节点可以根据历史交易a1x1的交易账号获取到历史交易a1x1的交易信息,比如交易发起方、交易接收方、交易处理回执,交易所属的区块、交易对应的区块信息等。历史交易a1x1的冲突处理指令可以是指发送历史交易a1x1的客户端设备配置的冲突处理指令,而冲突次数可以是指接收到第一交易的交易请求之前,历史交易a1x1与第一预设数据库中的历史交易存在冲突的次数,每确定历史交易a1x1冲突一次,则可以将历史交易a1x1的冲突次数加1。在一种可能的实现方式中,第一节点可以将第一交易的标识与第一预设数据库中的一个或多个历史交易的标识进行对比,若确定第一预设数据库中存在与第一交易的标识匹配的历史交易,则可以确定第一交易与历史交易存在冲突;若确定第一预设数据库中不存在与第一交易的标识匹配的历史交易,则可以确定第一交易与历史交易不存在冲突。以表2所示意的第一预设数据库为例,若第一交易的标识为a1x1,则可以确定第一交易与历史交易存在冲突,若第一交易的标识为a8x8,则可以确定第一交易与历史交易不存在冲突。在该实现方式中,通过直接将第一交易的标识与第一预设数据库中的历史交易的标识进行对比,经过一轮冲突检测过程即可确定出第一交易与历史交易是否存在冲突,从而可以简化冲突检测的过程,便于实现。在另一种可能的实现方式中,第一节点可以对第一交易依次执行第一轮冲突检测~第三轮冲突检测中的一轮冲突检测或多轮冲突检测,其中,第一轮冲突检测与第二轮冲突检测的过程可以均在预设内存空间中执行,第三轮冲突检测的过程可以在第一预设数据库中执行。下面具体描述第一轮冲突检测~第三轮冲突检测的实现过程。第一轮冲突检测具体实施中,第一节点可以从第一交易的交易数据中获取第一交易的合约地址,进而可以对第一交易的标识和第一交易的合约地址进行联合键值计算,得到第一交易的键值,并可以从第一预设数据库中获取与第一交易的键值匹配的目标历史交易;举例来说,参照表2所示意的第一预设数据库,若第一交易的键值为10.33,则目标历史交易可以包括历史交易a1x1、历史交易a4x4与历史交易a6x6。进一步地,第一节点可以将目标历史交易的标识存储到预设内存空间,或者也可以将第一预设数据库中存储的目标历史交易的全部信息(即交易标识、合约地址、键值、交易账号、冲突处理指令和冲突次数)存储到预设内存空间,具体不作限定。在执行第一轮冲突检测时,第一节点可以将第一交易的标识与预设内存空间中存储的目标历史交易的标识进行对比,若确定预设内存空间中存在与第一交易的标识匹配的目标历史交易,则可以确定第一交易与历史交易存在冲突;若确定预设内存空间中不存在与第一交易的标识匹配的目标历史交易,则可以执行第二轮冲突检测。在第一轮冲突检测中,由于目标历史交易的键值与第一交易的键值匹配,因此目标历史交易与第一交易可以为同一个业务的同一个流程中的交易。一方面,通过基于与第一交易所属的业务流程相同的目标历史交易对第一交易进行第一轮冲突检测,可以减少冲突检测过程中对比交易的次数,提高冲突检测的效率。另一方面,通过预先将目标历史交易存储到预设内存空间,可以使得对比交易的过程在预设内存空间中执行,而无需在第一预设数据库中执行,从而可以提高冲突检测过程的响应速度。本发明实施例中,第一轮冲突检测可以适用于冲突可能性较大的场景,若第一轮冲突检测的检测结果为冲突,则可以确定第一交易与历史交易存在冲突,通过执行第一轮冲突检测,可以将冲突可能性较大的交易检测出来,从而可以减少到第一预设数据库中查询历史交易的次数,提高冲突检测的计算速度,节省系统开销。第二轮冲突检测本发明实施例中,第一预设数据库中还可以设置有第一预设过滤模型,若第一节点接收到客户端设备发送的第一交易的交易请求,则可以获取第一预设数据库中存储的第一预设过滤模型,并将第一预设过滤模型存储到预设内存空间中。相应地,若第一轮冲突检测的检测结果为第一交易与历史交易不冲突(即预设内存空间中不存在与第一交易的标识匹配的目标历史交易),则第一节点可以将第一交易的标识输入到预设内存空间中存储的第一预设过滤模型中。进一步地,第一预设过滤模型可以对第一交易执行第二轮冲突检测,并可以输出第一交易的冲突结果;第一交易的冲突结果可以为第一结果和第二结果中的任意一种,第一结果用于指示第一交易与历史交易不存在冲突,第二结果用于指示第一交易与历史交易可能存在冲突。如此,第一节点将第一交易输入第一预设过滤模型后,若输出结果为第一结果,则可以确定第一交易与历史交易不存在冲突;若输出结果为第二结果,则可以执行第三轮冲突检测。具体实施中,第一预设过滤模型的模型结构可以由本领域技术人员根据经验进行设置,具体不作限定。作为一种示例,第一预设过滤模型可以为基于比特位得到的模型,比如布隆过滤器;根据实验发现,若布隆过滤器的内存较小,会增大将输出结果误判为第二结果的概率,若布隆过滤器的内存较大,会造成系统空间的浪费。因此,本发明实施例经过实验确定,将布隆过滤器的内存设置为200m、且基于最近3年内的历史交易的交易信息(包括历史交易的标识、键值、交易数据、冲突处理指令、冲突次数等)对布隆过滤器进行训练时,可以使得布隆过滤器的输出结果的误判率小于1%。通过设置布隆过滤器的内存大小以及训练布隆过滤器的历史交易,既可以节省系统空间,又能够提高输出结果的准确性。需要说明的是,上述仅是一种示例性的简单说明,本领域技术人员也可以根据实际需要设置布隆过滤器的内存和/或训练布隆过滤器的历史交易,上述设置并不构成对本方案的限定。在具体实施中,布隆过滤器的内存可以大于200m,或者也可以小于200m,比如可以为400m或100m;相应地,训练布隆过滤器的历史交易可以为最近2年内的历史交易,或者也可以为最近5年内的历史交易,具体不作限定。本发明实施例中,第二轮冲突检测可以适用于冲突可能性较小的场景,若第二轮冲突检测的检测结果为不冲突,则可以确定第一交易与历史交易不存在冲突,通过执行第二轮冲突检测,可以将冲突可能性较小的交易检测出来。本发明实施例中,在到第一预设数据库中执行冲突检测之前,预先通过基于预设内存空间中的第一轮冲突检测和第二轮冲突检测,可以得到大多数交易的冲突结果,从而可以减少到第一预设数据库中查询历史交易的次数,提高冲突检测的计算速度和效率,节省系统开销。第三轮冲突检测若第二轮冲突检测的输出结果为第一交易与历史交易冲突(即第一预设过滤模型输出的结果为第一交易与历史交易存在冲突),则第一节点可以执行第三轮冲突检测。具体地说,第一节点可以将第一交易的标识与第一预设数据库中的历史交易的标识进行对比,若确定第一预设数据库中存在与第一交易的标识匹配的历史交易,则可以确定第一交易与历史交易存在冲突;若确定第一预设数据库中不存在与第一交易的标识匹配的历史交易,则可以确定第一交易与历史交易不存在冲突。本发明实施例中,通过采用第一轮冲突检测和第二轮冲突检测即可检测出大部分的冲突交易,由于第一轮冲突检测和第二轮冲突检测均是在预设内存空间中执行的,从而可以使得响应速度较快,提高冲突检测的效率。且,第三轮冲突检测可以适用于任意场景,若基于第一轮冲突检测和第二轮冲突检测均未得到第一交易的冲突结果,则可以基于第三轮冲突检测将第一交易与第一预设数据库中的历史交易进行对比,从而可以得到第一交易的冲突结果。本发明实施例中,通过采用第一轮冲突检测~第三轮冲突检测,可以避免直接到第一预设数据库中查询历史交易,从而可以在降低系统开销、提高冲突检测效率的同时,得到较为准确的冲突结果。步骤204,第一节点根据第一交易的冲突结果和冲突处理指令,对第一交易进行处理,得到第一交易的处理结果。根据表1所示意的冲突处理指令,表3为第一节点根据第一交易的冲突结果和冲突处理指令对第一交易执行的几种处理方式的示意表。表3:第一节点处理第一交易的几种方式的示意如表1和表3所示,若第一交易的冲突结果和冲突处理指令满足如下所示的第一种条件~第四种条件中的任一种条件,则第一节点可以执行第一交易:第一种条件,冲突结果为第一交易与历史交易不存在冲突,且冲突处理指令为第一交易与历史交易不存在冲突时执行第一交易(即“0”);第二种条件,冲突结果为第一交易与历史交易存在冲突,且冲突处理指令为第一交易与历史交易存在冲突时执行第一交易(即“2”);第三种条件,冲突结果为第一交易与历史交易存在冲突,且冲突处理指令为第一交易与历史交易存在冲突时将第一交易重定向到容错合约(即“3”);第四种条件,冲突结果为第一交易与历史交易存在冲突,且冲突处理指令为第一交易与历史交易存在冲突时执行第一交易且打印日志(即“5”)。需要说明的是,若第一交易的冲突结果和冲突处理指令满足第三种条件,则第一节点可以在处理完第一交易后,生成第一日志,并可以将处理第一交易的时间戳信息、交易数据和冲突指示值添加到第一日志中,进而保存第一日志,以便于运维人员执行排错工作。相应地,若第一交易的冲突结果和冲突处理指令满足如下所示的第五种条件或第六种条件,则第一节点可以拒绝执行第一交易:第五种条件,第一交易与历史交易存在冲突,且冲突处理指令为第一交易与历史交易存在冲突时拒绝执行第一交易(即“1”);第六种条件,第一交易与历史交易存在冲突,且冲突处理指令为第一交易与历史交易存在冲突时拒绝执行第一交易,且告警(即“3”)。需要说明的是,若第一交易的冲突结果和冲突处理指令满足第六种条件,则第一节点可以在拒绝处理第一交易的同时,生成告警信息,并可以向客户端设备发送告警信息,以便于运维人员执行排错工作。下面分别从两种情形描述第一节点处理第一交易的具体实现过程。情形一在情形一中,第一节点可以执行第一交易,即第一交易的冲突结果和冲突处理指令满足上述第一种条件,或者满足第二种条件,或者满足第三种条件,或者满足第四种条件。在一个示例中,第一节点若确定执行第一交易,则可以先对预设内存空间中包括的目标历史交易进行更新。在一个示例中,若预设内存空间中不存在与第一交易的标识相同的历史交易,则第一节点可以将第一交易添加到预设内存空间中,如此,预设内存空间中包括的目标历史交易中可以包括第一交易,第一节点若在执行第一交易的过程中接收到与第一交易的标识相同的第二交易,则通过第一轮冲突检测,即可确定第二交易与第一交易冲突,从而可以无需执行与第一交易重复的第二交易。在另一个示例中,若预设内存空间中存在与第一交易的标识相同的目标历史交易,则第一节点可以更新预设数据库中存储的目标历史交易的信息,比如可以更新目标历史交易的冲突次数、冲突处理指令等,如此,可以使得基于预设内存空间中的历史交易确定的预设过滤模型更为准确。本发明实施例中,通过在确定执行第一交易时更新预设内存空间,可以使得第一节点的交易处理过程更高效。进一步地,第一节点可以与区块链系统中的其它节点进行通信,执行第一交易的共识过程,若确定区块链系统中对第一交易达成共识的节点的数量大于或等于预设阈值,则可以生成第一交易对应的区块信息,并可以使用第一交易对应的区块信息更新第一预设数据库和/或预设内存空间,比如可以根据第一交易的区块信息更新第一预设数据库,或者也可以根据第一交易的区块信息更新预设内存空间,或者还可以根据第一交易的区块信息更新第一预设数据库和预设内存空间,具体不作限定。相应地,若确定区块链系统中对第一交易达成共识的节点的数量小于预设阈值,则可以向客户端设备发送执行第一交易失败的消息。其中,预设阈值可以有本领域技术人员根据经验设置,比如可以为区块链系统所包括的节点数量的3/4,具体不作限定。本发明实施例中,生成第一交易对应的区块信息的方式可以有多种,在一种可能的实现方式中,第一预设数据库中可以存储有第一校验值,第一校验值可以为第一节点使用预设校验算法对多个历史交易进行校验得到的,比如可以为多个历史交易的哈希值。具体实施中,在确定执行第一交易之前,第一节点可以从第一预设数据库中获取第一校验值,并可以将第一校验值存储在预设内存空间中;进一步地,在执行第一交易的过程中,第一节点可以预先生成第一交易对应的初始区块信息,并可以使用预设校验算法对第一校验值和第一交易进行校验,得到第二校验值;进一步地,第一节点可以将第二校验值添加到初始区块信息中,并可以与区块链系统中的其它节点进行共识,若共识通过,则可以得到第一交易对应的区块信息,并可以使用第二校验值更新预设内存空间中存储的第一校验值。在一个示例中,可以采用循环hash算法确定第二校验值,其程序实现过程可以如下所示:根据第一行程序,第一节点确定执行交易data[0]、历史交易data[1]和历史交易data[2];根据第二行程序,第一节点可以获取预设内存空间中存储的校验值hash_new;根据第三行~第四行程序,第一节点可以对交易data[0]取哈希值,得到交易data[0]的校验值hash(data[1]),进而可以对第一校验值hash_new和交易data[0]的校验值hash(data[1])取哈希值,得到包括交易data[0]在内的历史交易的校验值;相应地,第一节点可以根据包括交易data[0]在内的历史交易的校验值和交易data[1],得到包括交易data[0]与交易data[1]在内的历史交易的校验值,进而可以根据包括交易data[0]与交易data[1]在内的历史交易的校验值和交易data[2],得到包括交易data[0]、交易data[1]与交易data[2]在内的历史交易的校验值;根据第五行程序,可以使用包括交易data[0]、交易data[1]与交易data[2]在内的历史交易的校验值更新预设内存空间中存储的历史交易的校验值。需要说明的是,上述仅是一种示例性的简单说明,其所列举的采用循环hash算法确定第二校验值的方式仅是为了便于说明方案,并不构成对方案的限定。在具体实施中,确定第二校验值的方式可以由本领域技术人员根据经验进行设置,比如可以采用merkleroot算法确定第二校验值,或者可以采用非循环hash算法确定第二校验值,具体不作限定。本发明实施例中,第一校验值可以用于标识区块链系统所处理过的历史交易,通过在执行第一交易后,使用第一交易更新第一校验值得到第二校验值,一方面,可以使得区块链系统中的多个节点基于相同的第二校验值实现共识,从而提高区块链系统中交易处理的准确性;另一方面,可以使得区块链系统在处理交易的过程中实时更新区块链系统所处理过的历史交易,从而提高后续处理交易的准确性。若第一节点成功执行第一交易,则第一交易对应的区块信息可以被存储在区块链系统中,如此,第一交易的处理结果可以包括第一交易对应的区块信息。进一步地,第一节点可以使用据第一交易的区块信息更新第一预设数据库和/或预设内存空间。在一种可能的实现方式中,第一节点可以使用第一交易的标识训练第一预设过滤模型,得到第二预设过滤模型,并可以将第一预设数据库中存储的第一预设过滤模型更新为第二预设过滤模型;且,第一节点可以将第一交易对应的交易信息添加到第一预设数据库中,并可以使用上述确定得到的第二校验值更新第一预设数据库中存储的第一校验值;进一步地,第一节点可以使用第二预设过滤模型和第二校验值分别更新预设内存空间中存储的第一预设过滤模型和第一校验值。相应地,若第一节点未成功执行第一交易(比如节点共识未通过),则第一交易的处理结果可以包括第一指示信息,第一指示信息用于指示第一交易处理失败。在一个示例中,由于第一节点在确定执行第一交易时,即已将第一交易添加到预设内存空间中,因此,若未成功执行第一交易,则第一节点可以将预设内存空间中存储的第一交易删除,从而可以避免后续获取到的与第一交易的标识相同的交易无法通过第一轮冲突检测,保证后续交易处理的准确性。本发明实施例中,通过使用第一交易的区块信息依次更新第一预设数据库和预设内存空间中的第一预设过滤模型、历史交易信息和历史交易的校验值,可以采用基于更新后的预设内存空间和第一预设数据库对下一个交易进行冲突检测,从而可以提高冲突检测的准确性。需要说明的是,若第一交易的冲突结果和冲突处理指令满足上述第四种条件,则第一节点在执行第一交易后,还可以获取交易请求中包括的容错合约的地址,并可以根据容错合约的地址调用容错处理模块对第一交易进行修正。如此,第一交易的处理结果中还可以包括容错合约的地址,容错合约的地址用于调用客户端设备中的容错处理模块对第一交易进行修正。情形二在情形二中,第一节点可以拒绝执行第一交易,即第一交易的冲突结果和冲突处理指令可以满足上述第五种条件或上述第六种条件。具体实施中,若第一节点拒绝执行第一交易,则第一节点可以生成冲突指示码,冲突指示码用于指示第一交易与历史交易存在冲突,且第一节点未执行第一交易。因此,第一交易的处理结果中可以包括冲突指示码。步骤205,第一节点向客户端设备发送第一信息或第二信息。具体实施中,第一交易的处理结果可以包括第一交易的区块信息、第一指示信息、冲突指示码、容错合约的地址中的任意一项或任意多项。若第一交易的处理结果包括第一交易的区块信息和/或容错合约的地址,说明第一交易已被第一节点成功执行,则第一节点可以向客户端设备发送第一信息;若第一交易的处理结果包括第一指示信息或冲突指示码,说明第一交易未被第一节点成功执行,则第一节点可以向客户端设备发送第二信息。本发明实施例中,客户端设备设置的冲突处理指令中存在“第一节点与历史交易存在冲突时执行第一交易”、“第一节点与历史交易存在冲突时重定向到容错模块”和“第一节点与历史交易存在冲突时执行第一交易且打印日志”这三种情况,即第一交易与历史交易存在冲突时第一交易也可能被第一节点成功执行。因此,为了避免第一交易存在较大的业务失误,第一节点可以在成功执行第一交易后,向客户端设备发送第一信息。在一个示例中,第一信息中可以包括第一交易的区块信息和/或容错合约的地址,如此,客户端设备接受到第一信息后,可以根据第一信息对第一交易进行修正。相应地,若第一交易的处理结果包括第一指示信息,则说明第一交易已通过冲突检测,但未被第一节点成功执行;若第一交易的处理结果包括冲突指示值,则说明第一交易未通过冲突处理指令,且未被第一节点成功执行。由于第一交易未被成功执行,因此不会存在较大的业务失误,因此,第一节点可以向客户端设备发送第二信息,第二信息可以用于指示第一交易未被成功执行。步骤206,客户端设备接收第一节点发送的第一信息或第二信息,并调用容错处理模块对第一交易进行修正。具体实施中,客户端设备中可以设置有第二预设数据库,第二预设数据库中可以存储有客户端设备处理过的全部历史交易。在一种可能的实现方式中,若客户端设备接收到第一节点发送的第一信息,则说明第一交易已被第一节点成功执行,如此,客户端设备可以基于第二预设数据库对第一交易进行冲突检测,确定第一交易与客户端设备处理过的历史交易是否存在冲突。在一个示例中,客户端设备可以直接将第一交易的标识与第二预设数据库中存储的历史交易的标识进行对比,确定第一交易与客户端设备处理过的历史交易是否存在冲突;在另一个示例中,客户端设备可以对第一交易依次执行第一轮冲突检测~第三轮冲突检测,从而确定第一交易与客户端设备处理过的历史交易是否存在冲突。此处,上述两个示例可以参照步骤203中确定第一交易与第一节点处理过的历史交易是否存在冲突的过程进行实现,具体不再赘述。进一步地,若第二预设数据库中不存在标识与第一交易的标识匹配的历史交易,则说明客户端设备之前未处理过与第一交易的标识相同的交易;如此,客户端设备可以将第一交易添加到第二预设数据库中。相应地,若第二预设数据库中存在标识与第一交易的标识匹配的历史交易,则说明客户端设备之前已处理过与第一交易的标识相同的交易;如此,客户端设备可以使用容错处理模块按照预设处理规则对第一交易进行修正。其中,预设处理规则可以包括输出日志记录、输出第二预设数据库的交易记录、无效交易、撤销交易、冻结后续交易中的任意一项或任意多项。具体实施中,容错处理模块可以预先判断第一交易所属的业务流程,若确定第一交易为非关键型业务流程中的交易,则容错处理模块可以采用多种方式对第一交易进行修正。在一个示例中,容错处理模块可以获取第一交易的日志信息和/或数据库信息,并可以将第一交易的日志信息和/或数据库信息发送给运维人员进行维护;在另一个示例中,容错处理模块可以根据容错合约的地址,按照容错合约中设置的预设处理规则对第一交易进行后续处理。由于非关键性业务流程中的交易对业务的影响较小,因此采用上述方式对非关键性业务流程中的交易进行修正,可以提高系统的处理效率。相应地,若确定第一交易为关键型业务流程中的交易,则容错处理模块可以根据第一交易所属的业务流程对第一交易进行修正。比如,若第一交易为创建新的订单x,则容错处理模块可以将订单x的状态设置为无效状态;若第一交易为在账户q1中添加收益l1,则容错处理模块可以从账户q1上减去收益l1;若第一交易为账户q1向账户q2转账资金l2,则容错处理模块可以将账户q2上中的资金l退回账户q1;若第一交易为重复从账户q3中非正常地划出资产n,则容错处理模块可以将账户q3冻结。需要说明的是,上述仅是一种示例性的简单说明,其所列举的对第一交易进行修正的方式仅是为了便于说明方案,并不构成对方案的限定。在具体实施中,对第一交易进行修正的方式可以由本领域技术人员根据经验进行设置,或者可以根据实际业务需要进行设置,具体不作限定。本发明实施例中,由于冲突处理指令为客户端设备设置的,因此可能会存在某些发生冲突的交易仍然被处理,通过在处理完交易后向客户端设备发送区块信息,可以使得客户端设备对交易进行修正,从而可以避免交易处理过程出现较大的失误,提高区块链系统的业务处理能力和业务处理的准确性。在另一种可能的实现方式中,客户端设备若接收到第一节点发送的第二信息,则可以调用容错处理模块获取第一交易的相关信息,比如第一交易的时间戳、交易数据、冲突结果和冲突处理指令等;进一步地,容错处理模块可以将第一交易的相关信息存储到日志信息或数据库信息中,以便运维人员根据日志信息或数据库信息进行排错。本发明的上述实施例中,区块链系统中的第一节点接收客户端设备发送的交易请求,交易请求包括第一交易的标识和冲突处理指令,冲突处理指令包括第一交易与历史交易存在冲突时对第一交易的处理方式,和/或,第一交易与历史交易不存在冲突时对第一交易的处理方式;进一步地,第一节点根据第一交易的标识,确定第一交易的冲突结果,并根据第一交易的冲突结果和冲突处理指令,对第一交易进行处理;其中,第一交易的冲突结果用于指示第一交易与历史交易是否存在冲突。本发明实施例中,通过设置交易的标识,可以采用对比交易的标识的方式对第一交易进行冲突检测,而无需对比交易数据,从而可以使得对交易进行冲突检测的过程更为快速,提高区块链系统中交易处理的效率;且,由于冲突处理指令由客户端设备进行设置,因此可以基于不同的业务场景和客户端设备的要求设置不同的冲突处理指令,也就是说,上述技术方案中的交易处理方法更加符合实际情况。基于图1所示意的系统架构和图2所示意的交易处理方法,图3为本发明实施例提供的一种客户端设备与第一节点的结构示意图。如图3所示,第一节点中可以设置有冲突检测单元、交易执行单元和更新单元,冲突检测单元、交易执行单元和更新单元之间可以依次连接。且,第一节点中还可以设置有预设内存空间、第一预设过滤模型和第一预设数据库;相应地,客户端设备中可以设置有第二预设数据库。基于图3所示意的客户端设备与第一节点对第一交易进行处理的过程可以如下列步骤1~步骤6所示:步骤1,客户端设备向第一节点中设置的冲突检测单元发送交易请求,交易请求中包括第一交易的标识与第一交易的冲突处理指令。步骤2,冲突检测单元接收客户端设备发送的交易请求后,获取第一交易的标识,并基于预设内存空间、第一预设过滤模型和第一预设数据库中的任意一个或任意多个对第一交易进行冲突检测。比如,在一个示例中,冲突检测单元可以仅基于预设内存空间对第一交易进行冲突检测,或者仅基于第一预设过滤模型对第一交易进行冲突检测,或者仅基于第一预设数据库对第一交易进行冲突检测;在另一个示例中,冲突检测单元可以基于预设内存空间和第一预设过滤模型对第一交易进行冲突检测,或者基于预设内存空间和第一预设数据库对第一交易进行冲突检测,或者基于第一预设过滤模型和第一预设数据库对第一交易进行冲突检测;在又一个示例中,冲突检测单元可以基于预设内存空间、第一预设过滤模型和第一预设数据库对第一交易进行冲突检测。在一种可能的实现方式中,冲突检测单元可以基于预设内存空间对第一交易执行第一轮冲突检测。若第一轮冲突检测确定预设内存空间中存在与第一交易的标识匹配的历史交易,则冲突检测单元可以确定第一交易与历史交易存在冲突;若第一轮冲突检测确定预设内存空间中不存在与第一交易的标识匹配的历史交易,则冲突检测单元可以基于第一预设过滤模型对第一交易执行第二轮冲突检测。若第二轮冲突检测确定第一交易与历史交易不存在冲突,则冲突检测单元可以确定第一交易与历史交易不存在冲突;若第二轮冲突检测确定第一交易与历史交易存在冲突,则冲突检测单元可以基于第一预设数据库对第一交易执行第三轮冲突检测。若第三轮冲突检测确定第一预设数据库中存在与第一交易的标识匹配的历史交易,则冲突检测单元可以确定第一交易与历史交易存在冲突;若第一轮冲突检测确定第一预设数据库中不存在与第一交易的标识匹配的历史交易,则冲突检测单元可以确定第一交易与历史交易不存在冲突。若确定第一交易与历史交易存在冲突,且冲突处理指令为“第一交易与历史交易存在冲突时拒绝执行第一交易”,则第一节点与客户端设备可以执行如下步骤3.1和步骤4.1:步骤3.1,冲突检测单元(或第一节点)向客户端设备发送冲突指示码。步骤4.1,客户端设备接收冲突检测单元发送的冲突指示码,并调用容错处理模块对第一交易进行冲突处理。在一个示例中,容错处理模块可以获取第一交易的时间戳、交易数据和冲突指示码,并可以将第一交易的时间戳、交易数据和冲突指示码记录到日志信息或数据库中。相应地,若确定第一交易与历史交易不存在冲突,且冲突处理指令为“第一交易与历史交易不存在冲突时执行第一交易”,或者第一交易与历史交易存在冲突,且冲突处理指令为“第一交易与历史交易存在冲突时执行第一交易”,或者第一交易与历史交易存在冲突,且冲突处理指令为“第一交易与历史交易存在冲突时重定向到容错处理模块”,则第一节点与客户端设备可以执行如下步骤3.2、步骤4.2~步骤6、步骤4.1:步骤3.2,冲突检测单元将第一交易发送给交易执行单元,以使交易执行单元执行第一交易。具体实施中,交易执行单元可以使用智能合约执行第一交易,并可以通过网络与区块链系统中的其它节点进行共识。若达成共识的节点的数量大于或等于预设阈值,则交易执行单元可以生成第一交易对应的区块信息,并可以将第一交易对应的区块信息存储到底层的区块链中;若达成共识的节点的数量小于预设阈值,则交易执行单元(或第一节点)可以向客户端设备发送第一交易执行失败的信息,以使客户端设备调用容错处理模块处理第一交易(该过程未在图3中示出)。步骤4.2,交易执行单元确定成功执行第一交易后,向更新单元发送更新请求,更新请求中包括第一交易对应的区块信息。步骤5,更新单元接收到交易执行单元发送的更新请求后,使用第一交易对应的区块信息更新预设内存空间、第一预设过滤模型和第一预设数据库。具体地说,更新单元可以将第一交易添加到预设内存空间和第一预设数据库中,并可以基于第一预设数据库中包括的历史交易和第一交易更新第一预设过滤模型。步骤6,第一节点若确定预设内存空间、第一预设过滤模型和第一预设数据库更新完成,则向客户端设备发送交易响应消息,交易响应消息中包括第一节点对应的区块信息。如图3所示,客户端设备中可以设置有第二预设数据库,若客户端设备接收到第一节点对应的区块信息,则可以从第一节点对应的区块信息中获取第一节点的标识,进而可以将第一节点的标识与第二预设数据库中存储的多个历史交易进行匹配。若确定第二预设数据库中不存在与第一交易的标识相同的历史交易,则客户端设备可以将第一交易添加到第二预设数据库中;若确定第二预设数据库中存在与第一交易的标识相同的历史交易,则客户端设备可以调用容错处理模块对第一交易进行修正,具体实现过程可以参照步骤206进行实现,此处不再赘述。本发明实施例中,通过在第一节点中设置冲突检测单元,可以使得第一交易的冲突检测过程与第一交易的交易执行过程分别在两个流程中执行,从而可以实现冲突检测、和合约计算、区块共识的解耦,提高交易处理的效率。针对图2所示意的方法流程,本发明实施例还提供一种基于区块链系统的交易处理装置,该装置的具体内容可以参照上述方法实施。图4为本发明实施例提供的一种基于区块链系统的交易处理装置的结构示意图,包括:收发模块401,用于接收客户端设备发送的交易请求,所述交易请求包括第一交易的标识和冲突处理指令;所述冲突处理指令包括所述第一交易与历史交易存在冲突时对所述第一交易的处理方式,和/或,所述第一交易与历史交易不存在冲突时对所述第一交易的处理方式;冲突检测模块402,用于根据所述第一交易的标识,确定所述第一交易的冲突结果,所述第一交易的冲突结果用于指示所述第一交易与历史交易是否存在冲突;处理模块403,用于根据所述第一交易的冲突结果和所述冲突处理指令,对所述第一交易进行处理。可选地,所述交易请求还包括第一交易的合约地址;所述冲突检测模块402用于:根据所述第一交易的标识与所述第一交易的合约地址,确定所述第一交易的键值;从第一预设数据库中获取目标历史交易的标识,并将所述目标历史交易的标识存储到预设内存空间;所述第一预设数据库包括多个历史交易的标识和所述多个历史交易的键值,所述目标历史交易为所述第一预设数据库中键值与所述第一交易的键值匹配的历史交易;若确定所述预设内存空间中存在与所述第一交易的标识匹配的目标历史交易,则确定所述第一交易与历史交易存在冲突。可选地,所述冲突检测模块402还用于:若确定预设内存空间中不存在与所述第一交易的标识匹配的目标历史交易,则将所述第一交易的标识输入到第一预设过滤模型;所述第一预设过滤模型为使用所述多个历史交易的交易信息训练得到的,每个历史交易的交易信息包括所述每个历史交易的标识、键值、交易数据、冲突处理指令和冲突次数;若所述第一预设过滤模型的输出结果为所述第一交易与历史交易不存在冲突,则确定所述第一交易与历史交易不存在冲突。可选地,所述冲突检测模块402还用于:若所述第一预设过滤模型的输出结果为所述第一交易与历史交易存在冲突,则将所述第一交易的标识与所述第一预设数据库中的多个历史交易的标识进行对比,若确定所述第一预设数据库中存在与所述第一交易的标识匹配的历史交易,则确定所述第一交易与历史交易存在冲突;若确定所述第一预设数据库中不存在与所述第一交易的标识匹配的历史交易,则确定所述第一交易与历史交易不存在冲突。可选地,所述第一交易与历史交易不存在冲突时的冲突处理指令包括执行所述第一交易;所述第一交易与历史交易存在冲突时的冲突处理指令包括以下任意一项:拒绝执行所述第一交易、执行所述第一交易、将所述第一交易重定向到容错合约;所述处理模块403用于:若所述第一交易与历史交易不存在冲突,且所述冲突处理指令为所述第一交易与历史交易不存在冲突时执行所述第一交易,或者,若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时执行所述第一交易,则执行所述第一交易;若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时将所述第一交易重定向到容错合约,则执行所述第一交易,并获取所述冲突处理指令中包括的容错合约的地址,向所述客户端设备发送所述容错合约的地址;若所述第一交易与历史交易存在冲突,且所述冲突处理指令为所述第一交易与历史交易存在冲突时拒绝执行所述第一交易,则向所述客户端设备发送冲突指示值,所述冲突指示值用于指示所述第一交易与所述历史交易存在冲突。可选地,所述处理模块403用于:若确定所述区块链系统中对所述第一交易达成共识的节点的数量大于或等于预设阈值,则生成所述第一交易对应的区块信息;根据所述第一交易的区块信息更新所述第一预设数据库和/或所述预设内存空间。可选地,所述处理模块403生成所述第一交易对应的区块信息之后,还用于:向所述客户端设备发送所述第一交易对应的区块信息,所述第一交易对应的区块信息用于所述客户端设备对所述第一交易进行修正。可选地,所述第一预设数据库中存储有第一校验值,所述第一校验值为所述第一节点使用预设校验算法对所述第一预设数据库中存储的所述多个历史交易进行校验得到的;所述处理模块403具体用于:生成所述第一交易对应的初始区块信息;使用所述预设校验算法对所述第一校验值和所述第一交易进行校验,得到第二校验值;将所述第二校验值添加到所述初始区块信息中,得到所述第一交易对应的区块信息。可选地,所述处理模块403用于:使用所述第一交易的标识训练所述第一预设过滤模型,得到第二预设过滤模型,并将预设内存空间和/或所述第一预设数据库中的所述第一预设过滤模型更新为所述第二预设过滤模型;将所述第一交易添加到所述第一预设数据库中,并使用所述第二校验值更新所述预设内存空间和/或所述第一预设数据库中的所述第一校验值。图5为本发明实施例提供的一种基于区块链系统的交易处理装置的结构示意图,包括:配置模块501,用于配置第一交易的标识和冲突处理指令;收发模块502,用于向区块链系统中的第一节点发送交易请求,所述交易请求包括所述第一交易的标识和所述冲突处理指令;以及,接收所述第一节点发送的容错合约的地址;修正模块503,用于根据所述容错合约的地址调用容错处理模块对所述第一交易进行修正。可选地,所述收发模块502还用于:接收所述第一节点发送的所述第一交易对应的区块信息;所述修正模块503还用于:解析所述第一交易对应的区块信息,获取所述第一交易的标识;若确定所述客户端设备的第二预设数据库中存在标识与所述第一交易的标识匹配的历史交易,则使用所述容错处理模块按照预设处理规则对所述第一交易进行修正;所述第二预设数据库中存储有所述客户端设备处理的多个历史交易。可选地,所述预设处理规则包括输出日志记录、输出第二预设数据库的交易记录、无效交易、撤销交易、冻结后续交易中的任意一项或任意多项。从上述内容可以看出:本发明的上述实施例中,区块链系统中的第一节点接收客户端设备发送的交易请求,交易请求包括第一交易的标识和冲突处理指令,冲突处理指令包括第一交易与历史交易存在冲突时对第一交易的处理方式,和/或,第一交易与历史交易不存在冲突时对第一交易的处理方式;进一步地,第一节点根据第一交易的标识,确定第一交易的冲突结果,并根据第一交易的冲突结果和冲突处理指令,对第一交易进行处理;其中,第一交易的冲突结果用于指示第一交易与历史交易是否存在冲突。本发明实施例中,通过设置交易的标识,可以采用对比交易的标识的方式对第一交易进行冲突检测,而无需对比交易数据,从而可以使得对交易进行冲突检测的过程更为快速,提高区块链系统中交易处理的效率;且,由于冲突处理指令由客户端设备进行设置,因此可以基于不同的业务场景和客户端设备的要求设置不同的冲突处理指令,也就是说,上述技术方案中的交易处理方法更加符合实际情况。基于相同的技术构思,本发明实施例提供了一种终端设备,如图6所示,包括至少一个处理器1101,以及与至少一个处理器连接的存储器1102,本发明实施例中不限定处理器1101与存储器1102之间的具体连接介质,图6中处理器1101和存储器1102之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。在本发明实施例中,存储器1102存储有可被至少一个处理器1101执行的指令,至少一个处理器1101通过执行存储器1102存储的指令,可以执行前述的基于区块链系统的交易处理方法中所包括的步骤。其中,处理器1101是终端设备的控制中心,可以利用各种接口和线路连接终端设备的各个部分,通过运行或执行存储在存储器1102内的指令以及调用存储在存储器1102内的数据,从而实现数据处理。可选的,处理器1101可包括一个或多个处理单元,处理器1101可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理运维人员下发的指令。可以理解的是,上述调制解调处理器也可以不集成到处理器1101中。在一些实施例中,处理器1101和存储器1102可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。处理器1101可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合基于区块链系统的交易处理方法的实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器1102作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1102可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器1102是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器1102还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。基于相同的技术构思,本发明实施例提供了一种后端设备,如图7所示,包括至少一个处理器1201,以及与至少一个处理器连接的存储器1202,本发明实施例中不限定处理器1201与存储器1202之间的具体连接介质,图7中处理器1201和存储器1202之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。在本发明实施例中,存储器1202存储有可被至少一个处理器1201执行的指令,至少一个处理器1201通过执行存储器1202存储的指令,可以执行前述的基于区块链系统的交易处理方法中所包括的步骤。其中,处理器1201是后端设备的控制中心,可以利用各种接口和线路连接后端设备的各个部分,通过运行或执行存储在存储器1202内的指令以及调用存储在存储器1202内的数据,从而实现数据处理。可选的,处理器1201可包括一个或多个处理单元,处理器1201可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用程序等,调制解调处理器主要对接收到的指令进行解析以及对接收到的结果进行解析。可以理解的是,上述调制解调处理器也可以不集成到处理器1201中。在一些实施例中,处理器1201和存储器1202可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。处理器1201可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合基于区块链系统的交易处理方法的实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器1202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1202可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器1202是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器1202还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1