一种基于区块链的业务执行结果获取方法及***
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种基于区块链的业务执行结果获取方法及***。
背景技术
在涉及直接业务方与间接业务方的场景下,直接业务方设备直接面向用户进行业务受理,并将受理的业务交由间接业务方设备执行,并将确定的业务执行结果返回给直接业务方设备。直接业务方设备会以获取的业务执行结果为依据,进一步执行业务关联操作。
有时,间接业务方设备可能出现技术故障,导致间接业务方设备返回的业务执行结果是不准确的,进而导致直接业务方设备执行了错误的业务关联操作。有时,间接业务方设备返回的业务执行结果是准确的,但是直接业务方设备却出现技术故障,执行了错误的业务关联操作。
但是在实践中,当直接业务方设备执行了错误的业务关联操作时,往往难以确定该错误的业务关联操作是哪一方(直接业务方或间接业务方)的技术故障导致的。
发明内容
为了解决现有的业务执行结果获取方法中存在的业务执行结果无法存证的问题,本说明书实施例提供一种基于区块链的业务执行结果获取方法及***,技术方案如下:
根据本说明书实施例的第1方面,提供一种基于区块链的业务执行结果获取方法,用于实现直接业务方获取间接业务方返回的业务执行结果,以便直接业务方基于业务执行结果执行业务关联操作;所述业务执行结果是所述直接业务方在受理用户发起的业务后,将所述业务提交给间接业务方进行执行所得到的;所述直接业务方在区块链网络上注册有直接业务方账户,所述间接业务方在所述区块链网络上注册有间接业务方账户;
所述方法包括:
间接业务方设备确定所述业务的业务执行结果;
所述间接业务方设备通过所述间接业务方账户,构建结果返回交易并提交给所述区块链网络;所述结果返回交易包含所述业务的业务标识与所述业务执行结果;
所述区块链网络根据所述结果返回交易,触发结果返回事件,以及,将所述结果返回交易写入区块链;
所述直接业务方设备在通过所述直接业务方账户监听到所述结果返回事件后,通过所述直接业务方账户,从所述区块链网络获取所述结果返回交易,并从所述结果返回交易中提取所述业务执行结果。
根据本说明书实施例的第2方面,提供一种基于区块链的业务执行结果获取***,用于实现直接业务方获取间接业务方返回的业务执行结果,以便直接业务方基于业务执行结果执行业务关联操作;所述业务执行结果是所述直接业务方在受理用户发起的业务后,将所述业务提交给间接业务方进行执行所得到的;所述直接业务方在区块链网络上注册有直接业务方账户,所述间接业务方在所述区块链网络上注册有间接业务方账户;
所述***包括区块链网络、直接业务方设备、间接业务方设备;
所述间接业务方设备,确定所述业务的业务执行结果;通过所述间接业务方账户,构建结果返回交易并提交给所述区块链网络,所述结果返回交易包含所述业务的业务标识与所述业务执行结果;
所述区块链网络,根据所述结果返回交易,触发结果返回事件,以及,将所述结果返回交易写入区块链;
所述直接业务方设备,在通过所述直接业务方账户监听到所述结果返回事件后,通过所述直接业务方账户,从所述区块链网络获取所述结果返回交易,并从所述结果返回交易中提取所述业务执行结果。
本说明书实施例所提供的技术方案,直接业务方设备受理业务,并将业务提交给间接业务方设备进行执行。间接业务方设备可以将执行业务得到的业务执行结果封装成区块链交易提交给区块链网络进行存证,直接业务方设备可以从区块链网络获取业务执行结果,作为后续执行业务关联操作的依据。如此,间接业务方设备返回给直接业务方设备的业务执行结果会存证于区块链,难以被篡改,因而是可信的。当直接业务方设备执行了错误的业务关联操作时,可以区块链中存证的业务执行结果为证据,判断该错误的业务关联操作是由直接业务方设备的技术故障导致的,还是由间接业务方设备的技术故障导致的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要通过的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种基于区块链的业务执行结果获取方法的流程示意图;
图2是本说明书实施例提供的另一种基于区块链的业务执行结果获取方法的流程示意图;
图3是本说明书实施例提供的一种间接业务方设备的结构示意图;
图4是本说明书实施例提供的一种直接业务方设备的结构示意图;
图5是本说明书实施例提供的一种区块链网络的节点的结构示意图;
图6是用于配置本说明书实施例装置的一种计算机设备的结构示意图。
具体实施方式
本文所述的涉及直接业务方与间接业务方的场景在实践中较为常见。
例如,直接业务方可以是售票平台,而间接业务方可以是航空公司A。用户可以在售票平台上购买航空公司A的机票。用户可以向售票平台的服务器发起购票业务(选定了航空公司A的机票),售票平台的服务器会将该购票业务提交给航空公司A的服务器,航空公司A的服务器进行出票,如果出票成功,就向售票平台返回出票成功的业务执行结果,如果出票失败,就像售票平台返回出票失败的业务执行结果。售票平台的服务器如果接收到航空公司A返回的出票成功的业务执行结果,就会执行从用户账户扣款的业务关联操作,售票平台的服务器如果接收到航空公司A返回的出票失败的业务执行结果,就会执行向用户推荐其他航空公司的机票的业务关联操作。
又如,直接业务方可以是支付平台,而间接业务方可以是银行B,用户在支付平台的账号与用户在银行B的账户的绑定关系。用户通过支付平台进行转账时,支付平台会将该转账业务提交给银行B进行处理,银行B如果转账成功,就会向支付平台返回转账成功的业务执行结果,银行B如果转账失败,就会向支付平台返回转账失败的业务执行结果。支付平台如果接收到银行B返回的转账成功的结果,就会向用户发送转账成功的通知消息,如果接收到银行B返回的转账失败的结果,就会向用户发送转账失败的通知消息。
显然,在上述场景中,间接业务方返回给直接业务方的业务执行结果如果不准确(与实际情况不符),那么直接业务方执行的业务关联操作就会给用户或直接业务方带来麻烦。此外,哪怕间接业务方返回的业务执行结果是准确的,如果直接业务方出现技术故障,也可能根据准确的业务执行结果执行错误的业务关联操作。
在上述第一个例子中,假设航空公司A的服务器出票成功,但是由于出现技术故障,反而返回给售票平台出票失败的业务执行结果,导致售票平台误以为出票失败而没有向用户收取机票费,给售票平台造成损失(用户后续乘机成功,却没有付费,而售票平台需要向航空公司支付机票费用)。
在上述第二个例子中,假设银行B转账成功,并且向支付平台返回了转账成功的业务执行结果,而支付平台的服务器由于出现技术故障,却向用户返回了转账失败的通知消息,给用户带来不便(用户在银行B的账户还是被扣款了)。
当出现上述的业务事故时,直接业务方与间接业务方往往会就事故责任的归属问题产生争议,而目前并没有方法可以证明业务事故是哪一方的技术故障导致的。
为此,在本说明书的一个或多个实施例中,将间接业务方返回给直接业务方的业务执行结果存证于区块链,不可篡改,因而是可信的。并且,业务直接方是从区块链获取业务执行结果来执行业务关联操作的。因此,待出现上述的业务事故时,由于可以从区块链中取证出业务直接方与业务间接方都认可的业务执行结果,因此,可以无争议地确认该业务事故是哪一方的技术故障导致的。
例如,在上述第一个例子中,如果航空公司A出票成功并且返回出票成功的业务执行结果,存证于区块链,售票平台的服务器却提示用户出票失败,未向用户收取机票费,根据区块链中存证的业务执行结果,可以证明是售票平台出现了技术故障,售票平台应当承担责任。
又如,在上述第二个例子中,如果银行B转行成功,却反悔转账失败的业务执行结果,存证于区块链,支付平台的服务器据此向用户发送转账失败的通知消息,根据区块链中存证的业务执行结果,可以证明是银行B出现了技术故障,银行B应当承担责任。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是本说明书实施例提供的一种基于区块链的业务执行结果获取方法的流程示意图,包括如下步骤:
S100:间接业务方设备确定所述业务的业务执行结果。
本方法所应用的场景为,直接业务方受理用户发起的业务,并将所述业务提交给间接业务方进行执行,随后,直接业务方需要从间接业务方获取业务执行结果,作为执行业务关联操作的依据。
直接业务方直接面向用户提供业务服务,对用户负责。但是,直接业务方需要将用户发起的业务转交给间接业务方进行实际执行,并根据间接业务方反馈的业务执行结果,来执行业务关联操作(如向用户反映业务执行情况、向用户收费、向用户发放奖励)
在本说明书实施例中,直接业务方通过区块链网络,间接获取间接业务方返回的业务执行结果。不只是业务执行结果会存证于区块链,直接业务方获取间接业务方返回的业务执行结果的整个过程也会存证于区块链。此外,直接业务方和间接业务方都需要预先在区块链网络上注册区块链账户,获取区块链用户身份。为了描述的方便,本文将直接业务方注册的区块链账户称为直接业务方账户,将间接业务方注册的区块链账户称为间接业务方账户。
业务方(不论是直接业务方还是间接业务方)与区块链网络进行数据交互是通过其注册的业务方账户来实现的。业务方需要在自己的设备上安装区块链客户端,在区块链客户端上登录业务方账户,才有权限使用区块链网络的服务。
在本说明书实施例中,直接业务方设备是指直接业务方的设备,如直接业务方的服务器。间接业务方设备是指间接业务方的设备,如间接业务方的服务器。直接业务方账户可以登录于所述直接业务方设备,也可以登录于连接于所述直接业务方设备的其他设备。间接业务方账户可以登录于所述间接业务方设备,也可以登录于连接于所述直接业务方设备的其他设备。
此外需要说明的是,所述区块链网络的节点中可以存在所述直接业务方管理的节点,也可以存在所述间接业务方管理的节点。例如,所述直接业务方设备就可以是区块链网络的节点,所述间接业务方设备也可以是区块链网络的节点。
在步骤S100中,间接业务方可以在执行业务之后,确定业务的业务执行结果,并开始返回所述业务执行结果。间接业务方也可以在执行业务并得到业务执行结果之后,先存储所述业务执行结果,然后等到合适的时机再从存储中调用所述业务执行结果并开始返回。
S102:所述间接业务方设备通过所述间接业务方账户,构建结果返回交易。
S104:所述间接业务设备将所述结果返回交易提交给所述区块链网络。
间接业务方当需要返回业务执行结果时,可以构建包含业务的业务标识与业务执行结果的结果返回交易。
需要说明的是,在实践中,间接业务方往往会处理不止一笔来自直接业务方的业务,对于不同的业务,需要使用业务标识进行区分。因此,需要在结果返回交易中写入所述业务执行结果对应的业务的业务标识,以表明所述结果返回交易所携带的业务执行结果是所述业务标识所标识的业务的业务执行结果。
S106:所述区块链网络根据所述结果返回交易,触发结果返回事件,以及,将所述结果返回交易写入区块链。
在本说明书实施例中,具体地,区块链网络中会预先部署有用于实现本方法的智能合约。区块链网络中的每个节点当获取到所述结果返回交易时,会利用智能合约的事件机制,触发一个结果返回事件,该结果返回事件表征间接业务方已经返回了所述业务标识对应的业务执行结果。
此外,所述区块链网络中的每个还会将所述结果返回交易写入自身的区块链,进行存证。
S108:所述直接业务方设备在通过所述直接业务方账户监听到所述结果返回事件后,通过所述直接业务方账户,从所述区块链网络获取所述结果返回交易。
S110:所述直接业务方设备从所述结果返回交易中提取所述业务执行结果。
区块链网络基于智能合约触发的结果返回事件会被直接业务方账户监听到,直接业务方账户此时可以从区块链网络中获取所述结果返回交易,进而提取到业务执行结果,作为执行业务关联操作的依据。
此外,在本说明书实施例中,间接业务方可以在执行业务得到业务执行结果后,不主动返回业务执行结果,还是由直接业务方请求获取所述业务执行结果。
具体地,在步骤S100之前,直接业务方设备可以过所述直接业务方账户,构建结果获取交易并提交给所述区块链网络,其中,所述结果获取交易包含所述业务的业务标识。然后,所述区块链网络根据所述结果获取交易,触发结果获取事件,以及,将所述结果获取交易写入区块链。
如此,在步骤S100中,间接业务方设备可以在通过所述间接业务方账户监听到所述结果获取事件后,通过所述间接业务方账户,从所述区块链网络获取所述结果获取交易;接着从所述结果获取交易中提取所述业务标识;然后根据所述业务标识,确定所述业务的业务执行结果(如从存储中读取所述业务标识对应的业务执行结果)。具体可参见图2。
进一步地,在本说明书实施例中,所述区块链网络在触发结果获取事件之前,为所述结果获取交易分配第一状态标记,然后将分配给所述结果获取交易的第一状态标记写入区块链。其中,所述第一状态标记表征:所述间接业务方设备未返回业务执行结果。
所述区块链网络在触发结果返回事件之前,为所述结果返回交易分配第二状态标记,然后将分配给所述结果返回交易的第二状态标记写入区块链。其中,所述第二状态标记表征:所述间接业务方设备已返回业务执行结果。
此外,所述直接业务方设备可以在获取所述结果返回交易中的业务执行结果之后,通过所述直接业务方账户,构建确认交易并提交给所述区块链网络,其中,所述确认交易包含所述业务标识;然后,所述区块链网络为所述确认交易分配第三状态标记,然后将分配给所述确认交易的第三状态标记写入区块链。其中,所述第三状态标记表征:所述直接业务方设备已获取业务执行结果。
上述第一状态标记、第二状态标记以及第三状态标记的作用在于,便于对直接业务方获取业务执行结果的整个流程的进展状态进行记录,也方便后续进行查证。
本说明书实施例还给出了一种基于区块链的业务执行结果获取***,用于实现直接业务方获取间接业务方返回的业务执行结果,以便直接业务方基于业务执行结果执行业务关联操作;所述业务执行结果是所述直接业务方在受理用户发起的业务后,将所述业务提交给间接业务方进行执行所得到的;所述直接业务方在区块链网络上注册有直接业务方账户,所述间接业务方在所述区块链网络上注册有间接业务方账户;
所述***包括区块链网络、直接业务方设备、间接业务方设备;
所述间接业务方设备,确定所述业务的业务执行结果;通过所述间接业务方账户,构建结果返回交易并提交给所述区块链网络,所述结果返回交易包含所述业务的业务标识与所述业务执行结果;
所述区块链网络,根据所述结果返回交易,触发结果返回事件,以及,将所述结果返回交易写入区块链;
所述直接业务方设备,在通过所述直接业务方账户监听到所述结果返回事件后,通过所述直接业务方账户,从所述区块链网络获取所述结果返回交易,并从所述结果返回交易中提取所述业务执行结果。
图3是本说明书实施例提供的一种间接业务方设备的结构示意图,用于实现直接业务方获取间接业务方返回的业务执行结果,以便直接业务方基于业务执行结果执行业务关联操作;所述业务执行结果是所述直接业务方在受理用户发起的业务后,将所述业务提交给间接业务方进行执行所得到的;所述直接业务方在区块链网络上注册有直接业务方账户,所述间接业务方在所述区块链网络上注册有间接业务方账户;
所述间接业务方设备包括:
确定模块301,确定所述业务的业务执行结果;
构建返回模块302,通过所述间接业务方账户,构建结果返回交易并提交给所述区块链网络;所述结果返回交易包含所述业务的业务标识与所述业务执行结果。
图4是本说明书实施例提供的一种直接业务方设备的结构示意图,用于实现直接业务方获取间接业务方返回的业务执行结果,以便直接业务方基于业务执行结果执行业务关联操作;所述业务执行结果是所述直接业务方在受理用户发起的业务后,将所述业务提交给间接业务方进行执行所得到的;所述直接业务方在区块链网络上注册有直接业务方账户,所述间接业务方在所述区块链网络上注册有间接业务方账户;
所述直接业务方设备包括:
获取模块401,在通过所述直接业务方账户监听到结果返回事件后,通过所述直接业务方账户,从所述区块链网络获取所述结果返回交易,并从所述结果返回交易中提取所述业务执行结果;
其中,所述结果返回事件是所述区块链网络根据所述结果返回交易触发的;所述结果返回交易是间接业务方设备通过所述间接业务方账户构建的;所述结果返回交易包含所述业务的业务标识与业务执行结果;所述业务执行结果是所述间接业务方设备确定的。
图5是本说明书实施例提供的一种区块链网络的节点的结构示意图,用于实现直接业务方获取间接业务方返回的业务执行结果,以便直接业务方基于业务执行结果执行业务关联操作;所述业务执行结果是所述直接业务方在受理用户发起的业务后,将所述业务提交给间接业务方进行执行所得到的;所述直接业务方在区块链网络上注册有直接业务方账户,所述间接业务方在所述区块链网络上注册有间接业务方账户;
所述节点包括:
处理模块501,根据结果返回交易,触发结果返回事件,以及,将所述结果返回交易写入区块链;
其中,所述结果返回交易是间接业务方设备通过所述间接业务方账户构建的;所述结果返回交易包含所述业务的业务标识与业务执行结果;所述业务执行结果是所述间接业务方设备确定的。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1所示方法的功能。
图6示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1410、存储器1420、输入/输出接口1430、通信接口1440和总线1450。其中处理器1410、存储器1420、输入/输出接口1430和通信接口1440通过总线1450实现彼此之间在设备内部的通信连接。
处理器1410可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1420可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1420可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1420中,并由处理器1410来调用执行。
输入/输出接口1430用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1450包括一通路,在设备的各个组件(例如处理器1410、存储器1420、输入/输出接口1430和通信接口1440)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1410、存储器1420、输入/输出接口1430、通信接口1440以及总线1450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1所示方法的功能。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的***、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。