一种数据处理方法、装置、电子设备和存储介质与流程

文档序号:31126425发布日期:2022-08-13 03:37阅读:43来源:国知局
一种数据处理方法、装置、电子设备和存储介质与流程

1.本说明书实施例属于区块链技术领域,尤其涉及一种数据处理方法、装置、电子设备和存储介质。


背景技术:

2.区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
3.区块链网络可以承担基于智能合约定义的链下计算任务,此时区块链网络中各区块链节点分别所处的各节点设备会在智能合约生成的事件的指导下,调用本地部署的链下计算引擎以用于实现链下计算任务。对于协作计算任务即需要多个节点设备共同协作完成的链下计算任务而言,经常存在某一节点设备内的数据需要被另一外部节点设备中的链下计算引擎读取的需求,提供数据的节点设备往往需要对作为数据需求方的链下计算引擎进行身份确认与鉴权以确保只将数据提供给合法的链下计算引擎,然而,这种基于身份的鉴权机制使得被授权的链下计算引擎即使不在处理协作计算任务时也能获取到授权方节点设备内的数据,一方面无法控制被授权方获取数据的范围和时机,存在一定的安全风险;另一方面也无法区分同一链下计算引擎在不同链下计算任务中的数据访问权限,影响同一链下计算引擎在不同链下计算任务中的功能独立性。


技术实现要素:

