一种基于区块链的跨链数据处理方法及装置与流程

文档序号:19128998发布日期:2019-11-13 02:24阅读:238来源:国知局
一种基于区块链的跨链数据处理方法及装置与流程

本申请涉及互联网技术领域,尤其涉及一种基于区块链的跨链数据处理方法及装置。



背景技术:

区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

随着区块链技术及应用的快速发展,当前已经出现了各种各样的相互独立的区块链网络,而实现跨区块链的交易已经成为当今区块链应用的迫切需求。跨链技术可以理解为各个区块链之间连通的桥梁。目前主要的跨链技术有:公证人机制(notaryschemes)、侧链/中继(sidechains/relays)、哈希锁定(hash-locking)等。

现有的跨链技术中,跨链交易一般为同步处理。在第二区块链处理交易的过程中,第一区块链需要一直等待交易完成,过程中不能处理其它交易。因此,存在资源浪费和耗时较长的问题。



技术实现要素:

本申请实施例提供了一种基于区块链的跨链数据处理方法及装置,用于提高跨链数据处理过程中效率并降低资源消耗。

根据本申请实施例的第一方面,提供了一种基于区块链的跨链数据处理方法,包括:

第一区块链根据接收到的跨链数据处理请求,确定数据处理内容,所述数据处理内容中包含部署于所述第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,所述第一跨链智能合约与所述第二跨链智能合约相对应;

所述第一区块链根据所述第一调用地址调用第一跨链智能合约,执行所述数据处理内容中与所述第一区块链对应的第一操作,得到第一操作结果;

所述第一区块链对所述第一操作结果达成共识后,将所述数据处理内容以及所述第一操作结果写入第一账本;

所述第一区块链在获知第二区块链的第二账本中写入第二操作结果时,从所述第二账本获取所述第二操作结果,所述第二操作结果为所述第二区块链根据所述第二调用地址调用第二跨链智能合约执行所述数据处理内容中与所述第二区块链对应的第二操作得到的;

所述第一区块链将所述第二操作结果写入所述第一账本。

一种可选的实施例中,所述第一区块链获取所述第二操作结果之后,还包括:

所述第一区块链对所述第二操作结果进行检测;

若所述第二操作结果与所述数据处理内容相符,则执行将所述第二操作结果写入所述第一账本的操作;

若所述第二操作结果与所述数据处理内容不相符,则对所述第一操作结果执行回滚操作。

一种可选的实施例中,所述第一区块链根据所述第一调用地址调用第一跨链智能合约,执行所述数据处理内容中与所述第一区块链对应的第一操作,得到第一操作结果之后,还包括:

所述第一区块链调用所述第一跨链智能合约,基于所述数据处理内容以及所述第一操作结果,构建第一梅克尔树;

所述第一区块链将所述第一梅克尔树的根节点写入所述第一账本;

所述第一区块链获知所述第二区块链的第二账本中写入第二操作结果之后,还包括:

所述第一区块链从所述第二账本中获取第二梅克尔树的根节点,所述第二梅克尔树为所述第二区块链调用所述第二跨链智能合约基于所述第二操作结果构建的;

所述第一区块链对所述第二操作结果进行检测,包括:

所述第一区块链调用第一管理智能合约,利用所述第二梅克尔树的根节点对所述第二操作结果进行检测。

一种可选的实施例中,所述第一区块链根据接收到的跨链数据处理请求,确定数据处理内容之后,还包括:

所述第一区块链对所述跨链数据处理请求中的数字签名进行检测;

所述第一区块链调用第一管理智能合约,对所述数据处理内容的合法性进行检测;

若检测成功,则调用所述第一跨链智能合约执行所述第一操作,得到第一操作结果;

若检测失败,则将所述数据处理内容标记失败结果。

一种可选的实施例中,所述第一区块链获知第二区块链的第二账本中写入第二操作结果,包括:

所述第一区块链按照设定频率查看所述第二账本的状态标志;

所述第一区块链发现所述状态标志发生改变,则确定所述第二账本中写入所述第二操作结果。

根据本申请实施例的第二方面,提供了一种基于区块链的跨链数据处理方法,所述方法包括:

第二区块链获知第一区块链的第一账本中写入第一操作结果时,从所述第一账本中获取所述数据处理内容;所述数据处理内容中包含部署于所述第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,所述第一跨链智能合约与所述第二跨链智能合约相对应,所述第一跨链智能合约部署于所述第一区块链中,所述第二跨链智能合约部署于所述第二区块链中;

所述第二区块链根据所述第二调用地址调用第二跨链智能合约,执行所述数据处理内容中与所述第二区块链对应的第二操作,得到第二操作结果;

所述第二区块链对所述第二操作结果达成共识后,将所述第二操作结果写入第二账本。

一种可选的实施例中,所述第二区块链获知第一区块链的第一账本中写入第一操作结果之后,还包括:

所述第二区块链从所述第一账本中获取第一梅克尔树的根节点,所述第一梅克尔树为所述第一区块链调用所述第一跨链智能合约基于所述数据处理内容以及所述第一操作结果构建的;

所述第二区块链调用第二管理智能合约,利用所述第一梅克尔树的根节点对所述数据处理内容以及所述第一操作结果进行检测;

所述第二区块链根据所述数据处理内容中的第二调用地址调用第二跨链智能合约,执行所述数据处理内容中与所述第二区块链对应的第二操作,得到第二操作结果之后,还包括:

所述第二区块链调用所述第二跨链智能合约,基于所述第二操作结果,构建第二梅克尔树;

所述第二区块链将所述第二梅克尔树的根节点写入所述第二账本。

一种可选的实施例中,所述第二区块链获知第一区块链的第一账本中写入第一操作结果,包括:

所述第二区块链按照设定频率查看所述第一账本的状态标志;

所述第二区块链发现所述状态标志发生改变,则确定所述第一账本中写入所述第一操作结果。

根据本申请实施例的第三方面,提供了一种基于区块链的跨链数据处理装置,所述装置包括:

第一获取单元,用于根据接收到的跨链数据处理请求,确定数据处理内容,所述数据处理内容中包含部署于所述第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,所述第一跨链智能合约与所述第二跨链智能合约相对应;

