一种区块链交易流程管理方法及相关装置与流程

文档序号:18303827发布日期:2019-07-31 10:37阅读:209来源:国知局
一种区块链交易流程管理方法及相关装置与流程

本发明涉及区块链技术,更具体地说,涉及一种区块链交易流程管理方法、系统、装置及计算机可读存储介质。



背景技术:

区块链是一种链式结构的分布式账本。业务开发者需要预先准备好区块链交易的签名数据,调用区块链提供的发送交易接口进行区块链交易的发送。发送过程中,需要发送交易数据的业务系统需要对交易数据进行一系列的预处理,如对交易数据进行编码、签名,然后再将进行预处理后的交易数据发送至区块链。

而预处理操作通常有一定的复杂性与难度,如果业务系统需要发送交易数据,就必须进行预处理操作的代码开发,使用户使用业务系统时代码开发量以及使用难度有所增加。

因此,如何降低用户业务系统的代码开发量与使用难度,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种区块链交易流程管理方法、系统、装置及计算机可读存储介质,以解决如何降低用户业务系统的代码开发量与使用难度的问题。

为实现上述目的,本发明实施例提供了如下技术方案:

一种区块链交易流程管理系统,包括:

原始交易数据接收单元,用于接收业务系统发送的原始交易数据,将所述交易数据作为待处理交易数据;

预处理单元,用于对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作;

发送单元,用于将所述待发送交易数据发送至区块链。

其中,所述原始交易数据接收单元,包括:

第一原始交易数据接收子单元,用于接收所述业务系统发送的原始交易数据;

第一存储子单元,用于将所述原始交易数据存储至数据库,将所述原始交易数据作为待处理交易数据;

相应的,所述系统还包括:

异常检测单元,用于将所述待发送交易数据发送至区块链之后,判断所述待发送交易数据是否出现发送异常;

重试单元,用于当所述待发送交易数据出现发送异常时,在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作;其中,所述发送重试操作包括所述对所述待处理交易数据进行预处理操作,得到待发送交易数据与所述将所述待发送交易数据发送至区块链的步骤;

记录单元,用于当所述待发送交易数据未出现发送异常时,记录所述待发送数据的发送状态为成功发送。

其中,所述系统还包括:

可重试异常判断单元,用于所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作之前,判断所述发送异常是否为可重试异常;若是,则执行所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作的步骤;其中,所述可重试异常为预先确定可通过发送重试操作解决的异常。

其中,所述系统还包括:

重试次数判断单元,用于所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作之前,判断出现发送异常的所述待发送交易数据的已执行的重试操作次数是否到达预设最大次数;若否,则执行所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作的步骤。

其中,所述系统还包括:

验证单元,用于对区块链的区块数据进行轮询查询,获取当前区块链中的数据,并判断发送状态为成功发送的待发送交易数据是否已写入至区块链;

第一发送单元,用于当发送状态为成功发送的待发送交易数据已写入至区块链时,将已写入至区块链中的所述待发送交易数据的上链成功信息发送至消息队列;其中,所述消息队列为被所述业务系统监听的消息队列;

第二发送单元,用于当发送状态为成功发送的待发送交易数据未写入至区块链时,将未写入至区块链中的所述待发送交易数据的上链失败信息发送至消息队列。

其中,所述原始交易数据接收单元,包括:

第二原始交易数据接收子单元,用于接收所述业务系统发送的原始交易数据;

第二存储子单元,用于将所述原始交易数据存储至数据库,将所述原始交易数据作为待处理交易数据;

相应的,所述系统还包括:

交易数据量判断单元,用于判断当前待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值;若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据,并对所述目标待处理交易数据执行所述对所述待处理交易数据进行预处理操作,得到待发送交易数据的步骤。

为实现上述目的,本申请还提供一种区块链交易流程管理方法,包括:

接收业务系统发送的原始交易数据,将所述交易数据作为待处理交易数据;

对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作;

将所述待发送交易数据发送至区块链。