4.本发明的目的在于提供一种数据处理方法、装置、电子设备和存储介质。
5.根据本说明书一个或多个实施例的第一方面,提出了一种数据处理方法,应用于部署有第一区块链节点的第一节点设备,第一区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述链下计算任务中的执行逻辑;所述方法包括:
6.在监听到所述链下计算合约生成的授权申请事件且确定第一区块链节点属于第一参与方节点的情况下,获取第一节点设备在所述链下计算任务中的第一执行逻辑;
7.对第一执行逻辑进行审批以生成所述链下计算任务对应的第一授权结果,并通过第一区块链节点向所述链下计算合约发起携带有第一授权结果的第一授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件;
8.监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第一区块链节点属于所述协作计算任务对应的计算提供方节点的情况下,调用第一节点设备部署的链下计算引擎执行所述协作计算任务,所述链
下计算引擎用于:在执行所述协作计算任务的过程中,获取所述协作计算任务对应的数据提供方节点所处的第二节点设备上部署的代理访问引擎从第二节点设备读取到的数据。
9.根据本说明书一个或多个实施例的第二方面,提出了一种数据处理方法,应用于部署有第二区块链节点的第二节点设备,第二区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述链下计算任务中的执行逻辑;所述方法包括:
10.在监听到所述链下计算合约生成的授权申请事件且确定第二区块链节点属于第二参与方节点的情况下,获取第二节点设备在所述链下计算任务中的第二执行逻辑;
11.对第二执行逻辑进行审批以生成所述链下计算任务对应的第二授权结果,并通过第二区块链节点向所述链下计算合约发起携带有第二授权结果的第二授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件;
12.监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第二区块链节点属于所述协作计算任务对应的数据提供方节点的情况下,调用第二节点设备部署的代理访问引擎执行所述协作计算任务,所述代理访问引擎用于:在执行所述协作计算任务的过程中,将从第二节点设备读取到的数据提供至所述协作计算任务对应的计算提供方节点所处的第一节点设备部署的链下计算引擎。
13.根据本说明书一个或多个实施例的第三方面,提出了一种数据处理装置,应用于部署有第一区块链节点的第一节点设备,第一区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述链下计算任务中的执行逻辑;所述装置包括:
14.第一执行逻辑获取单元,用于在监听到所述链下计算合约生成的授权申请事件且确定第一区块链节点属于第一参与方节点的情况下,获取第一节点设备在所述链下计算任务中的第一执行逻辑;
15.第一授权交易发起单元,用于对第一执行逻辑进行审批以生成所述链下计算任务对应的第一授权结果,并通过第一区块链节点向所述链下计算合约发起携带有第一授权结果的第一授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件;
16.数据获取单元,用于监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第一区块链节点属于所述协作计算任务对应的计算提供方节点的情况下,调用第一节点设备部署的链下计算引擎执行所述协作计算任务,所述链下计算引擎用于:在执行所述协作计算任务的过程中,获取所述协作计算任务对应的数据提供方节点所处的第二节点设备上部署的代理访问引擎从第二节点设备读取到的数据。
17.根据本说明书一个或多个实施例的第四方面,提出了一种数据处理装置应用于部署有第二区块链节点的第二节点设备,第二区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述
链下计算任务中的执行逻辑;所述装置包括:
18.第二执行逻辑获取单元,用于在监听到所述链下计算合约生成的授权申请事件且确定第二区块链节点属于第二参与方节点的情况下,获取第二节点设备在所述链下计算任务中的第二执行逻辑;
19.第二授权交易发起单元,用于对第二执行逻辑进行审批以生成所述链下计算任务对应的第二授权结果,并通过第二区块链节点向所述链下计算合约发起携带有第二授权结果的第二授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件;
20.数据提供单元,用于监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第二区块链节点属于所述协作计算任务对应的数据提供方节点的情况下,调用第二节点设备部署的代理访问引擎执行所述协作计算任务,所述代理访问引擎用于:在执行所述协作计算任务的过程中,将从第二节点设备读取到的数据提供至所述协作计算任务对应的计算提供方节点所处的第一节点设备部署的链下计算引擎。
21.根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
22.处理器;
23.用于存储处理器可执行指令的存储器;
24.其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面所述的方法。
25.根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。
26.在本说明书实施例中,链下计算任务对应的各参与方节点所处的节点设备在监听到链下计算合约生成的授权申请事件后,将分别审核各自在链下计算任务中的执行逻辑以生成链下计算任务的授权结果,并向所述链下计算合约发起携带有各自授权结果的授权交易以完成对链下计算任务的授权,链下计算合约在完成对链下计算任务的授权后才会允许生成链下计算任务相关的任务事件,从而通过事件监听机制来指导各节点设备执行链下计算任务相关的协作计算任务,使得数据提供方节点所处的第二节点设备通过代理访问引擎将从第二节点设备读取到的数据提供至计算提供方节点所处的第一节点设备,从而将节点设备之间的数据交互限制在授权的链下计算任务的执行过程中,一方面将数据需求方获取数据的范围和时机限制在授权的链下计算任务的执行逻辑之内,降低了安全隐患;另一方面,同一链下计算引擎在不同链下计算任务中参与的执行逻辑可以不同,这意味着可以对同一链下计算引擎在不同链下计算任务中的数据访问权限进行不同的设计,因此能够实现同一链下计算引擎在不同协作计算任务中的功能独立性。
附图说明
27.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实
施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
28.图1是一示例性实施例提供的一种数据处理方法的流程图。
29.图2是一示例性实施例提供的另一种数据处理方法的流程图。
30.图3是一示例性实施例提供的一种节点设备交互的场景示意图。
31.图4是一示例性实施例提供的一种设备的结构示意图。
32.图5是一示例性实施例提供的一种数据处理装置的框图。
33.图6是一示例性实施例提供的另一种数据处理装置的框图。
具体实施方式
34.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
35.图1是一示例性实施例提供的一种数据处理方法的流程图。该方法应用于部署有第一区块链节点的第一节点设备,第一区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述链下计算任务中的执行逻辑;所述方法包括:
36.s102:在监听到所述链下计算合约生成的授权申请事件且确定第一区块链节点属于第一参与方节点的情况下,获取第一节点设备在所述链下计算任务中的第一执行逻辑。
37.本说明书实施例所涉及的数据处理方法具体应用于第一节点设备上部署的第一调用引擎,第一调用引擎承担了监听链下计算合约生成的事件、管理链下计算任务的有序进行、调用第一节点设备上的资源引擎以及向链下计算合约发起交易等功能,是连接链上资源与链下资源之间的衔接器。
38.在本说明书实施例中,授权申请事件中记录有所述链下计算任务对应的各参与方节点的描述信息,链下计算任务对应的各参与方节点是指涉及参与执行链下计算任务的各节点设备所在区块链网络中分别部署的各区块链节点,容易理解的是,不是区块链网络中的所有区块链节点都属于链下计算任务对应的参与方节点,但链下计算任务对应的各参与方节点一定属于区块链网络中的区块链节点。第一节点设备在监听到授权申请事件后,可以通过检查自身部署的第一区块链节点的标识信息是否包含于授权申请事件中记录的各参与方节点的描述信息中,来判断第一区块链节点是否属于链下计算任务对应的参与方节点。例如,当第一节点设备检查出第一区块链的标识信息与各参与方节点中第一参与方节点的描述信息相对应的情况下,将确定第一区块链节点属于第一参与方节点;而当检查出第一区块链的标识信息与各参与方节点中任一参与方节点的描述信息均不相对应的情况下,将确定第一区块链节点不属于链下计算任务对应的参与方节点。
39.在第一节点设备确定第一区块链节点属于第一参与方节点的情况下,第一节点设备判断自身接下来需要参与执行链下计算任务,为了能够预先知晓第一节点设备在后续执行链下计算任务的过程中所需执行的任务逻辑,第一节点设备会进一步获取第一节点设备
在所述链下计算任务中的第一执行逻辑。本说明书实施例所涉及的第一执行逻辑包括:第一节点设备上部署的各资源引擎的被调用情况和/或所述各资源引擎与其他节点设备部署的其他资源引擎之间的数据交互情况。由于链下计算任务往往会涉及多个节点设备共同参与执行,因此每个参与执行的节点设备都会承担相对独立的任务执行逻辑,从而通过各节点设备的共同配合协作以最终完成链下计算任务,所以每个参与方节点设备(部署有链下计算任务对应的参与方节点的节点设备)在链下计算任务中的执行逻辑都可以看作是链下计算任务整体的执行逻辑的一部分。例如,第一节点设备在所述链下计算任务中的第一执行逻辑就包括,第一节点设备在监听到链下计算合约生成的链下计算任务相关的各类任务事件时,应该如何调用第一节点设备本地部署的各资源引擎(包括链下计算引擎、数据引擎等),以及在调用这些资源引擎时需要在对应的调用请求中携带怎样的数据交互指导信息,以指示本地的资源引擎与其他哪些节点设备上部署的哪些资源引擎之间进行针对何种数据的数据交互。第一节点设备通过了解自身在链下计算任务中的第一执行逻辑,就能够获知自身应该如何参与执行链下计算任务,以及在参与执行链下计算任务的过程中与其他节点设备之间的数据交互情况,从而给后续针对链下计算任务的审批提供了材料基础。
40.在本说明书实施例中,所述链下计算合约在部署成功的初始化阶段或响应于授权申请交易的情况下用于触发生成所述授权申请事件。在本说明书实施例中,当链下计算合约被成功部署于所述区块链网络中时,该链下计算合约会触发执行初始化程序,这其中就包括生成授权申请事件,从而使各节点的设备在监听到授权申请事件后通过交易回传机制返回针对链下计算任务的授权结果。另外,也可以通过向链下计算合约主动发起授权申请交易,使得链下计算合约响应于授权申请交易触发生成授权申请事件以被各节点设备所监听,从而可以在有授权需求的情况下对链下计算任务进行多次重复授权,以应对如新参与节点加入、链下计算任务发生更新等需要重新确定链下计算任务合法性的场合。
41.在一实施例中,所述授权申请事件中包括所述各参与方节点所处节点设备在所述链下计算任务中的执行逻辑;所述获取第一节点设备在所述链下计算任务中的第一执行逻辑,包括:从所述授权申请事件中读取第一节点设备在所述链下计算任务中的第一执行逻辑。
42.在本说明书实施例中,授权申请事件中记录有涉及参与所述链下计算任务的所有参与方节点分别所处的各节点设备在所述链下计算任务中的各执行逻辑,具体而言,授权申请事件中记录有每个参与方节点的标识信息以及对应的执行逻辑,而每个参与方节点设备通过自身部署的区块链节点的标识信息读取出自身对应的执行逻辑,例如第一节点设备可以根据第一区块链节点的标识信息来从授权申请事件中匹配得到第一区块链节点的标识信息对应的第一执行逻辑,从而将第一执行逻辑从授权申请事件中读取出来。
43.在另一实施例中,所述获取第一节点设备在所述链下计算任务中的第一执行逻辑,包括:向所述链下计算合约发起执行逻辑查询交易,监听所述链下计算合约响应于所述执行逻辑查询交易生成的执行逻辑查询事件,从所述执行逻辑查询事件中读取第一节点设备在所述链下计算任务中的第一执行逻辑,所述执行逻辑查询事件记录有第一节点设备在所述链下计算任务中的第一执行逻辑或所述各参与方节点所处节点设备在所述链下计算任务中的执行逻辑。
44.在本说明书实施例中,授权申请事件并未记录任何有关链下计算任务的执行逻
辑,第一节点设备在监听到授权申请事件后,将作为一种触发方式,将指示第一节点设备主动去获取自身在链下计算任务中的第一执行逻辑。第一节点设备可以通过向链下计算合约主动发起执行逻辑查询交易,以使链下计算合约响应于该执行逻辑查询交易生成执行逻辑查询事件,将链下计算合约维护的执行逻辑查询交易所请求获取的执行逻辑记录在执行逻辑查询事件中,以供第一节点设备监听并从中读取得到第一节点设备在所述链下计算任务中的第一执行逻辑。本说明书实施例中,执行逻辑查询交易所请求获取的执行逻辑可以为第一节点设备在所述链下计算任务中的第一执行逻辑,也可以为所有参与方节点设备在链下计算任务中的各执行逻辑。
45.本说明书实施例所涉及的执行逻辑查询交易可以为共识交易或本地交易。在执行逻辑查询交易为共识交易的情况下,执行逻辑查询交易需要在区块链网络上进行共识,区块链网络中的所有区块链节点均会执行该交易并生成对应的执行逻辑查询事件,于是各节点设备均可以监听到该执行逻辑查询事件;而在执行逻辑查询交易为本地交易的情况下,执行逻辑查询交易不会在区块链网络上共识,即只有第一节点设备上部署的第一区块链节点会调用第一区块链节点维护的链下计算合约以执行该执行逻辑查询交易,其所生成的执行逻辑查询事件也只会由第一节点设备内部所监听,而不会被其他节点设备所监听。
46.在本说明书实施例中,链下计算合约会对执行逻辑查询交易的发起方身份进行验核,使得发起方节点设备只能请求获取自身在链下计算任务中的执行逻辑,而无法请求获取其他节点设备的执行逻辑,例如第一节点设备只能发起请求获取第一执行逻辑的执行逻辑查询交易。通过将执行逻辑查询交易设定为本地交易,同时应用本说明实施例所涉及的链下计算合约的身份验核和限制获取执行逻辑请求的机制,可以使每个参与方节点设备只能查询到自身在链下计算任务中的执行逻辑,而无法查询到自身以外的其他节点设备在链下计算任务中的执行逻辑,从而使得每个参与方节点设备都无法完全获悉链下计算任务的整体执行逻辑,通过这种信息隔离的方式起到了降低安全隐患的效果。
47.s104:对第一执行逻辑进行审批以生成所述链下计算任务对应的第一授权结果,并通过第一区块链节点向所述链下计算合约发起携带有第一授权结果的第一授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件。
48.在本说明书实施例中,第一节点设备在获取到第一执行逻辑后,可以通过调用第一节点设备上部署的审批系统对第一执行逻辑进行审批以生成一个针对第一执行逻辑的第一授权结果来作为所述链下计算任务对应的第一授权结果。第一节点设备在对第一执行逻辑进行审批时,可以根据自身预先定义的数据保密策略和资源持有情况来判断第一节点设备是否支持执行第一执行逻辑,即在判断第一节点设备部署的资源引擎能够满足第一执行逻辑中涉及的各资源引擎的被调用情况,和/或第一节点设备的数据保密策略不与第一执行逻辑中涉及的第一节点设备上和/或所述各资源引擎与其他节点设备部署的其他资源引擎之间的数据交互情况相冲突的情况下,第一节点设备生成的所述链下计算任务对应的第一授权结果用于表征第一节点设备对所述链下计算任务授权通过,否则第一授权结果用于表征第一节点设备对所述链下计算任务授权不通过。
49.第一节点设备在获取到第一授权结果后,将进一步通过第一区块链节点向所述链
下计算合约发起携带有第一授权结果的第一授权交易,除此之外,第一节点设备以外的其他参与方节点也会分别生成相应的授权结果,并各自向所述链下计算合约发起携带有所述链下计算任务对应的授权结果的授权交易。链下计算合约响应于各授权交易并维护这些授权交易所携带的各授权结果,当链下计算任务维护有来自链下计算任务对应的所有参与方节点分别所处的各参与方节点设备返回的所述链下计算任务对应的各授权结果、且这些授权结果均用于表征所述链下计算任务授权通过的情况下,将更新所述链下计算任务的状态为已授权,允许执行链下计算任务,这在合约层面上体现为允许所述链下计算合约生成所述链下计算任务相关的任务事件,具体而言:在所述链下计算任务的状态为未授权的情况下,即使链下计算合约被链下计算任务对应的交易所调用,链下计算合约也不会响应该交易以生成任何所述链下计算任务相关的任务事件;而在所述链下计算任务的状态为已授权的情况下,如果链下计算合约被链下计算任务对应的交易所调用,那么链下计算合约将正常响应该交易以生成所述链下计算任务相关的任务事件,从而通过事件监听机制指导各参与方节点设备执行链下计算任务。
50.在本说明书实施例中,每个参与方节点设备只审批涉及自身参与的链下计算任务中对应的那部分执行逻辑,而无需关注其他节点设备的执行逻辑,实现了一种针对涉及多个节点设备共同参与执行的链下计算任务的分布式审批授权,一方面减轻了各参与方节点设备的审批负担,另一方面也能实现信息隔离。由于链下计算任务被审批授权后才能够被执行,这使得各参与方节点设备在坚挺到链下计算合约生成的链下计算任务相关的任务事件的情况下,可以按照相关的任务事件的要求直接执行相关的任务逻辑,而无需重复验证本地的数据保密策略或资源持有情况是否支持执行相关的任务逻辑。
51.s106:监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第一区块链节点属于所述协作计算任务对应的计算提供方节点的情况下,调用第一节点设备部署的链下计算引擎执行所述协作计算任务,所述链下计算引擎用于:在执行所述协作计算任务的过程中,获取所述协作计算任务对应的数据提供方节点所处的第二节点设备上部署的代理访问引擎从第二节点设备读取到的数据。
52.在本说明书实施例中,链下计算合约是一个用于承载链下计算任务的链上载体,链下计算合约中定义有链下计算任务包含的若干子任务,用于描述一个链下计算任务中的数据流向和各节点设备的计算协作过程。由于链下计算合约部署在区块链网络上,因此限定了链下计算合约所定义的链下计算任务的参与方节点不超过区块链网络中的各区块链节点的范围。显然,同一个区块链网络中可以部署多个链下计算合约,而不同的链下计算合约其所涉及的参与方节点的数量和性能均可以灵活配置,这使得依托于同一个区块链网络可以实现不同任务类型、任务需求和任务规模的链下计算任务的部署。
53.为了说明链下计算合约如何指导以实现其定义的链下计算任务,下面将通过一个典型的链下计算合约的运作过程来简单介绍链下计算任务的实现逻辑。用户可以通过可视化合约编排系统生成链下计算合约的代码并在区块链网络中部署链下计算合约,从而使得链下计算合约定义了一种类型的链下计算任务的工作流程,它体现为若干个具有执行依赖顺序的子任务。在链下计算合约部署成功后,有权限调用该链下计算合约的用户就可以通过向链下计算合约发起任务创建交易的方式来创建并启动一个链下计算任务,链下计算合
约在接收到任务创建交易后会相应地创建一个归属于发起方用户的链下计算任务的任务实例,该任务实例中维护有链下计算任务的任务完成状态,具体体现为链下计算任务下各子任务的任务完成状态。链下计算合约响应于任务创建交易并生成对应的任务实例后,会进一步触发执行该实例对应的第一个子任务,在链下计算合约上体现为生成包含第一个子任务的参与方节点的事件,区块链网络中的各区块链节点都可以监听该事件,并且那些判定自身属于第一个子任务的参与方节点的区块链节点所处的节点设备会进一步调用匹配于该第一个子任务的链下计算资源和/或链下存储资源来在链下执行该第一个子任务,最后,参与方节点所处的节点设备在执行完毕后,会进一步向链下计算合约发起携带有第一个子任务的执行结果的结果返回交易,从而使得链下计算合约更新对应任务实例的任务完成状态,例如当第一个子任务的执行结果为执行成功时,链下计算合约就会将对应任务实例中第一个子任务的任务完成状态标记为已完成,从而按照预定义的链下计算任务包含的各子任务的依赖顺序触发执行下一批子任务,进而生成包含下一批子任务的参与方节点描述信息的事件以供区块链网络中的各区块链节点监听,其后续过程与前述处理第一个子任务的过程类似。由此一来,就形成了一个“链下计算合约更新任务完成状态