第一执行单元,用于根据所述第一调用地址调用第一跨链智能合约,执行所述数据处理内容中与所述第一区块链对应的第一操作,得到第一操作结果;

第一写入单元,用于对所述第一操作结果达成共识后,将所述数据处理内容以及所述第一操作结果写入第一账本;

所述第一获取单元,还用于在获知第二区块链的第二账本中写入第二操作结果时,从所述第二账本获取所述第二操作结果,所述第二操作结果为所述第二区块链根据所述第二调用地址调用第二跨链智能合约执行所述数据处理内容中与所述第二区块链对应的第二操作得到的;

所述第一写入单元,还用于将所述第二操作结果写入所述第一账本。

一种可选的实施例中,还包括第一检测单元,用于:

对所述第二操作结果进行检测;

若所述第二操作结果与所述数据处理内容相符,则所述第一执行单元执行将所述第二操作结果写入所述第一账本的操作;

若所述第二操作结果与所述数据处理内容不相符,则所述第一执行单元对所述第一操作结果执行回滚操作。

一种可选的实施例中,所述第一执行单元,还用于调用所述第一跨链智能合约,基于所述数据处理内容以及所述第一操作结果,构建第一梅克尔树;

所述第一写入单元,还用于将所述第一梅克尔树的根节点写入所述第一账本;

所述第一获取单元,还用于从所述第二账本中获取第二梅克尔树的根节点,所述第二梅克尔树为所述第二区块链调用所述第二跨链智能合约基于所述第二操作结果构建的;

所述第一检测单元,还用于调用第一管理智能合约,利用所述第二梅克尔树的根节点对所述第二操作结果进行检测。

一种可选的实施例中,所述第一检测单元,还用于:

对所述跨链数据处理请求中的数字签名进行检测;

调用第一管理智能合约,对所述数据处理内容的合法性进行检测;

若检测成功,则所述第一执行单元调用所述第一跨链智能合约执行所述第一操作,得到第一操作结果;

若检测失败,则所述第一写入单元将所述数据处理内容标记失败结果。

一种可选的实施例中,所述第一获取单元,具体用于:

按照设定频率查看所述第二账本的状态标志;

发现所述状态标志发生改变,则确定所述第二账本中写入所述第二操作结果。

根据本申请实施例的第四方面,提供了一种基于区块链的跨链数据处理装置,所述装置包括:

第二获取单元,用于获知第一区块链的第一账本中写入第一操作结果时,从所述第一账本中获取所述数据处理内容;所述数据处理内容中包含部署于所述第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,所述第一跨链智能合约与所述第二跨链智能合约相对应,所述第一跨链智能合约部署于所述第一区块链中,所述第二跨链智能合约部署于所述第二区块链中;

第二执行单元,用于根据所述第二调用地址调用第二跨链智能合约,执行所述数据处理内容中与所述第二区块链对应的第二操作,得到第二操作结果;

第二写入单元,用于对所述第二操作结果达成共识后,将所述第二操作结果写入第二账本。

一种可选的实施例中,所述第二获取单元,还用于从所述第一账本中获取第一梅克尔树的根节点,所述第一梅克尔树为所述第一区块链调用所述第一跨链智能合约基于所述数据处理内容以及所述第一操作结果构建的;

还包括第二检测单元,用于调用第二管理智能合约,利用所述第一梅克尔树的根节点对所述数据处理内容以及所述第一操作结果进行检测;

所述第二执行单元,还用于调用所述第二跨链智能合约,基于所述第二操作结果,构建第二梅克尔树;

所述第二写入单元,还用于将所述第二梅克尔树的根节点写入所述第二账本。

一种可选的实施例中,所述第二获取单元,具体用于:

按照设定频率查看所述第一账本的状态标志;

发现所述状态标志发生改变,则确定所述第一账本中写入所述第一操作结果。

根据本申请实施例的第五方面,提供了一种计算设备,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行本申请实施例提供的公开邀约任务处理方法的步骤。

根据本申请实施例的第五方面,提供了一种存储介质所述存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行本申请实施例提供的公开邀约任务处理方法的步骤。

在本申请实施例中,第一区块链在接收到跨链数据处理请求后,确定跨链数据请求中携带的数据处理内容。数据处理内容中包含部署于第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,其中,第一跨链智能合约与第二跨链智能合约相对应。通过在第一区块链和第二区块链上部署相应的跨链智能合约,来实现不同区块链之间事务的处理。第一区块链根据数据处理内容中的第一调用地址调用第一跨链智能合约,并通过第一跨链智能合约来执行第一操作,得到第一操作结果。第一操作为数据处理内容中与第一区块链对应的交易操作。待第一区块链中的所有节点对第一操作结果达成共识后,第一区块链将数据处理内容以及第一操作结果写入第一账本。从而,第二区块链可以从第一账本中获取数据处理内容,并根据数据处理内容中的第二调用地址调用第二跨链智能合约,来执行第二操作,得到第二操作结果。第二操作为数据处理内容中与第二区块链对应的交易操作。待第二区块链中的所有节点对第二操作结果达成共识后,第二区块链将第二操作结果写入第二账本。这样,第一区块链在获知第二区块链向第二账本中写入第二操作时,可以从第二账本中获取第二操作结果,并将第二操作结果写入第一账本中。本申请实施例中,第一区块链与第二区块链处理跨链交易的过程为异步处理。第一区块链得到第一操作结果后,将第一操作结果写入第一账本中,而不是直接向第二区块链发送。这样,第一区块链无需等待第二区块链的处理结果,可以继续处理其它交易,从而提高了处理效率,节省了时间。且第二区块链也无需立刻对跨链交易进行处理,可以灵活安排每个跨链交易的处理时间,平衡了第二区块链的处理压力。同时,第二区块链得到第二操作结果后,将第二操作结果记入第二账本中,由第一区块链监听第二账本,决定在合适的时间处理第二操作结果,从而可以由第一区块链选择处理时机,更为灵活,且提高了跨链场景下数据的处理性能,节省了时间。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。

图1为本申请实施例中的一种跨链数据处理系统的系统架构图;

图2为本申请实施例中的一种基于区块链的跨链数据处理方法的流程图;

图3为本申请实施例中一种梅克尔树的结构示意图;

