一种区块链跨链方法、装置、计算机设备及存储介质与流程

文档序号:22506060发布日期:2020-10-13 09:43阅读:165来源:国知局
一种区块链跨链方法、装置、计算机设备及存储介质与流程

本文涉及区块链技术领域,尤其涉及一种区块链跨链方法、装置、计算机设备及存储介质。



背景技术:

分布式账本系统(dls),也可称为共识网络和/或区块链网络,使参与的实体能够安全地、不可篡改地存储数据。在不引用任何特定用例的情况,dls通常被称为区块链网络。

区块链网络的示例类型可包括公有区块链网络、私有区块链网络和联盟区块链网络。公有区块链网络向所有实体开放以使用dls,并开放参与共识过程。私有区块链网络针对特定实体提供,该实体集中控制读写权限。联盟区块链网络针对选定的实体组群提供,这些实体组群控制共识过程并包括访问控制层。区块链具有去中心化、反篡改、数据一致性存储、过程透明可追踪等技术优势,其被认为在金融、征信、物联网、经济贸易结算、资产管理等众多领域都拥有广泛的应用前景。

各机构在架设区块链系统时,通常会选择自己更为熟悉或者更适合自身业务的架构和方案:例如在各大金融机构中,普遍采用的是相对更高效的联盟链系统;而一些企业的业务结构为中心化,则更可能采用私链架构区块链。无论是哪一种架构的区块链,都是用于确保数据可信。这样使得区块链生态变得更繁荣多样,却也导致了多链间的数据交互更加困难。

目前跨链技术中,采用公证人机制和中继机制进行跨链通信。

公证人机制也称为公证人,具体而言,假设区块链a和b本身是不能直接进行互操作,并且无法完全互相信任,那么引入一个共同信任的第三方作为中介,由这个共同信任的中介进行跨链消息的验证和转发,达成双方的间接信任的目的。以公有链交易所为例,alice和bob达成了一笔交易,以1btc兑换20eth:alice将1个btc转让给公证人在btc网络上对应地址,bob将20eth转让给公证人在eth网络上对应地址,公证人确认两笔交易均成功进行后,将1btc转让给bob在btc网络上地址,同时将20eth转让给alice在eth网络上地址,最终完成了双方交易。

中继方案在现有技术中最为广泛,而且中继也是相对比较复杂的机制。在众多跨链项目中,作为中继身份的大多是一条独立的区块链,也就是说,在两条独立的区块链之间实现通信,需要通过中继链来进行消息的转发,但是如何保证中继链的可信度是一个难题,而且中继链需要在其他链上获取或者发送数据,这样中继链的可信度更加跨链通信的首要问题。除了安全问题,对于中继链的监管也是一个难题,并且中继链的共识算法等也很难保证符合其他区块链的要求。

如何提高现有技术中跨链通信的数据安全性是亟需解决的问题。



技术实现要素:

为解决现有技术中的问题,本文实施例提供了一种区块链跨链方法、装置、计算机设备及存储介质,用于在不引入第三方中继节点或者公证人节点的情况下,实现跨链通信的目的。

本文实施例提供了一种区块链跨链方法,该方法运行于应用层,具体包括,

接收源区块链发送的跨链通信数据;

将所述跨链通信数据转发给目的区块链的接口节点。

本文实施例还提供了一种区块链跨链方法,该方法运行于应用层,具体包括,

接收目的区块链发送的验证跨链通信数据的请求;

通过源区块链接口节点验证所述跨链通信数据;

向所述目的区块链反馈验证结果。

本文实施例还提供了一种区块链跨链方法,该方法运行于应用层,具体包括,

源区块链应用代理接收所述源区块链发送的所述跨链通信数据,将所述跨链通信数据转发给目的区块链的接口节点;

当目的区块链根据所述目的区块链的接口节点接收所述跨链通信数据后,目的区块链应用代理接收所述目的区块链发送的验证所述跨链通信数据的请求,通过源区块链接口节点验证所述跨链通信数据,并向所述目的区块链反馈验证结果;

当所述验证结果通过时,所述目的区块链执行所述跨链通信数据的落链处理。

本文实施例还提供了一种区块链跨链装置,包括,

跨链通信数据接收单元,用于接收源区块链发送的跨链通信数据;

转发单元,用于将所述跨链通信数据转发给目的区块链的接口节点。

本文实施例还提供了一种区块链跨链装置,包括,

验证接收单元,用于接收目的区块链发送的验证跨链通信数据的请求;

验证单元,用于通过源区块链接口节点验证所述跨链通信数据;

反馈单元,用于向所述目的区块链反馈验证结果。

本文实施例还提供了一种区块链跨链系统,包括,

源区块链,源区块链应用代理,源区块链接口节点,目的区块链,目的区块链应用代理,目的区块链接口节点;

其中,所述源区块链应用代理接收所述源区块链发送的所述跨链通信数据,将所述跨链通信数据转发给所述目的区块链的接口节点;

当所述目的区块链根据所述目的区块链的接口节点接收到的所述跨链通信数据后,所述目的区块链应用代理接收所述目的区块链发送的验证所述跨链通信数据的请求,通过所述源区块链接口节点验证所述跨链通信数据,并向所述目的区块链反馈验证结果;

当所述验证结果通过时,所述目的区块链执行所述跨链通信数据的落链处理。

本文实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法。

本文实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现上述的方法。

利用本文实施例,可以通过应用代理的整合,将跨链功能模块化,避免了对区块链底层复杂的改造,统一了跨链交易的出入路径,简化了双方系统改造的开发以及网络部署的工作量;确保了双方数据的完整性和正确性;屏蔽区块链底层细节,交易方只需统一相关技术接口即可进行业务往来。

附图说明

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

图1所示为本文实施例一种区块链跨链系统的结构图;

图2所示为本文实施例一种区块链跨链方法的流程图;

图3a所示为本文实施例源区块链跨链通信数据格式;

图3b所示为本文实施例目的区块链通信数据格式;

图4所示为本文实施例一种区块链跨链方法的流程图;

图5所示为本文实施例一种区块链跨链方法的流程图;

图6所示为本文实施例一种区块链跨链装置的结构示意图;

图7所示为本文实施例一种区块链跨链装置的结构示意图;

图8所示为本文实施例一种区块链跨链系统的结构示意图;

图9所示为本文实施例一种区块链跨链方法的示意图;

图10所示为本文实施例以联盟链较常用的hyperledgerfabric实现为例的跨链通信方法示意图;

图11所示为本文实施例一种区块链跨链装置的结构示意图。

具体实施方式

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