其中,所述接收业务系统发送的原始交易数据,将所述交易数据作为待处理交易数据,包括:

接收所述业务系统发送的原始交易数据;

将所述原始交易数据存储至数据库,将所述原始交易数据作为待处理交易数据;

相应的,所述将所述待发送交易数据发送至区块链之后,还包括:

判断所述待发送交易数据是否出现发送异常;

若是,则在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作;其中,所述发送重试操作包括所述对所述待处理交易数据进行预处理操作,得到待发送交易数据与所述将所述待发送交易数据发送至区块链的步骤;

若否,则记录所述待发送数据的发送状态为成功发送。

为实现上述目的,本申请还提供一种区块链交易流程管理装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如所述区块链交易流程管理方法的步骤。

为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述区块链交易流程管理方法的步骤。

通过以上方案可知,本发明提供的一种区块链交易流程管理系统,包括:原始交易数据接收单元,用于接收业务系统发送的原始交易数据,将所述交易数据作为待处理交易数据;预处理单元,用于对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作;发送单元,用于将所述待发送交易数据发送至区块链。

由此可见,本申请实施例提供的一种区块链交易流程管理系统,可以接收业务系统发送的原始交易数据,将该数据作为待处理交易数据,并对待处理交易数据进行预处理操作,然后将完成预处理操作的待发送交易数据发送至区块链。区别于现有技术,本方案中业务系统无需再进行预处理操作,而是只需要完成原始交易数据发送的操作,后续预处理等操作均由本申请的区块链交易管理系统进行,从而可以降低普通用户使用区块链的难度与代码开发量。本申请还提供了一种区块链交易流程管理方法、装置及计算机可读存储介质,同样可以实现上述效果。

附图说明

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

图1为本发明实施例公开的一种交易系统结构示意图;

图2为本发明实施例公开的一种具体的交易系统结构示意图;

图3为本发明实施例公开的一种具体的交易系统结构示意图;

图4为本发明实施例公开的一种区块链交易流程管理方法流程图;

图5为本发明实施例公开的一种具体的区块链交易流程管理方法流程图;

图6为本发明实施例公开的一种具体的区块链交易流程管理方法流程图;

图7为本发明实施例公开的一种交易系统结构示意图;

图8为本发明实施例公开的一种具体的区块链交易流程管理方法流程图;

图9为本发明实施例公开的一种区块链交易流程管理装置结构示意图。

具体实施方式

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

本发明实施例公开了一种区块链交易流程管理方法、系统、装置及计算机可读存储介质,以解决如何降低用户业务系统的代码开发量与使用难度的问题。

参见图1,本发明实施例提供的一种区块链交易流程管理系统,具体包括:

原始交易数据接收单元101,用于接收业务系统发送的原始交易数据,将所述交易数据作为待处理交易数据。

本申请提供了一套中间系统,用来接收业务系统发送的原始交易数据,然后对原始交易数据进行预处理操作,而无需业务系统再进行相关的代码开发。

具体地,本方案可以为业务系统提供数据接口,用于使原始交易数据接收单元101接收业务系统发送的原始交易数据。对于接收到的原始交易数据,本方案中可以直接对其进行预处理操作。

预处理单元102,用于对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作。

具体地,预处理单元102对待处理交易数据进行预处理操作,得到待发送交易数据。需要说明的是,预处理操作即为交易数据在发送到区块链之前所必需的处理操作。例如,计算待处理交易数据的待签原文、通过待签原文计算签名数据及计算证实需要发送的交易数据等,有关预处理操作的具体内容可以参见现有技术中交易数据发送至区块链前的预处理操作,在本方案中将不再进行赘述。

发送单元103,用于将所述待发送交易数据发送至区块链。

具体地,在对交易数据进行预处理得到待发送交易数据后发送单元103即可将待发送交易数据发送至区块链。

在一个具体地实施方式中,所述系统还可以包括便于用户使用的接口,接口具体包括:

交易接收接口,用于接收用户发起的交易;

交易信息查询接口,用于查询交易信息数据;