图4a至图4c为本申请具体实施例中的一种跨链数据处理方法的流程图;

图5为本申请实施例中一种基于区块链的跨链数据处理装置的结构方框图;

图6为本申请实施例中另一种基于区块链的跨链数据处理装置的结构方框图;

图7示出了本申请一个实施例提供的服务器的结构方框图。

具体实施方式

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

下面对本申请实施例中涉及的部分概念进行介绍。

区块链技术:是指利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。

区块链:区块链是一种由多个节点共同维护的及信任的分布式存储系统。区块链底层是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的哈希值,通过这种方式组成链式的数据结构。一个区块由块头和块体组成,其中块头定义包括该区块高度、上一个区块的哈希值(prevhash)等重要字段,而块体主要存储交易数据。区块链利用密码学的方式保证数据传输和访问的安全,并利用链式结构保证链上数据不可被篡改。区块链的基础架构模型一般包括数据层、网络层、共识层、激励层、智能合约层和应用层组成。其中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。智能合约层实际上是建立在虚拟机之上的商业逻辑和算法,是实现区块链系统灵活编程和操作数据的基础。

共识:是区块链网络中共同参与的节点,针对交易数据,采用某种方式达成一致。区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件。区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:一致性,所有诚实节点保存的区块链的前缀部分完全相同;有效性,由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。

源链,目标链:源链是跨链数据处理请求发起方所在的区块链。目标链为跨链数据处理请求的接收方所在的区块链。在一种可选的实施例中,源链接收基于该跨链交易系统中的源账户发出的跨链交易请求,则需要将该跨链交易请求中对应的交易信息中的交易资产从源账户转入至目标链上的目标账户。

智能合约:即smartcontract,是一套以数字形式定义、传播、验证或执行的约定,包括合约参与方可以在上面执行这些约定的协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

跨链:不同的区块链之间进行数据通信,实现区块链世界的价值互连。

梅克尔树:又名哈希树,存储哈希值的一棵二叉树,由一个根节点,一组中间节点和一组叶子节点组成。最下面的叶子节点包含哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。可以非常高效的验证计算机之间任何数据的存储、处理和传输,能够确认收到的数据没有被破坏或者篡改。

本申请实施例中,第一区块链对应于源链,第二区块链对应于目标链,每个区块链由多个节点组成,每个节点可以是接收节点,或者处理节点,或者共识节点等。本申请实施例中的接收节点、处理节点、共识节点等仅为功能说明和举例,不做限定。区块链中的任一节点均可能为接收节点、处理节点或共识节点,且,也存在同一节点即为接收节点又为处理节点,或者另一节点即为处理节点又为共识节点,或者另一节点为接收节点、处理节点以及共识节点等等的各种可能。第一区块链、第二区块链只是用于区分不同区块链所扮演的角色;第一区块链泛指可以作为源链的一类区块链,而第二区块链泛指可以作为目标链的一类区块链,并不特指某一区块链为“第一区块链”或“第二区块链”。也就是说,跨链数据处理系统中的任一区块链均可作为源链,且作为源链的区块链可称为第一区块链;同理,同一系统中的任一区块链也均可作为目标链,且作为目标链的区块链可称为第二区块链。

请参考图1,其示出了本申请一个实施例提供的跨链数据处理系统的系统架构图,该跨链数据处理系统中包括第一终端11、第一数据处理服务器12、第一区块链、第二终端14、第二数据处理服务器15以及第二区块链。图1中所示的实施例中,第一数据处理服务器12与第二数据处理服务器15可以是一台服务器,也可以是若干台服务器组成的服务器集群或云计算中心。第一区块链由多个区块链服务器13支持,第一区块链中包括至少一个具有跨链智能合约功能的服务器,支持跨链智能合约功能的服务器可以为多个区块链服务器13中的一台或多台。第二区块链由多个区块链服务器16支持,第二区块链中包括至少一个具有跨链智能合约功能的服务器,支持跨链智能合约功能的服务器可以为多个区块链服务器16中的一台或多台。在区块链网络中具有跨链智能合约功能的公共区块链如以太坊、超级账本hyperledger、rsk等。

第一终端11与第二终端14可以为具备网络通讯能力的电子设备,图中仅示例出两个终端,实际上,通过网络连接到第一数据处理服务器12或第二数据处理服务器15的终端设备有很多,终端设备可以是手机、平板电脑或者是专用的手持设备等具有无线通信功能的电子设备,也可以是个人计算机(personalcomputer,简称pc)、笔记本电脑等有线接入方式连接上网的设备。

第一数据处理服务器12可以与第一终端11、第一区块链通过网络进行通讯,网络可以为局域网、广域网或移动互联网等通信网络中的任意一种。第一终端11中安装由第一数据处理服务器12支持的客户端。第一终端11基于安装的客户端与第一数据处理服务器12进行通讯。

第二数据处理服务器15可以与第二终端14、第二区块链通过网络进行通讯,网络可以为局域网、广域网或移动互联网等通信网络中的任意一种。第二终端14中安装由第二数据处理服务器15支持的客户端。第二终端14基于安装的客户端与第二数据处理服务器15进行通讯。

在该场景中,第一终端11可以作为跨链交易的发布方,通过其安装的客户端向第一数据处理服务器12中发送跨链交易请求。第一数据处理服务器12将该跨链交易请求上传至第一区块链。第二终端14可以作为跨链交易的目标方,通过其安装的客户端接收第二数据处理服务器15发送的跨链交易请求的处理结果。当然,第一终端11也可以为跨链交易的目标方,接收跨链交易请求的处理结果,第二终端14也可以为跨链交易请求的发布方,发起跨链交易。

需要注意的是,上文提及的应用场景仅是为了便于理解本申请的精神和原理而示出,本申请实施例在此方面不受任何限制。相反,本申请实施例可以应用于适用的任何场景。

为了便于理解,说明书中将第一区块链作为源链,第二区块链作为目标链进行说明。