第一实施例

如图1所示为本文实施例一种区块链跨链系统的结构图,在本实施例中提出跨链交易的源区块链101与接收跨链交易的目的区块链102物理隔离,但是,源区块链中的一个(或几个)节点(接口节点)103可以与一目的区块链应用代理104通信,该目的区块链应用代理104可以与目的区块链102通信,该源区块链的接口节点103可以参与源区块链101的共识验证,同步源区块链的共享账簿,并在应用层与所述目的区块链应用代理104通信,所述目的区块链应用代理104可以在应用层与源区块链接口节点103通信,并可以在应用层与目的区块链某个或者某些节点进行通信;目的区块链中的一个(或几个)节点(接口节点)105可以与一源区块链应用代理106通信,该源区块链应用代理106可以与源区块链通信,该目的区块链的接口节点105可以参与目的区块链的共识验证,并同步目的区块链的共享账簿,并在应用层与所述源区块链应用代理106通信,所述源区块链应用代理106可以在应用层与目的区块链接口节点通信105,并可以在应用层与源区块链某个或者某些节点进行通信。

其中,应用层为与区块链底层技术相隔离的一层,属于计算机软件的应用层,也可以称为应用实体(ae),它由若干个特定应用服务元素(sase)和一个或多个公用应用服务元素(case)组成,为sase提供特定的应用服务。

通过上述源区块链网络与目的区块链网络的系统结构,可以实现源区块链网络与目的区块链物理隔离的基础上实现跨链通信,在另一个实施例中,即便源区块链网络与目的区块链处于广域网中不存在严格意义上的物理隔离,也同样可以实现跨链通信,不需要引入第三方的公证人节点或者中继链,避免了第三方的信任危机。

如图2所示为本文实施例一种区块链跨链方法的流程图,在本实施例中描述了源区块链与目的区块链之间发生一跨链通信数据时,通过源区块链应用代理将所述跨链通信数据发送给目的区块链的接口节点,在源区块链和目的区块链上进行跨链通信数据的落链处理,所述落链处理是指将跨链通信数据记录于区块链的共享账簿中。该方法运行于应用层,所述运行于应用层是指源区块链应用代理与目的区块链接口节点位于同一计算机设备,源区块链应用代理可以通过应用层与目的区块链接口节点进行通信,或者源区块链应用代理还可以与目的区块链接口节点位于不同计算机设备,源区块链应用代理与目的区块链接口节点通过网络的方式进行通信,在应用层实现通信消息的交互,具体包括:

步骤201,接收源区块链发送的跨链通信数据。

步骤202,将所述跨链通信数据转发给目的区块链的接口节点。

根据本文的一个实施例,在接收源区块链发送的跨链通信数据中还包括,判断接收到的源区块链发送的通信数据是否为跨链通信数据,如果为跨链通信数据则转发所述跨链通信数据至所述目的区块链的接口节点。

在本步骤中,如果接收到的源区块链发送的通信数据不为跨链通信数据,即,为源区块链内部的通信数据,例如链内交易数据等,则不会转发该通信数据至目的区块链的接口节点。

所述跨链通信数据中可以包括交易信息,例如由源区块链中的用户a1向目的区块链的用户b1发起数据转移,具体的数据可以为票据的号码,票据扫描件的哈希值等票据数字资产。

根据本文的一个实施例,在接收源区块链发送的跨链通信数据之前还包括,接收所述跨链通信数据发起方的查询请求,根据所述查询请求查询目的区块链中所述跨链通信数据接收方的地址。

在本步骤中,所述跨链通信数据的接收方地址为在目的区块链中用户地址所对应的外网地址,或者为该接收方在目的区块链中的用户地址。其中,外网地址是指,能够通过互联网连接的统一资源定位符(url)或者公网ip地址;所述目的区块链中的用户地址可能为现有技术中区块链网络中用户的账户地址,可以为一串数字和字母的组合,例如1a1zp1ep5qgefi2dmptftl5slmv7divfna。

根据本文的一个实施例,在将所述跨链通信数据转发给目的区块链的接口节点中还包括,将所述源区块链发送的跨链通信数据转换为目的区块链的通信数据。

在本步骤中,所述转换可以包括数据格式的转换,以及通信数据内容的转换,其中,所述数据格式的转换可以调整根据源区块链跨链通信数据的字段内容的顺序,以符合目的区块链通信数据的字段内容顺序,例如,源区块链跨链通信数据格式如图3a所示,第一个字段为跨链通信数据的发起方以及发起方用户地址,在本例中为a,代表源区块链地址或者名称,源区块链的发起方用户a1,其账户地址为xxxx,第二个字段为发票号,例如为123456789,第三个字段为数字证书,第四个字段为该发票的图像扫描件的哈希值,第五个字段为跨链通信数据的接收方以及接收方地址,在本例中为b,代表目的区块链地址或者名称,接收方的目的区块链用户b1,其账户地址为yyyy;目的区块链通信数据格式如同图3b所示,第一个字段为跨链通信数据的来源方以及发起方用户地址,第二个字段为接收方以及接收方用户地址,第三个字段为发票号,第四个字段为数字证书,第五个字段为该发票的图像扫描件的哈希值。目的区块链应用代理接收到源区块链发送的跨链通信数据后,将跨链通信数据中的第一个字段的发起方以及发起方用户地址写入目的区块链通信数据的第一个字段,将跨链通信数据中的第五个字段的接收方以及接收方地址写入目的区块链通信数据的第二个字段,将跨链通信数据中的第二个字段的发票号(即123456789)写入目的区块链通信数据的第三个字段,将跨链通信数据中的第三个字段的数字证书写入目的区块链通信数据的第四个字段,将跨链通信数据中的第四个字段的该发票的图像扫描件的哈希值入目的区块链通信数据的第五个字段。

所述通信数据内容的转换可以为,假设源区块链的跨链通信数据中的第六个字段为用于校验用的crc校验值,而目的区块链的通信数据不包括该校验字段,所述目的区块链应用代理将该跨链通信数据解析,将跨链通信数据的第六个字段的校验值丢弃,只将预先指定的源区块链跨链通信数据的字段(在本例中为前五个字段)转换为目的区块链通信数据的相应字段。