交易状态修改接口,用于修改当前交易状态。

通过这些接口业务系统可以对本申请区块链交易流程管理系统进行数据输入、数据获取以及交易状态的设置等操作。

由此可见,本申请实施例提供的一种区块链交易流程管理系统,可以接收业务系统发送的原始交易数据,将该数据作为待处理交易数据,并对待处理交易数据进行预处理操作,然后将完成预处理操作的待发送交易数据发送至区块链。区别于现有技术,本方案中业务系统无需再进行预处理操作,而是只需要完成原始交易数据发送的操作,后续预处理等操作均由本申请的区块链交易管理系统进行,从而可以降低普通用户使用区块链的难度与代码开发量。

待发送数据发送至区块链的过程中可能会出现异常情况,而为了降低用户业务系统的代码开发量以及使用难度,在关于待发送数据出现的发送异常的相关处理,也需要避免业务系统的参与。因此,本申请提供了一种具体的区块链加一流程管理方法,参见图2,本方案具体包括:

第一原始交易数据接收子单元201,用于接收所述业务系统发送的原始交易数据。

第一存储子单元202,用于将所述原始交易数据存储至数据库,将所述原始交易数据作为待处理交易数据。

在本方案中第一存储子单元202对业务系统发送的原始交易数据进行存储,以便后续需要进行发送重试操作时,直接在数据库中获取相应的数据,而无需业务系统的参与。

需要说明的是,本方案提供的系统在接收到业务系统的原始交易数据,并对其进行存储后,可以向业务系统返回一个对应该交易数据的标识,如唯一的交易流水号,用户在后续对该数据的信息进行查询等操作时,可以按照该标识进行操作。

预处理单元102,用于对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作。

发送单元103,用于将所述待发送交易数据发送至区块链。

异常检测单元203,用于将所述待发送交易数据发送至区块链之后,判断所述待发送交易数据是否出现发送异常。

在本方案中,发送单元103将待发送交易数据发送至区块链后,还需要异常检测单元203检测发送过程中是否出现了异常,也就是说,判断是否将待发送数据成功的发送到了区块链上,如果没有成功,则发送过程中就会出现发送异常。

需要说明的是,发送异常可能会有很多种,有些异常可以通过发送重试操作就可以解决,而有些异常则不能够通过发送重试操作解决,例如,计算待签原文错误、区块链节点报权限错误、区块链节点报nonce重复、合约返回业务异常或gas不足异常、交易回滚等异常错误,为了避免没有必要的重试操作,在一个具体的实施方式中,可以预先确定出不能够通过发送重试操作解决的异常信息,当发送过程中出现异常时,先确定该异常是否是不能够通过重试操作解决的异常,如果是,则直接确定发送失败,否则再进行发送重试操作。

具体地,所述系统还包括:

可重试异常判断单元,用于所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作之前,判断所述发送异常是否为可重试异常;若是,则执行所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作的步骤;其中,所述可重试异常为预先确定可通过发送重试操作解决的异常。

需要说明的是,还有一些异常可能被确定为了可重试异常,但是进行了多次发送重试操作后依然不能够解决该异常,为了避免对该异常无限执行发送重试操作,在另一个具体的实施方式中,所述系统还包括:

重试次数判断单元,用于所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作之前,判断出现发送异常的所述待发送交易数据的已执行的重试操作次数是否到达预设最大次数;若否,则执行所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作的步骤。

具体地,预先对每笔交易数据设置一个最大的重试次数,当需要对交易数据进行发送重试操作时,重试次数判断单元先要判断当前的重试次数是否已经大于了该交易数据对应的最大重试次数,如果没有则进行发送重试,否则直接确定该交易发送失败。

需要说明的是,当确定了交易发送失败后或成功后,可以将发送成功的交易数据的相关信息与成功或失败的结果发送到可以被业务系统所监听的消息队列中,这样当消息队列中有了交易数据的发送结果时,就可以监听到该结果,可以使业务系统及时的了解交易数据的发送状态。此外,当发送结果为失败时,还可以将具体的原因对应的发送到消息队列中,使用户通过业务系统可以了解发送失败的具体原因。