现有技术中,跨链交易一般为同步处理。具体为,源链将跨链交易在源链的部分处理完成后,向目标链发送跨链交易请求。目标链接收到跨链交易请求,执行完成跨链交易在目标链的部分后,将处理结果记入目标链的账本,并向源链发送跨链交易处理结果。源链接收到跨链交易处理结果后,将总处理结果入账,从而完结该跨链交易。其中,在第二区块链处理跨链交易的过程中第一区块链需要一直等待,不能处理其它交易。而第二区块链向第一区块链发送跨链交易处理结果后,也需要等待第一区块链的回复,才能完结跨链交易。这种跨链交易同步处理方式存在资源和时间浪费的问题。

本申请基于区块链技术,第一区块链与第二区块链处理跨链交易的过程为异步处理。第一区块链得到交易执行结果后,将交易执行结果写入第一账本中,而不是直接向第二区块链发送。这样,第一区块链无需等待第二区块链的处理反馈,可以继续处理其它交易,从而节省了第一区块链的等待时间,提高了处理效率。且第二区块链也无需立刻对跨链交易进行处理,可以灵活安排每个跨链交易的处理时间,平衡了第二区块链的处理压力。同理,第二区块链执行跨链交易得到交易执行结果后,将交易执行结果记入第二账本中,由第一区块链监听第二账本,决定在合适的时间处理第二操作结果,从而可以由第一区块链选择处理时机,更为灵活,且提高了跨链场景下数据的处理性能,节省了时间。

为了解决上述问题,下面结合图1所示的应用场景,对本申请实施例提供的基于区块链的跨链数据处理方法进行说明。

请参考图2,本申请实施例提供了一种基于区块链的跨链数据处理方法,如图2所示,方法包括:

步骤s201:第一区块链根据接收到的跨链数据处理请求,确定数据处理内容。

其中,数据处理内容中包含部署于第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,第一跨链智能合约与第二跨链智能合约相对应。第一跨链智能合约部署于第一区块链中,第二跨链智能合约部署于第二区块链中。

智能合约的部署可以理解为将约定好的合约经区块链网络的共识认可后部署在区块链中;智能合约的运行可以理解为在检查到符合合约执行条件时自动执行合约并将运行结果记录在区块链中。简单来说,智能合约就是传统合约的数字化版本。它们是在区块链数据库上运行的计算机程序,可以在满足其源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款不能被改变。具体来说,在执行跨链数据处理之前,第一区块链与第二区块链之间可以共同协商跨链智能合约,在跨链智能合约中声明开发完成的跨链智能合约程序(比如可以是一些可调用的函数相关的程序代码)。然后在第一区块链中发布第一跨链智能合约,由第一区块链中的节点设备进行共识处理;当共识通过后,可以将第一跨链智能合约收录存储至第一区块链的分布式数据库,以完成第一智能合约的部署。同时,在第二区块链中发布第二跨链智能合约,由第二区块链中的节点设备进行共识处理;当共识通过后,可以将第二跨链智能合约收录存储至第二区块链的分布式数据库,以完成第二跨链智能合约的部署。

需要说明的是,本申请实施例中只涉及两个区块链,但本申请实施例中的跨链数据处理方法也适用于多个区块链的跨链数据处理系统。在系统中存在多个区块链的情况下,可以为所有区块链进行协商,并在每个区块链上部署一份跨链智能合约,从而使得系统中的任意区块链之间均可执行跨链交易。

具体实施过程中,第一区块链中的接收节点的接收到跨链交易请求后,对该请求进行解析,确定交易内容。交易内容中包含第一区块链的应用层所部署的第一跨链智能合约的第一调用地址、第一区块链的应用层用户地址、第二区块链id、第二区块链上对应的第二跨链智能合约的第二调用地址,以及操作方法和操作输入参数。

需要说明的是,本申请实施例中的接收节点、处理节点、共识节点等仅为功能说明和举例,不做限定。区块链中的任一节点均可能为接收节点、处理节点或共识节点,且,也存在同一节点即为接收节点又为处理节点,或者另一节点即为处理节点又为共识节点,或者另一节点为接收节点、处理节点以及共识节点等等的各种可能。

步骤s202:第一区块链根据第一调用地址调用第一跨链智能合约,执行数据处理内容中与第一区块链对应的第一操作,得到第一操作结果。

具体实施过程中,第一区块链的处理节点根据第一调用地址,调用部署在第一区块链上的第一跨链智能合约,执行操作方法中与第一区块链对应的第一操作。操作方法可以例如转账、扣款等,操作输入参数例如转账金额、扣款金额等。处理节点将第一操作以及操作输入参数输入第一跨链智能合约中,第一跨链智能合约执行交易,输出第一交易执行结果,同时分配一个跨链交易标识,绑定上述第一交易执行结果、数据处理内容中的第二区块链id、第二区块链上的第二调用地址、操作方法和操作输入参数等,并将上述交易执行状态和内容进行缓存。

步骤s203:第一区块链对第一操作结果达成共识后,将数据处理内容以及第一操作结果写入第一账本。

具体实施过程中,第一区块链中的所有节点需对第一交易执行结果进行共识,当共识通过后,处理节点将第一交易执行结果以及第二区块链id、第二调用地址、操作方法等交易内容写入第一区块链的第一账本中。

步骤s204:第二区块链获知第一区块链的第一账本中写入第一操作结果时,从第一账本中获取数据处理内容。

这里,第二区块链获知第一账本更新,可以为第二区块链主动对第一账本进行监听,也可以为第二区块链被动得知第一账本更新。第二区块链主动对第一账本监听,例如第二区块链按照预设的频率,查看第一账本的状态,确定第一账本中是否加入新的交易内容。第二区块链被动得知第一账本更新,例如第一区块链更新了第一账本后,向第二区块链发送一个查看请求,第二区块链可以立刻向第一区块链回复一个确认收到的消息,但第二区块链不立即查看第一账本,而是在合适的时间点,例如第二区块链空闲时,或者每日的规定时间段,查看并获取第一账本中的交易内容。这样,第二区块链可以灵活控制处理交易的时机,而第一区块链也无需等待第二区块链的处理结果,可以继续处理其它交易。

步骤s205:第二区块链根据第二调用地址调用第二跨链智能合约,执行数据处理内容中与第二区块链对应的第二操作,得到第二操作结果。