在将所述跨链通信数据转发给目的区块链的接口节点后,源区块链可以将所述跨链通信数据进行落链处理,写入源区块链的共享账簿中,其中该跨链通信数据的状态不为完成状态,例如可以为待转让状态或者其它状态;在一些实施例中,源区块链还可以将跨链通信数据发起方账户中与所述跨链通信数据对应的数据状态改为冻结状态,其中源区块链的各个节点(包括源区块链的接口节点)中都存储有各个账户的账户信息,账户信息中记录有属于该账户的数字资产,以及数字资产的状态信息,例如冻结状态、转让状态等;在另一些实施例中,源区块链也可以先不将所述跨链通信数据写入源区块链的共享账簿中,而是在源区块链接口节点的内存池中缓存所述跨链通信数据,在内存池中的所述跨链通信数据的状态可以为待转让状态或者为交易状态等。

根据本文的一个实施例,还包括,根据预定时间间隔查询所述目的区块链接口节点的共享账簿,当所述跨链通信数据在目的区块链的共享账簿中落链成功,则改变所述跨链通信数据状态,并将所述跨链通信数据在所述源区块链中落链处理。

在本步骤中,所述预定时间间隔可以为秒级别或者分钟级别,例如为10秒、20秒,或者还可以为1分钟、2分钟等。

当所述跨链通信数据在目的区块链的共享账簿中落链成功后还包括,通知所述跨链通信数据发起方所述跨链通信数据在目的区块链的共享账簿中落链成功,所述跨链通信数据的发起方可以再次发起一笔交易,或者还可以由源区块链应用代理再次发起一笔交易,在源区块链的共享账簿的区块中写入该跨链通信数据,并且该跨链通信数据的状态为完成状态,从而完成所述跨链通信数据的跨链传输。

在一些实施例中,还可以通过源区块链应用代理通知生成区块的源区块链节点所述跨链通信数据的状态改变,然后由生成区块的源区块链节点将内存池中改变状态的该跨链通信数据(以及其他源区块链的通信数据)生成区块,并在源区块链中进行验证,最终在源区块链中落链成功。至此,源区块链中的跨链通信数据的跨链传输处理完成,从而完成所述跨链通信数据的跨链传输。

通过本文上述的实施例,通过应用代理可以将源区块链的跨链通信数据发送给目的区块链接口节点,并未改变源区块链以及目的区块链的网络结构以及协议,不必引入第三方的公证人节点以及中继节点,保留源区块链和目的区块链网络的完整性以及原有安全机制,在最小的改动下就可以实现跨链通信。

如图4所示为本文实施例一种区块链跨链方法的流程图,在本实施例中描述了源区块链与目的区块链之间发生一跨链通信数据时,通过目的区块链应用代理查询源区块链的接口节点的内存池中是否有待处理状态的所述跨链通信数据,如果存在则在目的区块链上进行跨链通信数据的落链处理,并将跨链通信数据完成的状态在源区块链上落链处理。该方法运行于应用层,所述运行于应用层是指,目的块链应用代理与源区块链接口节点位于同一计算机设备,目的区块链应用代理可以通过应用层与源区块链接口节点进行通信,或者目的区块链应用代理还可以与源区块链接口节点位于不同计算机设备,目的区块链应用代理与源区块链接口节点通过网络的方式进行通信,在应用层实现通信消息的交互,具体包括:

步骤401,接收目的区块链发送的验证跨链通信数据的请求。

步骤402,通过源区块链接口节点验证所述跨链通信数据。

步骤403,向所述目的区块链反馈验证结果。

在上述步骤中,目的区块链接收到由目的区块链接口节点接得到的由源区块链某个节点通过源区块链应用代理转发的跨链通信数据后,向目的区块链应用代理发送验证请求,验证得到的跨链通信数据是否在源区块链中已经处于预定状态,例如为待转让状态,其中,预定状态记录于源区块链接口节点的内存池中,所有的源区块链节点都具有内存池,在源区块链接口节点中也同样具有内存池,当源区块链产生通信数据(一笔交易)时,通过源区块链各节点执行该通信数据通过后,就会放入各自节点的内存池中,等待下一个区块的生成时,将该通信数据的哈希值放入新生成的区块,从而记录于源区块链的共享账簿中。当跨链通信数据存入源区块链接口节点的内存池时,该跨链通信数据的状态为某一状态,例如为待转让状态,则说明源区块链的发起方已经完成了跨链通信数据的一部分工作流程,等待目的区块链的接收方也同样进行落链记录后,该跨链通信数据的跨链通信才可以完成;当内存池中未记录有该跨链通信数据,或者该跨链通信数据的状态为其他状态,例如为延期状态,则说明源区块链的发起方未完成跨链通信数据的处理,此时,目的区块链的接收方不能对该跨链通信数据进行落链记录。

根据本文的一个实施例,在通过源区块链接口节点验证所述跨链通信数据中进一步包括,根据所述跨链通信数据在所述源区块链接口节点的共享账簿中查询该跨链通信数据的状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

在本步骤中,如果源区块链接口节点的共享账簿中该跨链通信数据的状态为待转让状态,则验证通过,否则验证失败。

根据本文的一个实施例,在通过源区块链接口节点验证所述跨链通信数据中进一步包括,根据所述跨链通信数据在所述源区块链接口节点中查询所述跨链通信数据发起方账户中与所述跨链通信数据相对应的数据状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

在本步骤中,如果源区块链接口节点中记录的跨链通信数据发起方账户中的与该跨链通信数据对应的数据状态为冻结状态,则验证通过,否则验证失败。

根据本文的一个实施例,在通过源区块链接口节点验证所述跨链通信数据中进一步包括,根据所述跨链通信数据在所述源区块链接口节点的内存池中查询该跨链通信数据的状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

在本步骤中,当源区块链发起方发出跨链通信数据后,将在该源区块链内进行该跨链通信数据的共识验证以及广播,其中为了达成共识(例如,同意向区块链添加区块),在区块链网络内实施共识协议,共识协议的示例包括但不限于工作量证明(pow)、权益证明(pos)和权限证明(poa)。在本文中进一步引用pos作为非限制性示例。当通过共识验证后,所述跨链通信数据记录在源区块链各节点的内存池中,该跨链通信数据的状态为“待转让”,或者当跨链通信数据还包括其他状态时,只要通过共识验证,该跨链通信数据可以在源区块链各个节点的内存池中,并具有相应的状态;如果未通过共识验证,则无法在源区块链各个节点的内存池中写入该跨链通信数据。

作为举例,区块链中支持的共识算法可以包括:

第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(proofofwork,pow)、股权证明(proofofstake,pos)、委任权益证明(delegatedproofofstake,dpos)等共识算法;

第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(practicalbyzantinefaulttolerance,pbft)等共识算法。

在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。

在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。

如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。

根据本文的一个实施例,在向所述目的区块链反馈验证结果后还包括,当通过验证后,则在目的区块链中将所述跨链通信数据落链处理。