如果发送失败的具体原因为出现发送异常,且发送重试操作的次数已将到达最大重试次数,用户认为该异常依然可以通过发送重试操作来解决,则可以通过相应的接口来更改对应该笔交易数据的最大重试次数。

重试单元204,用于当所述待发送交易数据出现发送异常时,在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作;其中,所述发送重试操作包括所述对所述待处理交易数据进行预处理操作,得到待发送交易数据与所述将所述待发送交易数据发送至区块链的步骤。

记录单元205,用于当所述待发送交易数据未出现发送异常时,记录所述待发送数据的发送状态为成功发送。

具体地,如果待发送数据发送成功了,则记录单元205可以记录其发送状态为成功发送状态。

需要说明的是,待发送交易数据发送至区块链后,区块链节点并不会直接将待发送交易数据打包上链,而是会根据自己的上链规则,每间隔预设时间获取一次已接收到的、未上链的交易数据进行打包上链操作。

区块链节点对已经发送到区块链的交易数据进行打包上链的过程中也可能会出现异常、失败的情况,因此为了进一步保证交易数据能够被正常上链,本申请提供了一种更具体的实施方式,所述系统还包括:

验证单元,用于对区块链的区块数据进行轮询查询,获取当前区块链中的数据,并判断发送状态为成功发送的待发送交易数据是否已写入至区块链;

第一发送单元,用于当发送状态为成功发送的待发送交易数据已写入至区块链时,将已写入至区块链中的所述待发送交易数据的上链成功信息发送至消息队列;其中,所述消息队列为被所述业务系统监听的消息队列;

第二发送单元,用于当发送状态为成功发送的待发送交易数据未写入至区块链时,将未写入至区块链中的所述待发送交易数据的上链失败信息发送至消息队列。

具体地,首先需要验证单元轮询访问区块链,并获取区块链中的数据是否包括了已经发送到区块链的交易数据,如果有,证明发送到区块链的交易数据已经被成功上链,如果一直没有,则说明该交易数据上链失败。

需要说明的是,由于区块链中的数据非常多,且一直递增,为了减少数据的获取量,降低计算资源与数据传输资源,本申请中只获取区块链中新出的区块数据,判断新出的区块数据是否包括发送到区块链的交易数据。新出的区块数据是指与上一次获取数据时相比,新出的区块数据。

此外,为了使业务系统及时的知道交易数据是否上链成功,需要第一发送单元在确定交易数据被上链时将上链成功的消息发送至消息队列,在确定交易数据被上链失败时第二发送单元将上链失败的消息发送至消息队列,业务系统可以监听消息队列,当出现相应的消息时,即可及时的获取到。需要说明的是,上链成功或失败的消息不仅包括如成功或失败的状态信息,还会包括对应的交易数据的标识信息等。

下面对本申请提供的一种具体的区块链交易流程管理系统进行介绍,下文描述的一种具体的区块链交易流程管理系统与上述任一实施例可以相互参照。

参见图3,本申请实施例提供的一种具体的区块链交易流程管理系统,具体包括:

第二原始交易数据接收子单元301,用于接收所述业务系统发送的原始交易数据。

第二存储子单元302,用于将所述原始交易数据存储至数据库,将所述原始交易数据作为待处理交易数据。

在本方案中,第二原始交易数据接收子单元301接收到业务系统发送的原始交易数据后,第二存储子单元302将原始交易数据存储至数据库。

交易数据量判断单元303,用于判断当前待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值;若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据,并对所述目标待处理交易数据调用所述预处理单元102。

需要说明的是,区块链需要处理交易数据的一致性及数据的安全性等问题,使得并发处理的交易数据量是有限的,从而使得现有技术中业务开发者时长需要关心交易的调度问题,避免出现交易高峰,使区块链处理不了所有的交易数据。