具体来说,第二区块链获取第一账本中的数据处理内容后,第二区块链的处理节点根据数据处理内容中的第二调用地址,调用部署在第二区块链上的第二跨链智能合约,执行操作方法中与第二区块链对应的第二操作。操作方法可以例如输入资金等,操作输入参数例如转入金额等。处理节点将第二操作以及操作输入参数输入第二跨链智能合约中,第二跨链智能合约执行交易,输出第二交易执行结果,并将上述第二交易执行结果进行缓存。

步骤s206:第二区块链对第二操作结果达成共识后,将第二操作结果写入第二账本。

具体实施过程中,第二区块链中的所有节点需对第二交易执行结果进行共识,当共识通过后,处理节点将第二交易执行结果写入第二区块链的第二账本中。较佳地,为了便于识别,第二交易执行结果也与跨链交易标识绑定。

步骤s207:第一区块链在获知第二区块链的第二账本中写入第二操作结果时,从第二账本获取第二操作结果。

同理,第一区块链获知第二账本更新,可以为第一区块链主动对第二账本进行监听,也可以为第一区块链被动得知第二账本更新,这里不做赘述。

步骤s208:第一区块链将第二操作结果写入第一账本。

在本申请实施例中,第一区块链在接收到跨链数据处理请求后,确定跨链数据请求中携带的数据处理内容。数据处理内容中包含部署于第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,其中,第一跨链智能合约与第二跨链智能合约相对应。通过在第一区块链和第二区块链上部署相应的跨链智能合约,来实现不同区块链之间事务的处理。第一区块链根据数据处理内容中的第一调用地址调用第一跨链智能合约,并通过第一跨链智能合约来执行第一操作,得到第一操作结果。第一操作为数据处理内容中与第一区块链对应的交易操作。待第一区块链中的所有节点对第一操作结果达成共识后,第一区块链将数据处理内容以及第一操作结果写入第一账本。从而,第二区块链可以从第一账本中获取数据处理内容,并根据数据处理内容中的第二调用地址调用第二跨链智能合约,来执行第二操作,得到第二操作结果。第二操作为数据处理内容中与第二区块链对应的交易操作。待第二区块链中的所有节点对第二操作结果达成共识后,第二区块链将第二操作结果写入第二账本。这样,第一区块链在获知第二区块链向第二账本中写入第二操作时,可以从第二账本中获取第二操作结果,并将第二操作结果写入第一账本中。本申请实施例中,第一区块链与第二区块链处理跨链交易的过程为异步处理。第一区块链得到第一操作结果后,将第一操作结果写入第一账本中,而不是直接向第二区块链发送。这样,第一区块链无需等待第二区块链的处理结果,可以继续处理其它交易,从而提高了处理效率,节省了时间。且第二区块链也无需立刻对跨链交易进行处理,可以灵活安排每个跨链交易的处理时间,平衡了第二区块链的处理压力。同时,第二区块链得到第二操作结果后,将第二操作结果记入第二账本中,由第一区块链监听第二账本,决定在合适的时间处理第二操作结果,从而可以由第一区块链选择处理时机,更为灵活,且提高了跨链场景下数据的处理性能,节省了时间。

为了保证第一区块链与第二区块链中数据处理结果的一致性,第一区块链需要对第二操作结果进行检测。即上述步骤s207之后,还包括:

第一区块链对第二操作结果进行检测;

若第二操作结果与数据处理内容相符,则执行将第二操作结果写入第一账本的操作;

若第二操作结果与数据处理内容不相符,则对第一操作结果执行回滚操作。

具体实施过程中,存在第二区块链对第二操作执行失败的可能。在这种情况下,第一区块链的共识节点通过对第二操作结果的检测,可以检测出第二操作结果与数据处理内容不相符,即第二操作结果与第一区块链的执行结果不同,则认为第二区块链的第二操作结果有误,第一区块链需要对第一操作结果进行回滚,从而保证第一区块链与第二区块链的数据一致性。

此外,为了保证跨链交易请求的合法性以及跨链交易的合法性,第一区块链根据接收到的跨链数据处理请求,确定数据处理内容之后,还包括:

第一区块链对跨链数据处理请求中的数字签名进行检测;

第一区块链调用第一管理智能合约,对数据处理内容的合法性进行检测;

若检测成功,则调用第一跨链智能合约执行第一操作,得到第一操作结果;

若检测失败,则将数据处理内容标记失败结果。

具体来说,跨链数据处理请求中还包含跨链数据处理请求的发起方的数字签名。第一区块链接收到跨链数据处理请求后,共识节点对其中的数字签名进行检测,若检测成功,才进行后续处理,若检测失败,则直接将该跨链数据处理请求标记失败结果,并向跨链数据处理请求的发起方反馈失败结果以及失败原因。

在数字签名检测成功后,第一区块链还调用第一管理智能合约对数据处理内容的合法性进行检验。具体地,可以检测第一区块链上是否部署了跨链智能合约,第一区块链的应用层用户地址是否合法,第一区块链上应用层用户余额是否足够支付跨链交易费用等。在检测均通过的情况下,则调用第一跨链智能合约执行第一操作。若存在任一项检测不通过的情况,则将该跨链数据处理请求标识失败结果,并向跨链数据请求的发起方反馈失败结果以及失败原因。

上述第一管理智能合约也部署于第一区块链上,其与第一跨链智能合约的功能以及作用不同。第一跨链智能合约的主要是用于执行跨链交易,以及构建第一梅克尔树。第一管理智能合约的主要作用是检验数据的合法性,检验数据是否被篡改,保证数据的准确和安全。

需要说明的是,本申请实施例中的管理智能合约为功能性的限定。管理智能合约可以是多个智能合约的统称,例如,第一区块链上,针对跨链交易中数字签名的检验部署了一个智能合约,针对跨链交易合法性的检查部署了一个智能合约,针对利用梅克尔树检测数据是否被篡改部署了一个智能合约,则上述三个合约统称为第一管理智能合约。另一种可能的实施例中,第一管理智能合约也可以为同一个智能合约同时可以对数字签名、跨链交易合法性以及梅克尔树均进行检验。此外,管理智能合约也可以具有其它功能,例如对跨链智能合约进行管理等,本申请实施例对此不做限制。