在本步骤中,所述落链处理可以参考前述源区块链的跨链通信数据进行落链处理的方法,或现有技术中区块链的通信数据落链的方法,在此不再赘述。

根据本文的一个实施例,当在目的区块链中将所述跨链通信数据落链处理之后还包括,通知所述源区块链接口节点所述跨链通信数据已在目的区块链中落链完成。

在本步骤中,目的区块链应用代理向源区块链接口节点发送通知消息,该通知消息包括所述跨链通信数据的信息,例如可以包括可以寻找到该跨链通信数据的编号或者还包括更加详细的跨链通信数据内容,以及该跨链通信数据的状态信息,所述状态信息是指该跨链通信数据在目的区块链中落链成功的状态。当源区块链接口节点接收到该通知消息后,将通知所述跨链通信数据发起方,所述跨链通信数据发起方可以通过再次发起一笔交易的方式,在源区块链的共享账簿的区块中写入该跨链通信数据,其中该跨链通信数据的状态为完成状态;或者还可以在源区块链接口节点中将所述跨链通信数据的状态修改为完成状态,并通知源区块链的区块生成节点,将该跨链通信数据的状态修改为完成状态,并加入到新生成的区块中,从而记录于源区块链的共享账簿中。

通过上述本文的实施例,目的区块链应用代理与源区块链接口节点的验证可以确保跨链通信数据在源区块链和目的区块链两方都得到正确执行,确保了跨链通信的数据安全性,并且并未改变源区块链以及目的区块链的网络结构以及协议,不必引入第三方的公证人节点以及中继节点,保留源区块链和目的区块链网络的完整性以及原有安全机制,在最小的改动下就可以实现跨链通信。

如图5所示为本文实施例一种区块链跨链方法的流程图,在本实施例中描述了源区块链与目的区块链之间发生一跨链通信数据时,通过源区块链应用代理以及目的区块链应用代理完成跨链通信,该源区块链应用代理通过与目的区块链接口节点,目的区块链应用代理通过与源区块链接口节点进行通信,可以保持源区块链以及目的区块链的网络结构以及协议,并保留两个区块链各自的安全机制,本文中的方法运行于应用层,其中,源区块链应用代理与目的区块链接口节点、目的区块链应用代理与源区块链接口节点之间的通信都运行于应用层,具体包括:

步骤501,源区块链应用代理接收源区块链发送的所述跨链通信数据,将所述跨链通信数据转发给目的区块链的接口节点。

步骤502,当目的区块链根据所述目的区块链的接口节点接收所述跨链通信数据后,目的区块链应用代理接收所述目的区块链发送的验证所述跨链通信数据的请求,通过源区块链接口节点验证所述跨链通信数据,并向所述目的区块链反馈验证结果。

步骤503,当所述验证结果通过时,所述目的区块链执行所述跨链通信数据的落链处理。

根据本文的一个实施例,源区块链应用代理接收源区块链发送的跨链通信数据中还包括,判断接收到的源区块链发送的通信数据是否为跨链通信数据,如果为跨链通信数据则转发所述跨链通信数据至所述目的区块链的接口节点。

根据本文的一个实施例,源区块链应用代理接收源区块链发送的跨链通信数据之前还包括,接收所述跨链通信数据发起方的查询请求,根据所述查询请求查询目的区块链中所述跨链通信数据接收方的地址。

根据本文的一个实施例,源区块链应用代理将所述跨链通信数据转发给目的区块链的接口节点中还包括,将所述源区块链发送的跨链通信数据转换为目的区块链的通信数据。

根据本文的一个实施例,源区块链应用代理接收所述源区块链发送的所述跨链通信数据,将所述跨链通信数据转发给目的区块链的接口节点后,所述源区块链将所述跨链通信数据进行落链处理,写入源区块链的共享账簿中,其中该跨链通信数据的状态不为完成状态。

根据本文的一个实施例,源区块链应用代理接收所述源区块链发送的所述跨链通信数据,将所述跨链通信数据转发给目的区块链的接口节点后,所述源区块链将所述跨链通信数据发起方账户中与所述跨链通信数据对应的数据状态改为冻结状态。

根据本文的一个实施例,源区块链应用代理接收所述源区块链发送的所述跨链通信数据,将所述跨链通信数据转发给目的区块链的接口节点后,所述源区块链在所述源区块链接口节点的内存池中缓存所述跨链通信数据。

根据本文的一个实施例,目的区块链应用代理通过源区块链接口节点验证所述跨链通信数据中进一步包括,根据所述跨链通信数据在所述源区块链接口节点的共享账簿中查询该跨链通信数据的状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

根据本文的一个实施例,目的区块链应用代理通过源区块链接口节点验证所述跨链通信数据中进一步包括,根据所述跨链通信数据在所述源区块链接口节点中查询所述跨链通信数据发起方账户中与所述跨链通信数据相对应的数据状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

根据本文的一个实施例,目的区块链应用代理通过源区块链接口节点验证所述跨链通信数据中进一步包括,根据所述跨链通信数据在所述源区块链接口节点的内存池中查询该跨链通信数据的状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

根据本文的一个实施例,当在所述目的区块链执行所述跨链通信数据的落链处理之后还包括,通过所述目的区块链应用代理通知所述源区块链接口节点所述跨链通信数据已在目的区块链中落链完成;所述源区块链根据所述源区块链接口节点接收到的通知改变所述跨链通信数据的状态,并在所述源区块链中将改变状态的跨链通信数据进行落链处理。

通过上述本文的实施例,源区块链应用代理与目的区块链接口节点,以及目的区块链应用代理与源区块链接口节点的相互通信,完成了源区块链与目的区块链的跨链通信,确保了跨链通信的数据安全性,并且并未改变源区块链以及目的区块链的网络结构以及协议,不必引入第三方的公证人节点以及中继节点,保留源区块链和目的区块链网络的完整性以及原有安全机制,在最小的改动下就可以实现跨链通信。

如图6所示为本文实施例一种区块链跨链装置的结构示意图,在本实施例中描述了源区块链应用代理装置的逻辑结构,该源区块链应用代理可以实现为应用软件、逻辑电路、或者由软件和逻辑电路共同组成的芯片,其所完成的功能可以由程序的代码语言描述,并存储于计算设备之中。该源区块链应用代理可以与目的区块链接口节点运行于同一台计算设备的应用层之上,也可以与该目的区块链接口节点运行于不同计算设备的应用层之上,两者之间通过网络的方式进行通信。该区块链跨链装置具体包括:

跨链通信数据接收单元601,用于接收源区块链发送的跨链通信数据。

转发单元602,用于将所述跨链通信数据转发给目的区块链的接口节点。

根据本文的一个实施例,所述跨链通信数据接收单元还包括判断模块6011,用于判断接收到的源区块链发送的通信数据是否为跨链通信数据,如果为跨链通信数据则转发所述跨链通信数据至所述目的区块链的接口节点。

根据本文的一个实施例,所述转发单元还包括数据转换模块6021,用于将所述源区块链发送的跨链通信数据转换为目的区块链的通信数据。

根据本文的一个实施例,还包括查询单元603,用于接收所述跨链通信数据发起方的查询请求,根据所述查询请求查询目的区块链中所述跨链通信数据接收方的地址。

根据本文的一个实施例,还包括共享账簿查询单元604,用于根据预定时间间隔查询所述目的区块链接口节点的共享账簿,当所述跨链通信数据在目的区块链的共享账簿中落链成功,则通知所述源区块链的跨链通信数据发起方。

通过本文上述的实施例,通过源区块链应用代理可以将源区块链的跨链通信数据发送给目的区块链接口节点,并未改变源区块链以及目的区块链的网络结构以及协议,不必引入第三方的公证人节点以及中继节点,保留源区块链和目的区块链网络的完整性以及原有安全机制,在最小的改动下就可以实现跨链通信。

如图7所示为本文实施例一种区块链跨链装置的结构示意图,在本实施例中描述了目的区块链应用代理装置的逻辑结构,该目的区块链应用代理可以实现为应用软件、逻辑电路、或者由软件和逻辑电路共同组成的芯片,其所完成的功能可以由程序的代码语言描述,并存储于计算设备之中。该目的区块链应用代理可以与源区块链接口节点运行于同一台计算设备的应用层之上,也可以与该源区块链接口节点运行于不同计算设备的应用层之上,两者之间通过网络的方式进行通信。该区块链跨链装置具体包括:

验证接收单元701,用于接收目的区块链发送的验证跨链通信数据的请求。

验证单元702,用于通过源区块链接口节点验证所述跨链通信数据。

反馈单元703,用于向所述目的区块链反馈验证结果。

根据本文的一个实施例,所述验证单元进一步用于,根据所述跨链通信数据在所述源区块链接口节点的内存池中查询该跨链通信数据的状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

根据本文的一个实施例,还包括通知单元704,用于通知所述源区块链接口节点所述跨链通信数据已在目的区块链中落链完成。

通过上述本文的实施例,目的区块链应用代理与源区块链接口节点的验证可以确保跨链通信数据在源区块链和目的区块链两方都得到正确执行,确保了跨链通信的数据安全性,并且并未改变源区块链以及目的区块链的网络结构以及协议,不必引入第三方的公证人节点以及中继节点,保留源区块链和目的区块链网络的完整性以及原有安全机制,在最小的改动下就可以实现跨链通信。

如图8所示为本文实施例一种区块链跨链系统的结构示意图,在本实施例中描述了源区块链与目的区块链之间发生一跨链通信数据时,通过源区块链应用代理以及目的区块链应用代理完成跨链通信,该源区块链应用代理通过与目的区块链接口节点,目的区块链应用代理通过与源区块链接口节点进行通信,可以保持源区块链以及目的区块链的网络结构以及协议,并保留两个区块链各自的安全机制,本文中的源区块链应用代理与目的区块链接口节点、目的区块链应用代理与源区块链接口节点之间的通信都运行于应用层,具体包括:

源区块链801,源区块链应用代理802,源区块链接口节点803,目的区块链804,目的区块链应用代理805,目的区块链接口节点806。

其中,所述源区块链应用代理802接收所述源区块链801发送的所述跨链通信数据,将所述跨链通信数据转发给目的区块链的接口节点806。

当目的区块链804根据所述目的区块链的接口节点806接收到的所述跨链通信数据后,目的区块链应用代理805接收所述目的区块链804发送的验证所述跨链通信数据的请求,通过源区块链接口节点803验证所述跨链通信数据,并向所述目的区块链804反馈验证结果。

当所述验证结果通过时,所述目的区块链804执行所述跨链通信数据的落链处理。

根据本文的一个实施例,所述源区块链应用代理802接收源区块链发送的跨链通信数据中还包括,判断接收到的源区块链发送的通信数据是否为跨链通信数据,如果为跨链通信数据则转发所述跨链通信数据至所述目的区块链的接口节点。

根据本文的一个实施例,所述源区块链应用代理802接收源区块链发送的跨链通信数据之前还包括,接收所述跨链通信数据发起方的查询请求,根据所述查询请求查询目的区块链中所述跨链通信数据接收方的地址。

根据本文的一个实施例,源区块链应用代理802将所述跨链通信数据转发给目的区块链的接口节点中还包括,将所述源区块链发送的跨链通信数据转换为目的区块链的通信数据。

根据本文的一个实施例,目的区块链应用代理805通过源区块链接口节点验证所述跨链通信数据中进一步包括,根据所述跨链通信数据在所述源区块链接口节点的内存池中查询该跨链通信数据的状态是否为预定状态,如果为预定状态则验证通过,否则验证失败。

根据本文的一个实施例,当在所述目的区块链804执行所述跨链通信数据的落链处理之后还包括,通过所述目的区块链应用代理805通知所述源区块链接口节点803所述跨链通信数据已在目的区块链804中落链完成;所述源区块链801根据所述源区块链接口节点803接收到的通知改变所述跨链通信数据的状态,并在所述源区块链801中将改变状态的跨链通信数据进行落链处理。

根据本文的一个实施例,当在所述目的区块链804执行所述跨链通信数据的落链处理之后还包括,所述源区块链应用代理802根据预定的时间间隔查询所述目的区块链接口节点806上的共享账簿中是否有所述跨链通信数据,如果有,则所述源区块链801改变所述跨链通信数据的状态,并在所述源区块链801中将改变状态的跨链通信数据进行落链处理。

根据本文的一个实施例,当在所述目的区块链804执行所述跨链通信数据的落链处理之后还包括,所述源区块链应用代理802在预定的时间间隔后,如果所述目的区块链接口节点806上的共享账簿中始终未有所述跨链通信数据,则恢复所述跨链通信数据中被冻结的数据。