因此,在本方案中为了降低业务系统代码开发量以及使用难度的同时,进一步地避免交易高峰情况,在需要对交易数据进行预处理、发送操作之前,还需要判断当前所有的待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值。若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据,并对所述目标待处理交易数据调用所述预处理单元102。否则将所有待处理交易数据按照正常的预处理操作、发送操作流程进行发送操作,即直接调用所述预处理单元102。

如果当前待处理交易数据大于区块链并发处理交易数据的最大值时,则需要对所有待处理交易数据进行调度,而由于本申请中将所有的交易数据均进行了存储,所以可以直接进行调度,而无需业务系统进行操作。

具体地,需要按照区块链并发处理交易数据的最大值确定出目标待处理交易数据,目标待处理交易数据的数量小于或等于区块链并发处理交易数据的最大值。

确定目标待处理数据后,即可对目标待处理数据进行后续的操作。

预处理单元102,用于对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作。

发送单元103,用于将所述待发送交易数据发送至区块链。

需要说明的是,在对待处理交易数据进行预处理以及发送操作之前,对其进行调度,就会在原有的操作流程中增加了调度的步骤,因此对于整体的交易数据发送过程也会出现延迟的情况。但是对于在上述区块链并发处理交易数据的最大值范围内的这部分交易数据,直接发送到区块链中也不会出现交易峰值的情况,因此对于这部分数据来说,就会出现不必要的延迟。因此,为了避免这种情况,本申请提供了一种具体的实施方式,在上述实施方式的基础上,所述系统还包括:

在将所述待发送交易数据发送至区块链之后,还包括:

剩余交易数据确定单元,用于确定本次不能被区块链处理的剩余交易数据,将所述剩余交易数据作为待处理交易数据;

判断单元,用于判断当前所有待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值;若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据,并对所述目标待处理交易数据执行所述对所述待处理交易数据进行预处理操作,得到待发送交易数据的步骤。

例如,当前接收到1000条原始交易数据,将这1000条原始交易数据全部存储,并作为待处理交易数据;

对当前所有的待处理交易数据进行预处理操作得到待发送交易数据,待发送交易数据为1000条;

此时当前区块链并发处理交易数据的最大值为300条,因此在将1000条待发送交易数据发送至区块链后,会有700条数据不能被处理,此时将这700条数据重新作为待处理交易数据,执行下述调度的步骤:

判断当前待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值;

若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据,并对所述目标待处理交易数据执行所述对所述待处理交易数据进行预处理操作,得到待发送交易数据的步骤。

这样,第一次就被成功发送到区块链的300条数据就不会进行调度的操作,因此,也不会出现延迟。

参见图4,本发明实施例提供的一种区块链交易流程管理方法,具体包括:

s101,接收业务系统发送的原始交易数据,将所述交易数据作为待处理交易数据。

本申请提供了一套中间系统,用来接收业务系统发送的原始交易数据,然后对原始交易数据进行预处理操作,而无需业务系统再进行相关的代码开发。

具体地,本方案可以为业务系统提供数据接口,用于接收业务系统发送的原始交易数据。对于接收到的原始交易数据,本方案中可以直接对其进行预处理操作,因此,可以将接收到的原始交易数据直接作为待处理交易数据,执行s102。

s102,对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作。

具体地,对待处理交易数据进行预处理操作,得到待发送交易数据。需要说明的是,预处理操作即为交易数据在发送到区块链之前所必需的处理操作。例如,计算待处理交易数据的待签原文、通过待签原文计算签名数据及计算证实需要发送的交易数据等,有关预处理操作的具体内容可以参见现有技术中交易数据发送至区块链前的预处理操作,在本方案中将不再进行赘述。

s103,将所述待发送交易数据发送至区块链。

具体地,在对交易数据进行预处理得到待发送交易数据后即可将待发送交易数据发送至区块链。