进一步地,一方面为了防止跨链交易在传输的过程中被篡改,另一方面需保证跨链交易在传输过程中不会出错。一种可选的实施例中,区块链根据跨链交易的执行结果构建梅克尔树,并利用梅克尔树进行校验。传统的方法是将交易进行加密处理,然后进行传输,在接收节点处解密。然而由于区块传输频繁,交易量较大,频繁加解密以及密钥的管理都相对复杂,因此不能使用传统办法,而梅克尔树的使用既解决了传输方面交易列表正确性的问题,又减少了传输环节,从而加快整体速度。通过构建梅克尔树,在进行跨链交易传输的过程中,附带将梅克尔树一同传输。在接收方,只验证梅克尔树的根节点即可。若发生篡改,则梅克尔树的根节点就会发生改变,并且可以通过二分查找找到发生篡改的交易信息。

具体地,步骤s202:第一区块链根据第一调用地址调用第一跨链智能合约,执行数据处理内容中与第一区块链对应的第一操作,得到第一操作结果之后,还包括:

第一区块链调用第一跨链智能合约,基于数据处理内容以及第一操作结果,构建第一梅克尔树;

所述第一区块链将第一梅克尔树的根节点写入第一账本。

以如图3所示的梅克尔树为例,其具体构造方法如下:

计算所有交易数据的哈希值,例如,将第一操作结果作为数据1,数据处理内容中第二区块链id作为数据2,第二调用地址作为数据3,操作方法作为数据4,分别计算第一操作结果的哈希值、第二区块链id的哈希值、第二调用地址的哈希值、操作方法的哈希值,得到梅克尔树的4个节点,分别为节点1-1、节点1-2、节点1-3和节点1-4。其中,hash()为将数据执行哈希运算。上述节点1-1、节点1-2、节点1-3和节点1-4即为梅克尔树的叶子节点。依次将相邻的两个叶子节点中的哈希值合并成一个字符串,然后计算这个字符串的哈希值,所得到哈希值作为两个叶子节点的父节点。如图3,将节点1-1和节点1-2合并成一个字符串,计算这个字符串的哈希值,作为节点2-1的值,其中节点2-1为节点1-1与节点1-2的父节点。逐层向上构造,如果某层的节点个数为奇数,则将该层最后一个节点进行复制,凑成偶数个节点后执行前述父节点哈希值计算过程。反复执行上述过程,直到得到一个单一的根节点,该根节点便是梅克尔树的根节点,整个数据结构即为梅克尔树结构。

第一区块链调用第一跨链智能合约,依据上述方法构建出第一梅克尔树,即将数据处理内容以及第一操作结果等数据输入第一跨链智能合约中,第一跨链智能合约基于上述构建方法构建出第一梅克尔树,并输出第一梅克尔树的根节点,再将第一梅克尔树的根节点写入第一账本中。

之后,第二区块链获知第一区块链的第一账本中写入第一操作结果之后,还包括:

第二区块链从第一账本中获取第一梅克尔树的根节点;

第二区块链调用第二管理智能合约,利用第一梅克尔树的根节点对数据处理内容以及第一操作结果进行检测。

具体实施过程中,第二区块链从第一账本中获取第一梅克尔树的根节点之后,利用第一梅克尔树的根节点对获取的数据处理内容以及第一操作结果进行检测,确定数据处理内容以及第一操作结果未被篡改。具体为第二区块链调用第二管理智能合约,按照上述构建梅克尔树的方式对接收到的数据处理内容以及第一操作结果再次构建一个梅克尔树,然后将新建的梅克尔树的根节点与第一梅克尔树的根节点进行对比。若两者相同,则表明数据处理内容以及第一操作结果未被篡改;若两者不同,则表明数据处理内容以及第一操作结果中有数据被篡改,则停止后续处理,向第一区块链发送告警消息。

另一方面,第二区块链也对第二操作结果构建梅克尔树,从而防止第一区块链从第二区块链中获取的数据被篡改。

第二区块链根据数据处理内容中的二调用地址调用第二跨链智能合约,执行数据处理内容中与第二区块链对应的第二操作,得到第二操作结果之后,还包括:

第二区块链调用第二跨链智能合约,基于第二操作结果,构建第二梅克尔树;

第二区块链将第二梅克尔树的根节点写入第二账本。

具体来说,第二区块链对第二操作执行完成,得到第二操作结果后,基于第二操作结果,以及其它需要同步至第一区块链的信息,构建第二梅克尔树,用于防止第二操作结果被篡改。第二区块链调用第二跨链智能合约,将第二操作结果等数据以及其它相关数据输入第二跨链智能合约中,第二跨链智能合约基于上述构建方法构建出第二梅克尔树,并输出第二梅克尔树的根节点,再将第二梅克尔树的根节点写入第二账本中。第二梅克尔树的具体构建方法参照上述梅克尔树的构建方法,这里不做赘述。

这样,第一区块链获知第二区块链的第二账本中写入第二操作结果之后,还包括:

第一区块链从第二账本中获取第二梅克尔树的根节点;

第一区块链对第二操作结果进行检测,包括:

第一区块链调用第一管理智能合约利用第二梅克尔树的根节点对第二操作结果进行检测。

具体来说,第一区块链确定第二账本中该跨链数据处理请求相关的内容更新后,从第二账本中获取第二梅克尔树的根节点。利用第一梅克尔树的根节点对获取的数据处理内容以及第一操作结果进行检测,确定数据处理内容以及第一操作结果未被篡改。具体为第二区块链按照上述构建梅克尔树的方式对接收到的数据处理内容以及第一操作结果再次构建一个梅克尔树,然后将新建的梅克尔树的根节点与第一梅克尔树的根节点进行对比。若两者相同,则表明数据处理内容以及第一操作结果未被篡改;若两者不同,则表明数据处理内容以及第一操作结果中有数据被篡改,则停止后续处理,向第一区块链发送告警消息。

第一区块链获知第二区块链的第二账本中写入第二操作结果的方法可以为主动获知,也可以为被动获知。较佳地,为了增加跨链交易处理的灵活性,这里为第一区块链对第二账本进行监听,具体包括:

第一区块链按照设定频率查看第二账本的状态标志;

第一区块链发现状态标志发生改变,则确定第二账本中写入第二操作结果。