通过上述本文的实施例,通过源区块链应用代理与目的区块链接口节点,以及目的区块链应用代理与源区块链接口节点的相互通信,完成了源区块链与目的区块链的跨链通信,确保了跨链通信的数据安全性,并且并未改变源区块链以及目的区块链的网络结构以及协议,不必引入第三方的公证人节点以及中继节点,保留源区块链和目的区块链网络的完整性以及原有安全机制,在最小的改动下就可以实现跨链通信。

如图9所示为本文实施例一种区块链跨链方法的示意图,在本实施例中描述了两个物理隔离的区块链a和区块链b进行跨链通信的过程,系统结构可以参考图8中的系统结构图,在本例中区块链a为发起跨链通信数据的源区块链,区块链b为接收跨链通信数据的目的区块链,处于应用层的a链应用代理为源区块链应用代理,处于应用层的b链应用代理为目的区块链应用代理,区块链a中可以有一个或者多个接口节点(在本例中为1个接口节点),区块链b中可以有一个或者多个接口节点(在本例中为1个接口节点),在本例中并不明确示出哪个节点为接口节点,a链的应用代理可以通过应用层与区块链b的接口节点通信,b链的应用代理可以通过应用层与区块链a的接口节点通信,具体包括如下步骤:

步骤901,区块链a和区块链b均各自初始化一个区块链节点作为与对方应用代理的接口节点。

在本步骤中,可以在各自的区块链中采用智能合约的方式进行初始化接口节点。

步骤902,区块链a的某个节点作为发起方发起跨链通信数据。

在本步骤中,区块链a的某个节点可以是区块链a的某个成员的计算设备,也可以使区块链a的某个用户(机构)作为发起方。

步骤903,在区块链a上广播该跨链通信数据,源区块链a中的每个节点都将执行该跨链通信数据,并将验证通过的跨链通信数据存储入各自的本地内存池。其中,内存池中的跨链通信数据中还具有该跨链通信数据的状态信息,例如为区块链a处理完毕,等待区块链b继续处理的状态信息,可以采用布尔类型的数值表示该状态信息,例如1代表区块链a处理完毕等待区块链b继续处理。

智能合约可以根据跨链通信数据的状态信息将跨链通信数据的发起方账户中的与所述跨链通信数据对应的数据进行冻结,可以通过改变发起方账户中相应数据的状态来实现冻结,例如将对应数据的状态位改为冻结状态,冻结状态的含义是相应数据不能再被发起方使用,例如再转让等,但是并不对发起方账户中这部分对应的数据进行扣减。

步骤904,区块链a的智能合约将该跨链通信数据发送给a链应用代理。

步骤905,a链应用代理根据区块链a与区块链b的通信数据格式,将来自于区块链a的跨链通信数据转换为区块链b的通信数据格式。

在本步骤中,当区块链a的跨链通信数据格式中某个字段的数据类型为int(整形),而区块链b的通信数据格式中对应字段的数据类型为float(浮点型),a链应用代理就需要将该跨链通信数据中该字段的数据转换为浮点型数据,再写入区块链b的通信数据的对应字段中,以上只是举例说明a链应用代理进行数据格式转换,该a链应用代理可能还进行其他数据格式的转换。

步骤906,区块链b的接口节点接收到a链应用代理转换后的跨链通信数据。

在该步骤中,b链应用代理根据转换后的跨链通信数据,提取出其中跨链通信数据的唯一标识符,例如跨链通信数据的编号,或者该跨链通信数据的发起方(区块链a中的用户)、接收方(区块链b中的用户)、交易金额、时间戳等信息,生成验证请求。或者还可以将区块链a的跨链通信数据的哈希值作为验证请求。

步骤907,在b链应用代理接收到该跨链通信数据后,或者还可以在区块链b中进行共识验证并落链之前,验证该跨链通信数据在区块链a中的状态是否为区块链a已经处理完毕的状态。

步骤908,区块链a的接口节点接收到b链应用代理发出的验证请求。区块链a的接口节点根据验证请求中的信息,查询该区块链a接口节点的内存池,查询验证请求中的跨链通信数据的记录,记录中包括了跨链通信数据的内容(其中包括了区块链a中跨链通信数据的状态),并将该查询结果反馈给b链应用代理。

在本步骤中,可以通过跨链通信数据的唯一标识符来找到区块链a接口节点的内存池中存储的该跨链通信数据的信息。

在其他实施例中,区块链a的接口节点还可以查询所述跨链通信数据发起方的账户,查询该账户中与所述跨链通信数据对应数据的状态位,如果对应的数据状态位为冻结状态,则可以将所述对应数据的状态位反馈给b链应用代理。

步骤909,b链应用代理核对查询结果与验证请求中的跨链通信数据是否一致,如果一致则验证成功,否则验证失败。

或者,b链应用代理根据查询结果中跨链通信数据的状态位来判断验证是否成功,当查询结果中跨链通信数据的状态位为1时(表示区块链a中的所述跨链通信数据为待转让状态),代表区块链a处理完毕等待区块链b继续处理,则验证成功,否则验证失败。

在其他实施例中,b链应用代理根据所述跨链通信数据发起方账户中相应数据的状态是否为冻结状态来判断验证是否成功,如果为冻结状态,则验证通过,否则验证失败,其中冻结状态表示区块链a处理完毕等待区块链b继续处理。

步骤910,若验证成功,则b链应用代理通知区块链b的智能合约进行跨链通信数据的共识验证以及落链处理。

在本步骤中,当区块链b针对该跨链通信数据进行落链处理之后,区块链b对跨链通信数据的接收方账户中的数据进行修改,例如增加(或减少)与所述跨链通信数据中相应的数据。

本步骤中的区块链b的跨链通信数据共识验证以及落链处理可以参考现有技术,在此不再赘述。

步骤911,若验证不成功,则b链应用代理通知区块链a的接口节点在区块链a中发起跨链通信数据恢复操作,并通知区块链b的智能合约丢弃所述跨链通信数据。

在本步骤中,跨链通信数据在区块链a中的恢复操作,可以是由区块链a的接口节点通知跨链通信数据发起方进行恢复操作,或者由区块链a的接口节点发起针对该跨链通信数据的恢复操作,所述恢复操作可以是改变各个节点内存池中相应的跨链通信数据的状态,记录跨链通信数据处理失败的状态,并最终以跨链通信数据处理失败的状态落链于区块链a的共享账簿中,并将跨链通信数据发起方的账户中的数据再次激活,也就是将发起方账户中的数据恢复到原始状态,即为未使用状态或者空状态,从而解除冻结状态。

在其他实施例中,区块链a的接口节点可以区块链a中的其他节点直接丢弃接收到的所述跨链通信数据,并恢复所述发起方账户中对应数据的状态为原始状态。