由此可见,本申请实施例提供的一种区块链交易流程管理方法,可以接收业务系统发送的原始交易数据,将该数据作为待处理交易数据,并对待处理交易数据进行预处理操作,然后将完成预处理操作的待发送交易数据发送至区块链。区别于现有技术,本方案中业务系统无需再进行预处理操作,而是只需要完成原始交易数据发送的操作,后续预处理等操作均无需由业务系统进行,从而可以降低普通用户使用业务系统的难度与代码开发量。

待发送数据发送至区块链的过程中可能会出现异常情况,而为了降低用户业务系统的代码开发量以及使用难度,在关于待发送数据出现的发送异常的相关处理,也需要避免业务系统的参与。因此,本申请提供了一种具体的区块链加一流程管理方法,参见图5,本方案具体包括:

s201,接收所述业务系统发送的原始交易数据。

s202,将所述原始交易数据存储至数据库,将所述原始交易数据作为待处理交易数据。

在本方案中对业务系统发送的原始交易数据进行存储,以便后续需要进行发送重试操作时,直接在数据库中获取相应的数据,而无需业务系统的参与。

需要说明的是,本方案提供的系统在接收到业务系统的原始交易数据,并对其进行存储后,可以向业务系统返回一个对应该交易数据的标识,如唯一的交易流水号,用户在后续对该数据的信息进行查询等操作时,可以按照该标识进行操作。

s203,对所述待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作。

s204,将所述待发送交易数据发送至区块链。

s205,判断所述待发送交易数据是否出现发送异常。

在本方案中,将待发送交易数据发送至区块链后,还需要检测发送过程中是否出现了异常,也就是说,判断是否将待发送数据成功的发送到了区块链上,如果没有成功,则发送过程中就会出现发送异常。

需要说明的是,发送异常可能会有很多种,有些异常可以通过发送重试操作就可以解决,而有些异常则不能够通过发送重试操作解决,例如,计算待签原文错误、区块链节点报权限错误、区块链节点报nonce重复、合约返回业务异常或gas不足异常、交易回滚等异常错误,为了避免没有必要的重试操作,在一个具体的实施方式中,可以预先确定出不能够通过发送重试操作解决的异常信息,当发送过程中出现异常时,先确定该异常是否是不能够通过重试操作解决的异常,如果是,则直接确定发送失败,否则再进行发送重试操作。

具体地,判断所述发送异常是否为可重试异常;若是,则执行所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作的步骤;其中,所述可重试异常为预先确定可通过发送重试操作解决的异常。

需要说明的是,还有一些异常可能被确定为了可重试异常,但是进行了多次发送重试操作后依然不能够解决该异常,为了避免对该异常无限执行发送重试操作,在另一个具体的实施方式中,所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作之前,还包括:

判断出现发送异常的所述待发送交易数据的已执行的重试操作次数是否到达预设最大次数;

若否,则执行所述在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作的步骤。

具体地,预先对每笔交易数据设置一个最大的重试次数,当需要对交易数据进行发送重试操作时,先要判断当前的重试次数是否已经大于了该交易数据对应的最大重试次数,如果没有则进行发送重试,否则直接确定该交易发送失败。

需要说明的是,当确定了交易发送失败后或成功后,可以将发送成功的交易数据的相关信息与成功或失败的结果发送到可以被业务系统所监听的消息队列中,这样当消息队列中有了交易数据的发送结果时,就可以监听到该结果,可以使业务系统及时的了解交易数据的发送状态。此外,当发送结果为失败时,还可以将具体地原因对应的发送到消息队列中,使用户通过业务系统可以了解发送失败的具体原因。

如果发送失败的具体原因为因为出现发送异常,且发送重试操作的次数已将到达最大重试次数,用户认为该异常依然可以通过发送重试操作来解决,则可以通过相应的接口来更改对应该笔交易数据的最大重试次数。

s206,若是,则在所述数据库中获取所述发送异常对应的目标数据,并将所述目标数据作为待处理交易数据,执行发送重试操作;其中,所述发送重试操作包括所述对所述待处理交易数据进行预处理操作,得到待发送交易数据与所述将所述待发送交易数据发送至区块链的步骤。

s207,若否,则记录所述待发送数据的发送状态为成功发送。