在实施过程中,第二区块链可以为第二账本设置状态标志,例如在第二账本中设置标志位,包含两个字符状态。若第二账本中记录的数据信息发生变化,则将标志字符由当前的字符改变为另一个字符。第一区块链对第二账本的标志字符进行监听,即将第二账本的标志字符与第一区块链中缓存的标志字符进行对比,若两者相同,表明第二账本的标志字符未更改,则第二账本的内容也未更改;若两者不同,则第二账本的内容发生了更改,第二区块链将第二操作结果写入了第二账本,从而第一区块链从第二账本中获取第二操作结果,并将第一区块链中的标志字符也相应更改。

下面举例说明,第二账本的标志位上当前字符为1。当第二区块链将第二操作结果写入第二账本时,第二区块链将标志位上的字符由1改为0。第一区块链中与第二账本对应的标志字符仍为1。这样,当第一区块链监听第二账本的过程中,发现第二账本的标志字符与第一区块链中缓存的标志字符不一致时,确定第二账本中交易数据发生改变,则从第二账本中获取第二操作结果,并将第一区块链中缓存的标志字符也由1改为0。

进一步地,为了标识出具体写入了哪个跨链交易的第二操作结果,第二区块链还可以将状态标志与跨链交易的标识绑定,从而与其它跨链交易相区分。

相对应的,第二区块链获知第一账本中写入第一操作结果,包括:

第二区块链按照设定频率查看第一账本的状态标志;

第二区块链发现状态标志发生改变,则确定第一账本中写入第一操作结果。

在实施过程中,第一区块链可以为第一账本设置状态标志,例如在第一账本中设置标志位,包含两个字符状态。若第一账本中记录的数据信息发生变化,则将标志字符由当前的字符改变为另一个字符。第二区块链对第一账本的标志字符进行监听,即将第一账本的标志字符与第二区块链中缓存的标志字符进行对比,若两者相同,表明第一账本的标志字符未更改,则第一账本的内容也未更改;若两者不同,则第一账本的内容发生了更改,第一区块链将第一操作结果写入了第一账本,从而第二区块链从第一账本中获取第一操作结果,并将第二区块链中的标志字符也相应更改。

下面以具体实施例对上述流程进行详细介绍,具体实施例的应用场景为用户a在银行m中开设有银行账户,且用户a在游戏公司n中开设有游戏账户,银行m维护有第一区块链,游戏公司n维护有第二区块链,且第一区块链的应用层部署有第一跨链智能合约,第二区块链的应用层部署有第二跨链智能合约,第一跨链智能合约与第二跨链智能合约相对应。用户a需要从银行账户向游戏账户转账x元,则用户a通过手机app向银行m发送一个转账申请,银行m则根据该转账申请生成一个跨链交易请求,上传至第一区块链。因此,第一区块链为该跨链交易请求的源链,第二区块链为目标链。源链将该跨链交易请求在源链的交易执行完成后,即从用户a的银行账户中转出资金x元,将源链的交易执行结果写入源链的账本中。目标链对源链的账本进行监控,在合适的时间段将目标链的账本与源链的账本进行同步,从而获得跨链交易请求在目标链上的交易内容。目标链将该跨链交易请求在目标链的交易执行完成后,即向用户a的游戏账户中转入游戏资产y笔,其中游戏资产y笔等于资金x元。并将源链的交易执行结果写入源链的账本中。源链对目标链的账本进行监控,在合适的时间段将源链的账本与目标链的账本进行同步,从而获得目标链对交易的处理结果。源链将目标链的处理结果同步至源链的账本中。此外,若目标链处理失败,则源链对源链账本上的交易执行结果进行回滚操作。

上述应用场景中,源链处理跨链交易请求的过程如图4a所示,包括:

步骤s401:源链通过调用智能合约解析跨链交易请求,确定跨链交易内容。其中,跨链交易内容包括第一跨链智能合约的地址、应用层中账户p地址、目标链id、第二跨链智能合约地址、操作方法和操作输入参数。跨链交易请求中还包括有银行m的数字签名。

步骤s402:源链校验该数字签名的合法性;若校验通过,则执行步骤s403,否则执行步骤s404。

步骤s403:源链调用第一管理智能合约,检测跨链交易内容的合法性,包括:源链是否部署了跨链智能合约、应用层中账户p地址是否合法、账户p中余额是否足够支付跨链交易费用等。若检测成功,则执行步骤s405,否则执行步骤s404。

步骤s404:源链将跨链交易请求的处理结果标记为失败,并缓存。之后执行步骤s407。

步骤s405:源链调用第一跨链智能合约,执行交易内容中的第一操作方法,这里为“转出资金x元”,得到的第一操作结果缓存,并同时分配一个跨链交易id,绑定上述跨链交易的操作参数、目标链id、第二跨链智能合约地址等内容。同时,生成对应的第一梅克尔树,将第一梅克尔树的根节点缓存。

步骤s406:源链对缓存的内容共识后,将缓存的内容写入源链的第一账本,并更改第一账本的状态标志。

步骤s407:源链对缓存的内容共识后,将缓存的内容写入源链的第一账本,并向银行m反馈处理失败结果,结束流程。

目标链处理跨链交易请求的过程如图4b所示,包括:

步骤s408:目标链监听第一账本的状态标志,确定第一账本的状态标志发生改变。

步骤s409:目标链从第一账本中获取跨链交易内容、第一操作结果以及第一梅克尔树的根节点。

步骤s410:目标链调用第二管理智能合约,检测跨链交易内容,包括:目标链id是否正确、第二跨链智能合约地址是否正确、操作参数是否正确、跨链交易内容与第一操作结果是否通过梅克尔树的校验。若检测通过,则执行步骤s412,若检测不通过,则执行步骤s411。

步骤s411:目标链将跨链交易请求的处理结果标记为失败,并缓存。之后执行步骤s413。

步骤s412:目标链调用第二跨链智能合约,执行跨链交易内容中制定的操作方法,得到第二操作结果,并基于第二操作结果构建第二梅克尔树,将第二操作结果与第二梅克尔树的根节点缓存。

步骤s413:目标链在达成共识后,将缓存内容写入第二账本,并更改第二账本的状态标志。

源链继续处理跨链交易请求的过程如图4c所示,包括:

步骤s414:源链监听第二账本的状态标志,确定第二账本的状态标志发生改变。