步骤912,当跨链通信数据在区块链b中通过共识验证并落链后,通过b链应用代理通知区块链a的接口节点,至此,区块链b中的跨链通信数据已经完成。

步骤913,区块链a的接口节点通知区块链a修改该跨链通信数据的状态。

在本步骤中,区块链a的接口节点可以通知区块链a中新的区块生成节点修改内存池中的跨链通信数据状态,或者广播修改各个节点内存池中该跨链通信数据的状态,例如将状态由待转让状态修改为完成状态。

步骤914,区块链a将上述通信数据进行共识验证后落链处理。

在本步骤中,区块链a中生成新区块的节点根据内存池中的交易生成新的区块,其中,所述跨链通信数据的哈希值也写入到该新生成的区块中。

通过上述本文的实施例,a链应用代理与区块链b的接口节点,以及b链应用代理与区块链a的接口节点的相互通信,完成了区块链a与区块链b的跨链通信,确保了跨链通信的数据安全性,并且并未改变区块链a以及区块链b的网络结构以及协议,不必引入第三方的公证人节点以及中继节点,保留区块链a和区块链b网络的完整性以及原有安全机制,在最小的改动下就可以实现跨链通信。

如图10所示为本文实施例以联盟链较常用的hyperledgerfabric实现为例的跨链通信方法示意图,其中k节点为联盟kafka集群,o节点为联盟中order成员节点(可以认为是交易打包排序的核心节点),o+p节点为联盟内order、peer成员节点,p节点为联盟内peer成员节点(可以认为是用户节点,存放了区块链上权限内的全部数据)。在本例中以两个不同联盟链之间的福费廷业务应收账款为例进行说明,其中福费廷(forfeiting)业务为未偿债务买卖,也称包买票据或票据买断,在延期付款的大型设备贸易中,出口商把经进口商承兑的,或经第三方担保的远期汇票,无追索权地售予出口商所在地的银行或大金融公司,提前取得现款的一种资金融通形式,它是出口信贷的一种类型。跨链通信数据在本例中为跨链交易,所述跨链交易的数据内容中包括数字票据资产p,联盟链a的机构a1为发起跨链交易的发起方,联盟链b的结构b1为接收该跨链交易的接收方,联盟链a的接口节点p1,联盟链b的接口节点为p2,联盟链a的应用代理为agent1,联盟链b的应用代理为agent2,在本实施例中,联盟链b的接口节点p2位于联盟链a的网络中,但是不参与联盟链a的业务,即,联盟链b的接口节点p2不参与联盟链a的共识验证、以及其他属于联盟链a的区块链业务,而该联盟链b接口节点p2通过网络的方式参与联盟链b的共识验证、以及其他区块链业务。agent1可以为一台独立的计算机,也可以与联盟链b的接口节点p2位于同一台计算机,该agent1可以与联盟链a中一个或者多个节点通信,并将通信的内容传递给联盟链b接口节点p2,并且agent1还可以通过联盟链b接口节点p2获取联盟链b中的信息,例如共享账簿信息或者查询联盟链b接口节点p2的内存池中的交易信息。同样,联盟链a的接口节点p1也位于联盟链b的网络中,但是不参与联盟链b的业务,即,联盟链a的接口节点p1不参与联盟链b的共识验证、以及其他属于联盟链b的区块链业务,而该联盟链a接口节点p1通过网络的方式参与联盟链a的共识验证、以及其他区块链业务。agent2可以为一台独立的计算机,也可以与联盟链a的接口节点p1位于同一台计算机,该agent2可以与联盟链b中一个或者多个节点通信,并将通信的内容传递给联盟链a接口节点p1,并且agent2还可以通过联盟链a接口节点p1获取联盟链a中的信息,例如共享账簿信息或者查询联盟链b接口节点p2的内存池中的交易信息。具体包括如下步骤:

步骤1001,机构a1向agent1发起查询跨链交易接收方地址的请求。

在本实施例中,agent1可能存储有所有联盟链b中账户(机构)的地址,该跨链交易中的机构b1可以对应于机构b1在联盟链b中的账户地址,也就是说,可以在agent1中以表格形式存储联盟链b中的所有账户的目标转让地址,一列为联盟链b中所有机构的名称,另一列为机构b1在联盟链b中的账户地址(目标转让地址)。

机构a1的查询请求为定位机构b1的账户地址,当agent1接收到查询请求后,根据上述表格反馈给机构a1机构b1在联盟链b中的账户地址。

或者,agent1接收到查询请求后向与其在应用层通信的接口节点p2发送查询请求,接口节点p2根据查询请求反馈给agent1机构b1的目标转让地址。

步骤1002,联盟链a中的智能合约执行所有交易,对交易的内容进行验证,执行上述验证的智能合约所在的节点将根据发起的跨链交易的执行结果来决定是否将该跨链交易放入本地的内存池中。

在本步骤中,机构a1的跨链交易发起完成,各节点执行该跨链交易后通过验证,将该跨链交易写入本地内存池中,其中,该写入本地内存池中的跨链交易的状态为待转让状态,也就是说,该跨链交易待机构b1确认状态。在联盟链a的所有节点得到同步,在各个节点的内存池中都写入了该跨链交易,包括联盟链a的接口节点p1。

在另一个实施例中,联盟链a执行完所述跨链交易后,将所述跨链交易落链处理,该落链的跨链交易的状态为待转让状态。

步骤1003,联盟链a冻结所述机构a1的相应资产。

在本步骤中,联盟链a根据跨链交易中转让给机构b1的资产p的数额,冻结联盟链a中机构a1账户的相应数额。其中,在本例中,可以是修改机构a1中相应票据的数字资产状态为冻结状态。

步骤1004,机构a1通过agent1将跨链交易发送给联盟链b的接口节点p2。该跨链交易中包括了资产p的相关信息,例如包括了票据的票号、机构a1的标识符、数字证书、票据图像扫描件的哈希值、票据中的数字资产等。其中,agent1还将根据联盟链a的跨链交易转换为符合联盟链b数据格式的跨链交易,例如调整、安排上述联盟链a跨链交易的字段和相应数据内容顺序,或者还可以包括对某些字段的加解密处理等。

步骤1005,联盟链b的接口节点p2在联盟链b中发起接收交易。

在本步骤中,联盟链b可以在通过接口节点p2接收到跨链交易后,通过智能合约的方式,决定由哪个节点发起接收交易,或者不需要智能合约指定由哪个节点发起接收交易,而直接由接口节点p2发起接收交易。该接收交易中的数据与接收到的跨链交易中的数据相应,即,由机构a1转让出的票据数额与机构b1接收的票据数额相等。