具体地,如果待发送数据发送成功了,则可以记录其发送状态为成功发送状态。

需要说明的是,待发送交易数据发送至区块链后,区块链节点并不会直接将待发送交易数据打包上链,而是会根据自己的上链规则,每间隔预设时间获取一次已接收到的、未上链的交易数据进行打包上链操作。

区块链节点对已经发送到区块链的交易数据进行打包上链的过程中也可能会出现异常、失败的情况,因此为了进一步保证交易数据能够被正常上链,本申请提供了一种更具体的实施方式,所述记录所述待发送数据的发送状态为成功发送之后,还包括:

对区块链的区块数据进行轮询查询,获取当前区块链中的数据,并判断发送状态为成功发送的待发送交易数据是否已写入至区块链;

若是,则将已写入至区块链中的所述待发送交易数据的上链成功信息发送至消息队列;其中,所述消息队列为被所述业务系统监听的消息队列;

若否,则将未写入至区块链中的所述待发送交易数据的上链失败信息发送至消息队列。

具体地,首先需要轮询访问区块链,并获取区块链中的数据是否包括了已经发送到区块链的交易数据,如果有,证明发送到区块链的交易数据已经被成功上链,如果一直没有,则说明该交易数据上链失败。

需要说明的是,由于区块链中的数据非常多,且一直递增,为了减少数据的获取量,降低计算资源与数据传输资源,本申请中只获取区块链中新出的区块数据,判断新出的区块数据是否包括发送到区块链的交易数据。新出的区块数据是指与上一次获取数据时相比,新出的区块数据。

此外,为了使业务系统及时的知道交易数据是否上链成功,需要在确定交易数据被上链时将上链成功的消息发送至消息队列,在确定交易数据被上链失败时将上链失败的消息发送至消息队列,业务系统可以监听消息队列,当出现相应的消息时,即可及时的获取到。需要说明的是,上链成功或失败的消息不仅包括如成功或失败的状态信息,还会包括对应的交易数据的标识信息等。

下面对本申请提供的一种具体的区块链交易流程管理方法进行介绍,下文描述的一种具体的区块链交易流程管理方法与上述任一实施例可以相互参照。

参见图6,本申请实施例提供的一种具体的区块链交易流程管理方法,具体包括:

s301,接收所述业务系统发送的原始交易数据。

s302,将所述原始交易数据存储至数据库,将所述原始交易数据作为待处理交易数据。

在本方案中,接收到业务系统发送的原始交易数据后,将原始交易数据存储至数据库。

s303,判断当前待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值。

需要说明的是,区块链需要处理交易数据的一致性及数据的安全性等问题,使得并发处理的交易数据量是有限的,从而使得现有技术中业务开发者时长需要关心交易的调度问题,避免出现交易高峰,使区块链处理不了所有的交易数据。

因此,在本方案中为了降低业务系统代码开发量以及使用难度的同时,进一步地避免交易高峰情况,在需要对交易数据进行预处理、发送操作之前,还需要判断当前所有的待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值。若是,则执行s304,否则将所有待处理交易数据按照正常的预处理操作、发送操作流程进行发送操作。

s304,若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据。

如果当前待处理交易数据大于区块链并发处理交易数据的最大值时,则需要对所有待处理交易数据进行调度,而由于本申请中将所有的交易数据均进行了存储,所以可以直接进行调度,而无需业务系统进行操作。

具体地,需要按照区块链并发处理交易数据的最大值确定出目标待处理交易数据,目标待处理交易数据的数量小于或等于区块链并发处理交易数据的最大值。

确定目标待处理数据后,即可对目标待处理数据进行后续的操作。

s305,对所述目标待处理交易数据进行预处理操作,得到待发送交易数据;其中,所述预处理操作为交易数据发送至区块链所需的处理操作。

s306,将所述待发送交易数据发送至区块链。