步骤s415:源链从第一账本中获取第二操作结果以及第二梅克尔树的根节点。若第二操作结果为处理失败,则执行步骤s417,否则执行步骤s416。

步骤s416:源链调用第一管理智能合约,利用第二梅克尔树的根节点对第二操作结果进行检验。若检验通过,执行步骤s418,否则执行步骤s417。

步骤s417:源链将第一账本中的第一操作结果执行回滚操作,并向银行m反馈处理失败结果,并结束流程。

步骤s418:源链将第二操作结果写入第一账本,并向银行m反馈处理成功结果,并结束流程。

上述流程中,步骤s401-步骤s407与步骤s408-步骤s413,以及步骤s408-步骤s413与步骤s413-步骤s418之间,均为异步处理,即源链(或目标链)将处理结果记入区块链的账本中即可,无需等待对方的处理结果。从而提高了跨链交易的执行效率,节省了总体的处理时长。

下述为本申请装置实施例,对于装置实施例中未详尽描述的细节,可以参考上述一一对应的方法实施例。

请参考图5,其示出了本申请一个实施例提供的基于区块链的跨链数据处理的结构方框图。该跨链数据处理装置通过硬件或者软硬件的结合实现成为图1中区块链服务器13的全部或者一部分。该装置包括:第一获取单元501、第一执行单元502和第一写入单元503。

第一获取单元501,用于根据接收到的跨链数据处理请求,确定数据处理内容,所述数据处理内容中包含部署于所述第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,所述第一跨链智能合约与所述第二跨链智能合约相对应;

第一执行单元502,用于根据所述第一调用地址调用第一跨链智能合约,执行所述数据处理内容中与所述第一区块链对应的第一操作,得到第一操作结果;

第一写入单元503,用于对所述第一操作结果达成共识后,将所述数据处理内容以及所述第一操作结果写入第一账本;

所述第一获取单元501,还用于在获知第二区块链的第二账本中写入第二操作结果时,从所述第二账本获取所述第二操作结果,所述第二操作结果为所述第二区块链根据所述第二调用地址调用第二跨链智能合约执行所述数据处理内容中与所述第二区块链对应的第二操作得到的;

所述第一写入单元503,还用于将所述第二操作结果写入所述第一账本。

一种可选的实施例中,还包括第一检测单元504,用于:

对所述第二操作结果进行检测;

若所述第二操作结果与所述数据处理内容相符,则所述第一执行单元执行将所述第二操作结果写入所述第一账本的操作;

若所述第二操作结果与所述数据处理内容不相符,则所述第一执行单元对所述第一操作结果执行回滚操作。

一种可选的实施例中,所述第一执行单元502,还用于调用所述第一跨链智能合约,基于所述数据处理内容以及所述第一操作结果,构建第一梅克尔树;

所述第一写入单元503,还用于将所述第一梅克尔树的根节点写入所述第一账本;

所述第一获取单元501,还用于从所述第二账本中获取第二梅克尔树的根节点,所述第二梅克尔树为所述第二区块链调用所述第二跨链智能合约基于所述第二操作结果构建的;

所述第一检测单元504,还用于调用第一管理智能合约,利用所述第二梅克尔树的根节点对所述第二操作结果进行检测。

一种可选的实施例中,所述第一检测单元504,还用于:

对所述跨链数据处理请求中的数字签名进行检测;

调用第一管理智能合约,对所述数据处理内容的合法性进行检测;

若检测成功,则所述第一执行单元调用所述第一跨链智能合约执行所述第一操作,得到第一操作结果;

若检测失败,则所述第一写入单元将所述数据处理内容标记失败结果。

一种可选的实施例中,所述第一获取单元501,具体用于:

按照设定频率查看所述第二账本的状态标志;

发现所述状态标志发生改变,则确定所述第二账本中写入所述第二操作结果。

请参考图6,其示出了本申请一个实施例提供的基于区块链的跨链数据处理的结构方框图。该跨链数据处理装置通过硬件或者软硬件的结合实现成为图1中区块链服务器16的全部或者一部分。该装置包括:第二获取单元601、第二执行单元602和第二写入单元603。

第二获取单元601,用于获知第一区块链的第一账本中写入第一操作结果时,从所述第一账本中获取所述数据处理内容;所述数据处理内容中包含部署于所述第一区块链中的第一跨链智能合约的第一调用地址以及部署于第二区块链中的第二跨链智能合约的第二调用地址,所述第一跨链智能合约与所述第二跨链智能合约相对应,所述第一跨链智能合约部署于所述第一区块链中,所述第二跨链智能合约部署于所述第二区块链中;

第二执行单元602,用于根据所述第二调用地址调用第二跨链智能合约,执行所述数据处理内容中与所述第二区块链对应的第二操作,得到第二操作结果;

第二写入单元603,用于对所述第二操作结果达成共识后,将所述第二操作结果写入第二账本。

一种可选的实施例中,所述第二获取单元601,还用于从所述第一账本中获取第一梅克尔树的根节点,所述第一梅克尔树为所述第一区块链调用所述第一跨链智能合约基于所述数据处理内容以及所述第一操作结果构建的;

还包括第二检测单元604,用于调用第二管理智能合约,利用所述第一梅克尔树的根节点对所述数据处理内容以及所述第一操作结果进行检测;

所述第二执行单元602,还用于调用所述第二跨链智能合约,基于所述第二操作结果,构建第二梅克尔树;

所述第二写入单元603,还用于将所述第二梅克尔树的根节点写入所述第二账本。

一种可选的实施例中,所述第二获取单元601,具体用于:

按照设定频率查看所述第一账本的状态标志;

发现所述状态标志发生改变,则确定所述第一账本中写入所述第一操作结果。

请参考图7,其示出了本申请一个实施例提供的服务器的结构方框图。该服务器700实现为图1中的区块链服务器13或区块链服务器16。具体来讲:

服务器700包括中央处理单元(cpu)701、包括随机存取存储器(ram)702和只读存储器(rom)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。

所述基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。所述基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。

根据本申请的各种实施例,所述服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在所述系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的签到方法的指令。

本领域普通技术人员可以理解上述实施例的签到方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

本领域普通技术人员可以理解上述实施例的签到方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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