步骤1006,在接收交易的过程中,联盟链b通过agent2访问联盟链a的接口节点p1,验证该跨链交易是否为预定状态。

在本步骤中,可以由智能合约向agent2发起验证上述跨链交易的请求,由agent2通过与其通信的联盟链a的接口节点p1查询其内存池中存储的交易信息,在本实施例中,联盟链a的接口节点p1的内存池中存储有所述跨链交易,并且该跨链交易的状态为待转让状态,联盟链a的接口节点p1将该跨链交易的状态反馈给agent2。

在其他实施例中,agent2还可以查询联盟链a的接口节点p1中跨链交易发起方(机构a1)的账户中相应票据数字资产的状态。

在另一个实施例中,agent2还可以查询联盟链a的接口节点p1中的共享账簿中的记录,获得所述跨链交易的状态。

步骤1007,agent2判断所述联盟链a的接口节点p1的内存池中跨链交易的状态是否为待转让状态,如果判断结果为是,则反馈给联盟链b的智能合约验证通过,否则反馈给联盟链b的智能合约验证失败。

在其他实施例中,agent2判断机构a1的账户中相应票据数字资产的状态是否为冻结状态,则反馈给联盟链b的智能合约验证通过,否则反馈给联盟链b的智能合约验证失败。

在另一个实施例中,agent2判断联盟链a的共享账簿中所述跨链交易的状态是否为待装让状态,如果是则反馈给联盟链b的智能合约验证通过,否则反馈给联盟链b的智能合约验证失败。

在本实施例中,验证通过,则agent2将验证通过的验证结果反馈给联盟链b的智能合约。

步骤1008,联盟链b机构b1发起接收交易。

根据所述跨链交易中资产p的信息,将资产p的接收交易内容在联盟链b中进行广播,每个联盟链b的节点接收到该接收交易后执行该交易,并在验证后放入本地内存池中,然后通过共识验证后,将该接收交易在联盟链b中落链,并在机构b1的账户中写入相应于资产p的数据内容。

步骤1009,联盟链b通过agent2向联盟链a发送资产接收成功的通知信息。

在本步骤中,联盟链b的智能合约将通知信息发送给agent2,agent2将该通知信息发送给联盟链a的接口节点p1,或者还可以发送给联盟链a的跨链交易发起方机构a1。

步骤1010,联盟链a的接口节点p1(或者跨链交易发起方机构a1)接收到该通知信息后,修改当前产生区块节点的内存池中所述跨链交易的状态,将该状态改为转让完成状态,并在联盟链a中将该跨链交易的哈希值写入新生成的区块中,最终在联盟链a中落链成功,机构a1的账户中扣减相应跨链交易中资产p的票据信息。

在另一个实施例中,当在步骤1002中,联盟链a将所述跨链交易以待转让状态写入联盟链a的共享账簿中。在本步骤1010中,联盟链a的接口节点p1(或者跨链交易发起方机构a1)接收到该通知信息后,还可以发起新的交易,该新的交易中的交易数据与所述跨链交易的资产p相同,在联盟链a中进行验证后进行落链处理,而该新的交易的状态为完成状态,并在机构a1的账户中扣减相应跨链交易中资产p的票据信息。

在其他实施例中,上述步骤1009,联盟链b可以不向联盟链a发送接收成功的同时信息,而是联盟链a的agent1在预定时间后,查询联盟链b的接口节点p2中的共享账户中该跨链交易,如果在联盟链b的共享账簿中存在该跨链交易,则说明联盟链b中的机构b1已经完成了接收,然后在联盟链a中修改该跨链交易的状态,或如上述多种可能的步骤,完成在联盟链a中该跨链交易的落链处理。

作为本文的一个实施例,在步骤1003后,如果联盟链a的agent1在另一预定时间之后,始终无法接收到来自于联盟链b的接收完成通知消息,或者联盟链b的共享账簿中始终没有出现该跨链交易,则重新激活联盟链a的机构a1的相应资产。

通过上述本文的实施例,可以在联盟链a中设置属于联盟链b的接口节点,并在联盟链b中设置属于联盟链a的接口节点,这样可以通过agent模块的整合,将跨链功能模块化,避免了对区块链底层复杂的改造,统一了跨链交易的出入路径,简化了双方系统改造的开发以及网络部署的工作量;利用区块链分布式的特性,使用部署在己方的agent+对方节点进行数据验证操作,确保了双方数据的完整性和正确性;屏蔽区块链底层细节,交易方只需统一相关技术接口即可进行业务往来。

如图11所示为本文实施例一种区块链跨链装置的结构示意图,在本实施例中,源区块链应用代理和目的区块链应用代理均可以运行于本实施例中的设备之上,在本实施例中称为计算设备,计算设备1102可以包括一个或多个处理设备1104,诸如一个或多个中央处理单元(cpu),每个处理单元可以实现一个或多个硬件线程。计算设备1102还可以包括任何存储资源1106,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储资源1106可以包括以下任一项或多种组合:任何类型的ram,任何类型的rom,闪存设备,硬盘,光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。进一步地,任何存储资源可以提供信息的易失性或非易失性保留。进一步地,任何存储资源可以表示计算设备1102的固定或可移除部件。在一种情况下,当处理设备1104执行被存储在任何存储资源或存储资源的组合中的相关联的指令时,计算设备1102可以执行相关联指令的任一操作。计算设备1102还包括用于与任何存储资源交互的一个或多个驱动机构1108,诸如硬盘驱动机构、光盘驱动机构等。

计算设备1102还可以包括输入/输出模块1110(i/o),其用于接收各种输入(经由输入设备1112)和用于提供各种输出(经由输出设备1114))。一个具体输出机构可以包括呈现设备1116和相关联的图形用户接口(gui)1118。计算设备1102还可以包括一个或多个网络接口1120,其用于经由一个或多个通信链路1122与其他设备交换数据。一个或多个通信总线1124将上文所描述的部件耦合在一起。

通信链路1122可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路1122可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。

本文实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:

接收源区块链发送的跨链通信数据;

将所述跨链通信数据转发给目的区块链的接口节点。

本文实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:

接收目的区块链发送的验证跨链通信数据的请求;

通过源区块链接口节点验证所述跨链通信数据;

向所述目的区块链反馈验证结果。

本文实施例提供的计算机设备还可以实现如图2-图5、图9-图10中的方法。

对应于图2-图5、图9-图10中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。

本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图2-图5、图9-图10所示的方法。

应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。

还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。

另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。

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