需要说明的是,在对待处理交易数据进行预处理以及发送操作之前,对其进行调度,就会在原有的操作流程中增加了调度的步骤,因此对于整体的交易数据发送过程也会出现延迟的情况。但是对于在上述区块链并发处理交易数据的最大值范围内的这部分交易数据,直接发送到区块链中也不会出现交易峰值的情况,因此对于这部分数据来说,就会出现不必要的延迟。因此,为了避免这种情况,本申请提供了一种具体的实施方式,在将所述待发送交易数据发送至区块链之后,还包括:

确定本次不能被区块链处理的剩余交易数据,将所述剩余交易数据作为待处理交易数据;

判断当前所有待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值;

若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据,并对所述目标待处理交易数据执行所述对所述待处理交易数据进行预处理操作,得到待发送交易数据的步骤。

例如,当前接收到1000条原始交易数据,将这1000条原始交易数据全部存储,并作为待处理交易数据;

对当前所有的待处理交易数据进行预处理操作得到待发送交易数据,待发送交易数据为1000条;

此时当前区块链并发处理交易数据的最大值为300条,因此在将1000条待发送交易数据发送至区块链后,会有700条数据不能被处理,此时将这700条数据重新作为待处理交易数据,执行下述调度的步骤:

判断当前待处理交易数据的数量是否大于当前区块链并发处理交易数据的最大值;

若是,则按照所述当前区块链并发处理交易数据的最大值确定目标待处理交易数据,并对所述目标待处理交易数据执行所述对所述待处理交易数据进行预处理操作,得到待发送交易数据的步骤。

这样,第一次就被成功发送到区块链的300条数据就不会进行调度的操作,因此,也不会出现延迟。

下面对本申请提供的一种具体的区块链交易流程管理方法进行介绍,下文描述的一种具体的交易流程管理方法与上述任一实施例可以相互参照。

本申请提供的一种具体的区块链交易流程管理方法应用于一种区块链交易流程管理系统。

参见图7,本申请提供的一种交易系统中包括业务系统、区块链交易流程管理系统与区块链。其中,区块链交易流程管理系统中又包括交易调度模块、交易处理模块、交易验证模块和消息阻止模块。区块链交易流程管理系统中所包括的模块又包括上述实施例中介绍的单元或子单元。

具体地,参见图8,区块链交易流程管理方法包括:

流程开始,业务系统发送交易数据到区块链交易流程管理系统,系统会将交易基本信息存储到数据库中并返回一个唯一的交易流水号,供业务系统后续获取该笔交易在本专利系统处理后的信息使用。

交易调度模块进行交易的管理和调度。

交易处理模块进行交易相关内容预处理后,将交易发送给区块链,并判断发送交易给区块链是否成功。如果否,则判断交易是否可以重试。根据异常类型和预先配置的交易重试次数,进行交易重试状态的设置,设置为交易重试状态的交易则进行重现的交易调度处理,否则将交易状态设置为无效并发送“交易失败”给消息队列。如果是,进行“交易验证模块”验证处理。

交易验证模块进行交易是否发送成功的判断。判断交易是否已成功记录在区块链上。如果否,进行上述交易是否可以重试的判断。如果是,进行消息组织模块业务处理。

消息组织模块进行“交易发送成功”信息的组织及发送,流程结束。

本申请还提供了一种区块链交易流程管理装置,参见图9,本发明实施例提供的一种区块链交易流程管理装置的结构图,如图9所示,包括:

存储器100,用于存储计算机程序;

处理器200,用于执行所述计算机程序时可以实现上述实施例所提供的步骤。

具体的,存储器100包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器200为区块链交易流程管理装置提供计算和控制能力,可以实现上述任一区块链交易流程管理方法实施例所提供的步骤。

在上述实施例的基础上,作为优选实施方式,所述区块链交易流程管理装置还包括:

输入接口300,用于获取外部导入的计算机程序、参数和指令,经处理器控制保存至存储器中。该输入接口300可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。

显示单元400,用于显示处理器发送的数据。该显示单元400可以为pc机上的显示屏、液晶显示屏或者电子墨水显示屏等。

网络端口500,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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