链下计算合约生成子任务事件

区块链节点监听子任务事件并由被指定的节点设备执行子任务

节点设备向链下计算合约发起子任务的结果返回交易

链下计算合约更新任务完成状态”的循环,直至链下计算合约中任务实例中所有子任务的任务完成状态均为已完成的情况下,确定该任务实例对应的链下计算任务已经执行完成。
54.不难发现,链下计算合约在链下计算任务的执行过程中所执行的任务仅包括创建任务实例、接收子任务结果、子任务调度与子任务下发这类调度性任务,实际上并没有真正执行链下计算任务所定义和要求执行的如数据计算、数据转移和数据存储等实际任务,而这些大量消耗资源的任务被调度至各节点设备所对应的链下进行执行,从而通过事件监听机制以及交易回传机制实现了一种基于区块链的分布式计算,使链下计算任务被区块链上的链下计算合约所锚定,在确保任务执行全流程可追踪的前提下充分利用链下资源,同时使得不同节点设备之间依托于区块链实现可信的信息交互与协作计算,另外由于链下计算任务是以合约形式定义且链下计算任务的设计并不受到链上资源的掣肘,这意味着可以通过设计不同的链下计算合约以满足不同的实际需求,通过链下资源扩展了链上协作方式。
55.在本说明书实施例中,所述链下计算合约维护有所述链下计算任务对应的任务完成状态,所述任务完成状态用于描述所述链下计算任务包含的各子任务的完成状态,所述链下计算任务相关的区块链事件包括所述各子任务对应的任务事件;在所述协作计算任务属于所述链下计算任务的子任务的情况下,所述监听到第一任务事件,包括:监听到所述链下计算合约在所述任务完成状态满足所述协作计算任务对应的执行条件的情况下生成的针对所述协作计算任务的第一任务事件。
56.在本说明书实施例中,链下计算任务在链下计算合约上表现为对应的任务实例,其任务完成状态维护在链下计算合约的相应任务实例中,具体表现为该任务实例中维护有各子任务的完成状态。在本说明书实施例中,所述链下计算任务相关的区块链事件包括所述各子任务对应的任务事件且所述协作计算任务属于所述链下计算任务的一个子任务,由于链下计算任务包含的各子任务的执行依赖顺序已经预先定义,这意味着包含所述协作计算任务在内的每个子任务的执行条件也已确定,因此链下计算合约可以依据链下计算任务
中包含的各子任务的完成状态来进一步确定接下来所需执行的协作计算任务,从而发起针对协作计算任务的任务事件。进一步的,还包括:在协作计算任务执行完毕的情况下,通过第一区块链节点向所述链下计算合约发起包含协作计算任务对应的执行结果的结果返回交易,以更新所述链下计算合约维护的链下计算任务对应的任务完成状态。如前所述,在第一节点设备通过调用资源执行子任务并执行完毕的情况下,会通过发起结果返回交易来更新链下计算合约维护的链下计算任务的任务完成状态,从而使得链下计算合约可以进一步根据链下计算任务中各子任务的执行依赖顺序确定接下来所应该执行的下一子任务,并生成针对下一子任务的任务事件。
57.在本说明书实施例中,监听链下计算合约生成的任务事件、向链下计算合约发起结果返回交易的实体具体为第一节点设备上部署的调度引擎。
58.如前所述,所述任务完成状态由所述链下计算合约响应于所述链下计算任务对应的交易触发更新,其中,所述链下计算任务对应的交易包括所述链下计算任务对应的任务创建交易,或者任一节点设备在对所述各子任务中任一子任务执行完毕的情况下发起的结果返回交易。
59.在本说明书实施例中,所述链下计算合约维护有一个或多个链下计算任务分别对应的任务完成状态。通常情况下,一个链下计算合约只会定义一种类型的链下计算任务,但可以创建该链下计算任务对应的多个任务实例,每个任务实例都会记录有该任务实例对应的任务完成状态。因此,链下计算合约上维护的多个任务实例可以是不同用户通过向链下计算合约分别发起任务创建合约而触发创建的,也可以是由同一个用户通过多次发起任务创建合约而触发创建的,但这些任务实例都具有相同的执行逻辑,即链下计算合约维护的各任务的任务类型相同。
60.本说明书实施例所涉及的代理访问引擎的类型可以为计算引擎或数据引擎。其中,计算引擎又称链下计算引擎,是指为节点设备提供链下计算能能力的服务或子系统,一个计算引擎往往能够承担一种或多种类型的计算任务,这体现在对相关子任务对应的计算需求的支持;数据引擎又称数据库引擎,是指用于存储、检索、处理和保护数据的核心服务程序,利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求,使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库,这包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程),不同的数据引擎所支持的数据访问方式或访问的数据类型有所不同,因此体现为相关子任务对应的数据引擎需求的支持。
61.在本说明书实施例中,第一节点设备监听到的所述链下计算合约生成的针对协作计算任务的第一任务事件中记录有协作计算任务对应的所述数据提供方节点和所述计算提供方节点的描述信息。第一任务事件包括协作计算任务的参与方节点的描述信息,这些描述信息具体是指协作计算任务规定的其所需涉及参与执行的节点设备所处区块链节点的身份信息。协作计算任务对应的参与方节点按照其对应的属性特点可被确定为协作计算任务对应的数据提供方节点和/或计算提供方节点,其中,协作计算任务对应的数据提供方节点是指:在一个由多个节点设备共同参与完成的协作计算任务的执行过程中,需要向其他节点设备提供数据的节点设备上部署的所述区块链网络中的区块链节点,该数据用于给其他节点设备上部署的链下计算引擎作为执行该协作计算任务和/或后续其他子任务所需
的数据而使用;而协作计算任务对应的计算提供方是指:在一个由多个节点设备共同参与完成的协作计算任务的执行过程中,提供链下计算引擎资源执行实际计算任务的节点设备上部署的所述区块链网络中的区块链节点。容易理解的是,对于协作计算任务中任一个参与方节点而言,其既可以为该协作计算任务对应的数据提供方节点,也可以为该协作计算任务对应的计算提供方节点,还可以同时为该协作计算任务对应的数据提供方节点与计算提供方节点。例如,对于一个同时为协作计算任务对应的数据提供方节点与计算提供方节点的参与方节点而言,其所处的节点设备上的链下计算引擎将在执行该协作计算任务的过程中,将同时获取该节点设备本地的数据以及数据提供方节点所处节点设备上的数据,以用于执行该协作计算任务和/或后续其他子任务。
62.在本说明书实施例中,第一任务事件中还记录有计算提供方节点所处第一节点设备上参与执行所述协作计算任务的链下计算引擎的标识信息,以提示第一节点设备对链下计算引擎的调用,以及数据提供方节点所处第二节点设备在调用代理访问引擎应该指导其将读取到的数据发送给该链下计算引擎。另外,第一任务事件中还会记录链下计算任务与协作计算任务的任务标识,从而对不同的任务和子任务进行区分,这主要是方便后续任一节点设备在对协作计算任务执行完毕并回传结果返回交易时能够正确标识是针对链下计算任务中协作计算任务的结果,使得链下计算合约能够通过结果返回交易正确更新对应链下计算任务的任务实例中协作计算任务的完成状态,以应对同一个任务包含多个子任务以及同一个链下计算年合约同时创建多个链下计算任务的任务实例的情况。当然协作计算任务还记录有自身所需执行的计算和数据转移等操作,且指定了所需数据的来源,这些信息是用于告知各节点设备协作计算任务的任务类型及其实现方式,从而指导节点设备在确定协作计算任务的任务类型及其实现方式对应可调用资源后,按照协作计算任务的预期执行协作计算任务。
63.在本说明书实施例中,由于第一任务事件中记录有所述计算提供方节点的描述信息,因此,第一节点设备可以通过在判断出自身部署的第一区块链节点的标识信息包含于第一任务事件中记录的所述计算提供方节点的描述信息情况下,确定第一区块链节点属于所述计算提供方节点;而在判断出第一区块链节点的标识信息未包含于第一任务事件中记录的所述计算提供方节点的描述信息的情况下,确定第一区块链节点不属于所述计算提供方节点。
64.在本说明书实施例中,第一节点设备需要在确定第一区块链节点属于所述协作计算任务对应的计算提供方节点的情况下,才会调用链下计算引擎执行所述协作计算任务,否则,如果第一节点设备不属于所述协作计算任务对应的计算提供方节点,第一节点设备不会调用链下计算引擎执行所述协作计算任务。同时,第一任务事件中还记录有代理访问引擎的标识信息和/或通讯地址,第一节点设备将代理访问引擎的标识信息和/或通讯地址写入用于调用链下计算引擎的调用请求中,并将调用请求发送至链下计算引擎以调用该链下计算引擎,链下计算引擎由此获知协作计算任务对应的数据提供方节点的标识信息以及用于提供数据的第二节点设备中部署的代理访问引擎的标识信息和/或通讯地址,从而能够知晓其需要从代理访问引擎获取第二节点设备上的数据。
65.在本说明书实施例中,所述代理访问引擎和所述链下计算引擎均在同一时间只能执行一个子任务/协作计算任务,因此所述代理访问引擎只能在执行所述协作计算任务的
时间段内才具备所述协作计算任务所规定的特定范围的数据的提供权限,而其他链下计算引擎也只能在与所述代理访问引擎共同执行相同的协作计算任务的期间才能从向代理访问引擎请求获取特定数据,而无法在任意时刻从代理访问引擎获取数据,也无法从代理访问引擎处获取任意数据,实现了一种基于协作计算任务的数据的访问时间限制与访问范围限制。
66.在本说明书实施例中,链下计算任务对应的各参与方节点所处的节点设备在监听到链下计算合约生成的授权申请事件后,将分别审核各自在链下计算任务中的执行逻辑以生成链下计算任务的授权结果,并向所述链下计算合约发起携带有各自授权结果的授权交易以完成对链下计算任务的授权,链下计算合约在完成对链下计算任务的授权后才会允许生成链下计算任务相关的任务事件,从而通过事件监听机制来指导各节点设备执行链下计算任务相关的协作计算任务,使得数据提供方节点所处的第二节点设备通过代理访问引擎将从第二节点设备读取到的数据提供至计算提供方节点所处的第一节点设备,从而将节点设备之间的数据交互限制在授权的链下计算任务的执行过程中,一方面将数据需求方获取数据的范围和时机限制在授权的链下计算任务的执行逻辑之内,降低了安全隐患;另一方面,同一链下计算引擎在不同链下计算任务中参与的执行逻辑可以不同,这意味着可以对同一链下计算引擎在不同链下计算任务中的数据访问权限进行不同的设计,因此能够实现同一链下计算引擎在不同协作计算任务中的功能独立性。
67.在本说明书实施例中,链下计算引擎会在被第一节点调用时指明其所需要执行的所述协作计算任务的任务逻辑,这其中包含链下计算任务需要向对应的第二节点设备部署的代理访问引擎获取数据的过程,于是,链下计算引擎就可以在执行协作计算任务的过程中,通过以下至少两种策略来获取代理访问引擎从第二节点设备处读取的数据。
68.在一实施例中,链下计算引擎在执行协作计算任务的过程中不会主动向代理访问引擎请求获取数据,而是等待代理访问引擎主动向链下计算引擎推送数据。在这种情况下,代理访问引擎响应于第二节点设备的调用而执行协作计算任务的过程中,可以按照协作计算任务的要求从第二节点设备中读取协作计算任务规定的数据,并向协作计算任务指定的第一节点设备下的链下计算引擎主动推送该数据,从而使得链下计算引擎获取该数据。由于本实施例采用的是代理访问引擎在执行协作计算任务的过程中主动推送数据的机制,作为数据持有方和授权方的代理访问引擎基于可信的链下计算合约生成的第一任务事件以获知第一节点设备部署的链下计算引擎的相关数据获取需求,且具有主动提供数据的能力,这使得代理计算引擎无需在向外部传输数据时进行重复鉴权,而是直接按照协作计算任务的要求执行协作计算任务就能够实现安全的数据交互,一方面将向外部传输数据的时间限定在执行协作计算任务期间,另一方面也使得代理计算引擎对外部传输的数据的范围受到协作计算任务的限制。
69.在另一实施例中,链下计算引擎在执行协作计算任务的过程中会主动向代理访问引擎发送数据访问请求以获取第二节点设备上的数据,然而这就要求代理访问引擎验证数据访问请求是否符合规定,是否是针对于协作计算任务中必要的数据交互,而只有在代理访问引擎确定接收的数据访问请求符合协作计算任务的执行逻辑,响应于该数据访问请求并向外传输数据的行为属于执行协作计算任务过程中的一个正常环节的情况下,才会响应于数据访问请求并向链下计算引擎提供数据。
70.可选的,所述链下计算引擎还用于:在执行所述协作计算任务的过程中,将数据访问请求与所述数据访问请求对应的授权凭证发送至所述代理访问引擎;所述代理访问引擎用于:在执行所述协作计算任务的过程中,接收所述数据访问请求与所述授权凭证,并在确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务的情况下,将从第二节点设备读取到的所述数据发送至所述链下计算引擎。
71.在本说明书实施例中,链下计算引擎在执行协作计算任务的过程中,如果需要获取第二节点设备中的数据,则会向第二节点设备上部署的代理访问引擎发送数据访问请求,该数据访问请求所要求获取的数据在协作计算任务定义的所需数据的范围之内,同时为了使代理访问引擎确信该数据访问请求是针对于执行协作计算任务而发出的,链下计算引擎还会同步向代理访问引擎发送所述数据访问请求对应的授权凭证,以用于证明所述数据访问请求是基于执行所述协作计算任务的过程中所发出的。第一任务事件被第二节点设备监听后,也会触发第二节点设备调用本地部署的代理访问引擎执行协作计算任务,代理访问引擎在执行所述协作计算任务的过程中,将根据所述协作计算任务的要求向第一节点设备中的链下计算引擎提供第二节点设备上特定的数据,由于本实施例采用的是请求-响应的被动推送数据的机制,因此代理访问引擎在执行协作计算任务期间,将开放协作计算任务所指定的所述链下计算引擎访问第二节点设备上协作计算任务所指定的数据。当接收到所述链下计算引擎发送的数据访问请求和授权凭证后,代理访问引擎对授权凭证进行验证,如果确定所述数据访问请求针对于所述协作计算任务,即是所述数据访问请求在执行所述协作计算任务的过程中所发出的,那么代理访问引擎就会响应所述数据访问请求,在协作计算任务所定义的可供提供的数据范围内,将所述数据访问请求所指定的数据从第二节点设备中读取并返回至所述链下计算引擎,如果未接收到所述数据访问请求对应的授权凭证或接收到的所述授权凭证无法表征所述数据访问请求针对于所述协作计算任务,那么代理访问引擎将不会响应于所述数据访问请求,不将本地数据提供至所述链下计算引擎。本说明书实施例通过对授权凭证进行验证,使得在被动推送的机制下,代理访问引擎能够有效地区分接收到的数据访问请求是否合法,进而拒绝响应除以执行所述协作计算任务以外为目的的所述链下计算引擎的数据访问请求,实现安全地数据交互。
72.可选的,第一任务事件记录有所述协作计算任务的标识信息,所述授权凭证包括所述标识信息,所述代理访问引擎用于在所述授权凭证包括所述标识信息的情况下,确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务。在本说明书实施例中,由于第一任务事件同时能够被第一节点设备与第二节点设备所监听,因此可以将所述协作计算任务的标识信息携带在第一任务事件中,从而使得第一节点设备和第二节点设备均获得了所述协作计算任务的标识信息,同时不同的协作计算任务的标识信息互不相同,因此该标识信息可以作为链下计算引擎与代理访问引擎之间确定针对于所述协作计算任务的共识信息。代理访问引擎通过在确定所述授权凭证中包含所述标识信息的情况下,确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务。
73.可选的,第一任务事件记录有所述协作计算任务对应的任务公钥和任务私钥密文,其中,所述任务私钥密文通过使用所述链下计算引擎对应的公钥对所述协作计算任务对应的任务私钥进行加密得到;所述授权凭证包括使用所述任务私钥对所述数据访问请求进行签名得到的第一数字签名,所述任务私钥由所述链下计算引擎使用所述链下计算引擎
对应的私钥对所述任务私钥密文进行解密得到;所述代理访问引擎用于在使用第一任务事件中记录的所述任务公钥对所述第一数字签名验签成功的情况下,确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务。在本说明书实施例中,链下计算合约在生成所述协作计算任务对应的第一任务事件时,将同步为所述协作计算任务生成一对公私钥对,称为所述协作计算任务的任务公钥与任务私钥,其中,任务公钥被直接记录在第一任务事件中从而通过事件监听机制被各节点设备所获知,而任务私钥则通过所述协作计算任务所涉及的需要跨域获取数据的所述链下计算引擎对应的公钥进行加密后记录在第一任务事件中,即以任务私钥密文的形式被各节点设备所获知,然而由于第一节点设备中的所述链下计算引擎是拥有用于解密所述任务私钥密文的所述链下计算引擎对应的私钥,因此,第一节点设备在第一任务事件读取得到所述任务私钥密文后,会将其放入用于调用所述链下计算引擎的调用请求中,以使所述链下计算引擎在执行所述协作计算任务的过程中,可以通过自身私钥解密所述任务私钥密文以得到所述任务私钥。唯一能够获取所述任务私钥的链下计算任务由此通过所述任务私钥对数据访问请求进行签名以获取第一数字签名以作为所述授权凭证,代理访问引擎在接收到所述授权凭证中的第一数字签名后,通过第一节点设备在第一任务事件中读取得到的所述任务公钥对第一数字签名进行验签,在验签成功的情况下,确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务。在本说明书实施例中,由于只有链下计算引擎能够获取协作计算任务对应的任务私钥,因此一旦代理访问引擎验证第一数字签名成功,则意味着代理访问引擎可以确信所述数据访问请求是拥有所述任务私钥的链下计算引擎所发起的,于是代理访问引擎可以认定所述数据访问请求是针对于所述协作计算任务所发起的,同时所述数据访问请求的发起方必然是所述协作计算任务的合规执行方,因此代理访问引擎无需重复验证所述链下计算引擎的身份信息,加快了被动推送的机制中链下计算引擎获取跨域数据的效率。
74.可选的,所述链下计算引擎还用于:在执行所述协作计算任务的过程中,将使用所述链下计算引擎对应的私钥对所述数据访问请求进行签名得到的第二数字签名发送至所述代理访问引擎;所述代理访问引擎还用于:在执行所述协作计算任务的过程中,使用所述链下计算引擎对应的公钥对接收到的第二数字签名进行验签,在验签成功且确定所述链下计算引擎具有第一节点设备的访问权限的情况下,确定所述授权凭证有效。在本说明书实施例中,链下计算引擎还需要通过第二数字签名向代理访问引擎证明自身身份的有效性,代理访问引擎在对第二数字签名验证通过后,能够确认该数据访问请求来源于所述链下计算引擎,从而可以在所述协作计算任务包含“向所述链下计算引擎提供所述数据访问请求所请求获取的数据”的逻辑的情况下,和/或代理访问引擎基于预先维护的基于身份权限的数据访问监控系统判断“向所述链下计算引擎提供所述数据访问请求所请求获取的数据”是可被允许的情况下,将确认所述授权凭证有效,并进一步对所述授权凭证进行验证。本说明书实施例结合了传统的基于身份的数据访问权限的供给策略,给不同节点设备之间跨域的数据交互带来了更佳的安全性。
75.图2是一示例性实施例提供的另一种数据处理方法的流程图。该方法应用于部署有第二区块链节点的第二节点设备,第二区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述链下计算任务中的执行逻辑;所述方法包括:
76.s202:在监听到所述链下计算合约生成的授权申请事件且确定第二区块链节点属于第二参与方节点的情况下,获取第二节点设备在所述链下计算任务中的第二执行逻辑。
77.s204:对第二执行逻辑进行审批以生成所述链下计算任务对应的第二授权结果,并通过第二区块链节点向所述链下计算合约发起携带有第二授权结果的第二授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件。
78.s206:监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第二区块链节点属于所述协作计算任务对应的数据提供方节点的情况下,调用第二节点设备部署的代理访问引擎执行所述协作计算任务,所述代理访问引擎用于:在执行所述协作计算任务的过程中,将从第二节点设备读取到的数据提供至所述协作计算任务对应的计算提供方节点所处的第一节点设备部署的链下计算引擎。
79.在第一任务事件中记录的所述数据提供方节点的描述信息中包含第二区块链节点的标识信息的情况下,确定第二区块链节点属于所述数据提供方节点。在本说明书实施例中,针对协作计算任务的第一任务事件中记录有协作计算任务对应的数据提供方节点的描述信息,这意味着第二节点设备可以在确定所述数据提供方节点的描述信息中包含自身部署的第二区块链节点的标识信息的情况下,判断自身所部属的第二区块链节点属于协作计算任务对应的数据提供方节点;而如果所述数据提供方节点的描述信息中不包含第二区块链节点的标识信息,则第二节点设备可以判断自身所部署的第二区块链节点不属于协作计算任务对应的数据提供方节点。
80.在本说明书实施例中,第二节点设备需要在确定第二区块链节点属于所述协作计算任务对应的数据提供方节点的情况下,才会调用代理访问引擎执行所述协作计算任务,否则,如果第二节点设备不属于所述协作计算任务对应的数据提供方节点,第二节点设备不会调用代理访问引擎执行所述协作计算任务。代理访问引擎在被第二节点设备调用后,将获知协作计算任务对应的计算提供方节点的标识信息以及需要向其提供数据的第一节点设备中部署的链下计算引擎的标识信息,从而指示代理访问引擎能够将从第二节点设备上读取到的数据传输至对应的链下计算引擎。
81.图3是一示例性实施例提供的一种节点设备交互的场景示意图。如图3所示,第一节点设备部署有区块链网络中的第一区块链节点、第一调度引擎、链下计算引擎与第一数据源,第二节点设备上部署有区块链网络中的第二区块链节点、第二调度引擎、代理访问引擎与第二数据源。
82.当链下计算合约生成授权申请事件且该事件记录有参与执行链下计算任务的第一区块链节点与第二区块链节点的描述信息后,第一调度引擎将通过第一区块链节点监听到该授权申请事件,假设授权申请事件中包含有各参与方节点设备在链下计算任务中的各执行逻辑,那么第一调度引擎将从授权申请事件中读取得到第一节点设备参与执行链下计算任务的第一执行逻辑,并对第一执行逻辑进行审计以生成所述链下计算任务对应的第一授权结果后,通过第一区块链节点向所述链下计算合约发起携带有第一授权结果的第一授权交易;同理,第二调度引擎在监听到授权申请事件后也能从中读取得到第二节点设备参
与执行链下计算任务的第二执行逻辑,对第二执行逻辑进行审计以生成所述链下计算任务对应的第二授权结果,并通过第二区块链节点向所述链下计算合约发起携带有第二授权结果的第二授权交易。
83.链下计算合约响应于第一授权交易与第二授权交易,获取携带在其中的第一授权结果与第二授权结果,假设第一授权结果与第二授权结果均用于表征授权通过,那么链下计算合约将允许所述链下计算合约生成所述链下计算任务相关的任务事件。
84.当链下计算合约生成所述链下计算任务的子任务之一的协作计算任务的第一任务事件后,第一任务事件将分别被第一调度引擎与第二调度引擎所监听,假设第一任务事件中同时记录有协作计算任务对应的数据提供方节点与计算提供方节点的描述信息,以及所需提供数据的代理访问引擎的标识信息、所需获取数据的链下计算引擎的标识信息、所需提供的数据的标识信息,其中,数据提供方节点的描述信息为第二区块链节点的标识信息,计算提供方节点的描述信息为第一区块链节点的标识信息。因此,第二调度引擎可以确定第二节点设备需要向第一节点设备中的链下计算引擎提供数据,于是第二调度引擎将调用代理访问引擎执行协作计算任务,将从第二数据源中获取的数据主动传输给第一节点设备中的链下计算引擎。另一边,第一调度引擎可以确定第一节点设备中部署的第一任务事件中指定的链下计算引擎需要获取第二节点设备的数据,于是第一调度引擎将调用该指定的链下计算引擎执行协作计算任务,例如,该指定的链下计算引擎为运行在可行执行环境中的可信计算引擎,其需要从第二节点设备获取数据以完成协作计算任务中定义的相关可信计算操作,此时将该可信计算引擎将通过与第二节点设备上部署的代理访问引擎之间的网络连接获取代理访问引擎发送的相关数据,从而进一步执行可信计算操作以支持继续完成协作计算任务。
85.图4是一示例性实施例提供的一种设备的示意结构图。请参考图4,在硬件层面,该设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
86.如图5所示,图5是本说明书根据一示例性实施例提供的一种数据处理装置的框图,该装置可以应用于如图4所示的设备中,以实现本说明书的技术方案;所述装置应用于部署有第一区块链节点的第一节点设备,第一区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述链下计算任务中的执行逻辑;所述装置包括:
87.第一执行逻辑获取单元501,用于在监听到所述链下计算合约生成的授权申请事件且确定第一区块链节点属于第一参与方节点的情况下,获取第一节点设备在所述链下计算任务中的第一执行逻辑。
88.第一授权交易发起单元502,用于对第一执行逻辑进行审批以生成所述链下计算任务对应的第一授权结果,并通过第一区块链节点向所述链下计算合约发起携带有第一授权结果的第一授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授
权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件。
89.数据获取单元503,用于监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第一区块链节点属于所述协作计算任务对应的计算提供方节点的情况下,调用第一节点设备部署的链下计算引擎执行所述协作计算任务,所述链下计算引擎用于:在执行所述协作计算任务的过程中,获取所述协作计算任务对应的数据提供方节点所处的第二节点设备上部署的代理访问引擎从第二节点设备读取到的数据。
90.可选的,所述授权申请事件中包括所述各参与方节点所处节点设备在所述链下计算任务中的执行逻辑;所述第一执行逻辑获取单元501具体用于:
91.从所述授权申请事件中读取第一节点设备在所述链下计算任务中的第一执行逻辑。
92.可选的,第一执行逻辑包括:第一节点设备上部署的各资源引擎的被调用情况和/或所述各资源引擎与其他节点设备部署的其他资源引擎之间的数据交互情况。
93.可选的,所述第一执行逻辑获取单元501具体用于:
94.向所述链下计算合约发起执行逻辑查询交易,监听所述链下计算合约响应于所述执行逻辑查询交易生成的执行逻辑查询事件,从所述执行逻辑查询事件中读取第一节点设备在所述链下计算任务中的第一执行逻辑,所述执行逻辑查询事件记录有第一节点设备在所述链下计算任务中的第一执行逻辑或所述各参与方节点所处节点设备在所述链下计算任务中的执行逻辑。
95.可选的,所述链下计算合约在部署成功的初始化阶段或响应于授权申请交易的情况下用于触发生成所述授权申请事件。
96.可选的,所述链下计算合约维护有所述链下计算任务对应的任务完成状态,所述任务完成状态用于描述所述链下计算任务包含的各子任务的完成状态,所述链下计算任务相关的区块链事件包括所述各子任务对应的任务事件;在所述协作计算任务属于所述链下计算任务的子任务的情况下,所述第一执行逻辑获取单元501具体用于:
97.监听到所述链下计算合约在所述任务完成状态满足所述协作计算任务对应的执行条件的情况下生成的针对所述协作计算任务的第一任务事件。
98.可选的,所述任务完成状态由所述链下计算合约响应于所述链下计算任务对应的交易触发更新,其中,所述链下计算任务对应的交易包括所述链下计算任务对应的任务创建交易,或者任一节点设备在对所述各子任务中任一子任务执行完毕的情况下发起的结果返回交易。
99.可选的,第一任务事件中记录有所述数据提供方节点和所述计算提供方节点的描述信息。
100.可选的,所述链下计算引擎还用于:在执行所述协作计算任务的过程中,将数据访问请求与所述数据访问请求对应的授权凭证发送至所述代理访问引擎;
101.所述代理访问引擎用于:在执行所述协作计算任务的过程中,接收所述数据访问请求与所述授权凭证,并在确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务的情况下,将从第二节点设备读取到的所述数据发送至所述链下计算引擎。
102.可选的,第一任务事件记录有所述协作计算任务的标识信息,所述授权凭证包括所述标识信息,所述代理访问引擎用于在所述授权凭证包括所述标识信息的情况下,确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务。
103.可选的,第一任务事件记录有所述协作计算任务对应的任务公钥和任务私钥密文,其中,所述任务私钥密文通过使用所述链下计算引擎对应的公钥对所述协作计算任务对应的任务私钥进行加密得到;
104.所述授权凭证包括使用所述任务私钥对所述数据访问请求进行签名得到的第一数字签名,所述任务私钥由所述链下计算引擎使用所述链下计算引擎对应的私钥对所述任务私钥密文进行解密得到;
105.所述代理访问引擎用于在使用第一任务事件中记录的所述任务公钥对所述第一数字签名验签成功的情况下,确定所述授权凭证用于表明所述数据访问请求针对于所述协作计算任务。
106.可选的,所述链下计算引擎还用于:在执行所述协作计算任务的过程中,将使用所述链下计算引擎对应的私钥对所述数据访问请求进行签名得到的第二数字签名发送至所述代理访问引擎;
107.所述代理访问引擎还用于:在执行所述协作计算任务的过程中,使用所述链下计算引擎对应的公钥对接收到的第二数字签名进行验签,在验签成功且确定所述链下计算引擎具有第一节点设备的访问权限的情况下,确定所述授权凭证有效。
108.如图6所示,图6是本说明书根据一示例性实施例提供的一种数据处理装置的框图,该装置可以应用于如图4所示的设备中,以实现本说明书的技术方案;所述装置应用于部署有第二区块链节点的第二节点设备,第二区块链节点所属的区块链网络部署有链下计算合约,所述链下计算合约维护有链下计算任务对应的各参与方节点所处的节点设备在所述链下计算任务中的执行逻辑;所述装置包括:
109.第二执行逻辑获取单元601,用于在监听到所述链下计算合约生成的授权申请事件且确定第二区块链节点属于第二参与方节点的情况下,获取第二节点设备在所述链下计算任务中的第二执行逻辑。
110.第二授权交易发起单元602,用于对第二执行逻辑进行审批以生成所述链下计算任务对应的第二授权结果,并通过第二区块链节点向所述链下计算合约发起携带有第二授权结果的第二授权交易,所述链下计算合约用于:响应于所述各参与方节点分别发起的授权交易,在所述链下计算任务对应的各授权结果均用于表征授权通过情况下,允许所述链下计算合约生成所述链下计算任务相关的任务事件。
111.数据提供单元603,用于监听所述链下计算合约生成的第一任务事件,第一任务事件对应于所述链下计算任务相关的协作计算任务;在确定第二区块链节点属于所述协作计算任务对应的数据提供方节点的情况下,调用第二节点设备部署的代理访问引擎执行所述协作计算任务,所述代理访问引擎用于:在执行所述协作计算任务的过程中,将从第二节点设备读取到的数据提供至所述协作计算任务对应的计算提供方节点所处的第一节点设备部署的链下计算引擎。
112.在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然
而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
113.控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
114.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本发明不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
115.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其
任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
116.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
117.本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
118.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
119.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
120.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
121.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
122.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据
信号和载波。
123.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
124.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
125.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
126.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1