跨区块链的交互方法及装置、系统、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种跨区块链的交互方法及装置、系统、电子设备。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种跨区块链的交互方法及装置、系统、电子设备。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种跨区块链的交互系统,包括:
第一区块链和第二区块链;
订阅客户端,所述订阅客户端对应于所述第一区块链内的区块链节点,用于维护所述区块链节点对应的消息队列,所述消息队列包含所述区块链节点订阅的消息;
发布客户端,所述发布客户端对应于所述第二区块链,用于获取并发布所述第二区块链产生的消息;
跨链交互端,所述跨链交互端获取所述区块链节点的订阅条件,并在所述消息队列未包含满足所述订阅条件的消息时,向所述发布客户端请求满足所述订阅条件的消息并发送至所述订阅客户端,以更新至所述消息队列中。
根据本说明书一个或多个实施例的第二方面,提出了一种跨区块链的交互方法,包括:
第一区块链的区块链节点通过所述第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链上的消息;
所述区块链节点实施与所述消息相关的操作。
根据本说明书一个或多个实施例的第三方面,提出了一种跨区块链的交互方法,包括:
订阅客户端通过第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链发布的消息,所述消息满足所述第一区块链内的区块链节点向所述跨链交互端提供的订阅条件;
所述订阅客户端将所述消息提供至所述区块链节点。
根据本说明书一个或多个实施例的第四方面,提出了一种跨区块链的交互方法,包括:
跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件;
所述跨链交互端获取第二区块链上满足所述订阅条件的消息,以提供至所述区块链节点。
根据本说明书一个或多个实施例的第五方面,提出了一种跨区块链的交互方法,包括:
发布客户端获取第二区块链上的消息;
所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息发送至所述第一区块链中的区块链节点。
根据本说明书一个或多个实施例的第六方面,提出了一种跨区块链的交互装置,包括:
获取单元,使第一区块链的区块链节点通过所述第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链上的消息;
实施单元,使所述区块链节点实施与所述消息相关的操作。
根据本说明书一个或多个实施例的第七方面,提出了一种跨区块链的交互装置,包括:
消息获取单元,使订阅客户端通过第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链发布的消息,所述消息满足所述第一区块链内的区块链节点向所述跨链交互端提供的订阅条件;
消息提供单元,使所述订阅客户端将所述消息提供至所述区块链节点。
根据本说明书一个或多个实施例的第八方面,提出了一种跨区块链的交互装置,包括:
获取单元,使跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件;
提供单元,使所述跨链交互端获取第二区块链上满足所述订阅条件的消息,以提供至所述区块链节点。
根据本说明书一个或多个实施例的第九方面,提出了一种跨区块链的交互装置,包括:
获取单元,使发布客户端获取第二区块链上的消息;
发送单元,使所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息发送至所述第一区块链中的区块链节点。
根据本说明书一个或多个实施例的第十方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为实现如上述实施例中任一所述的方法。
附图说明
图1是一示例性实施例提供的一种跨区块链的交互方法的流程图。
图2是一示例性实施例提供的另一种跨区块链的交互方法的流程图。
图3是一示例性实施例提供的又一种跨区块链的交互方法的流程图。
图4是一示例性实施例提供的再一种跨区块链的交互方法的流程图。
图5是一示例性实施例提供的一种跨区块链的交互系统的架构示意图。
图6是一示例性实施例提供的另一种跨区块链的交互系统的架构示意图。
图7是一示例性实施例提供的一种跨区块链的关联转账系统的结构示意图。
图8是一示例性实施例提供的一种跨区块链的消息交互过程的示意图。
图9是一示例性实施例提供的一种设备的结构示意图。
图10是一示例性实施例提供的一种跨区块链的交互装置的框图。
图11是一示例性实施例提供的另一种跨区块链的交互装置的框图。
图12是一示例性实施例提供的又一种跨区块链的交互装置的框图。
图13是一示例性实施例提供的再一种跨区块链的交互装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
图1是一示例性实施例提供的一种跨区块链的交互方法的流程图。如图1所示,该方法应用于第一区块链的区块链节点,可以包括以下步骤:
步骤102,第一区块链的区块链节点通过所述第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链上的消息。
在一实施例中,通过在第一区块链与第二区块链之间设置跨链交互端,使得第一区块链与第二区块链可以基于该跨链交互端实现消息交互,从而实现多个区块链之间的跨链交互。
在一实施例中,第一区块链表示跨链交互中接收交互消息的一方、第二区块链表示跨链交互中提供交互消息的一方,即“第一区块链”、“第二区块链”取决于相应的区块链在跨链交互过程中所处的角色,而并不限制某一区块链为第一区块链或第二区块链。换言之,当某一区块链在跨链交互中接收来自其他区块链的交互消息时,该某一区块链为该跨链交互过程中的“第一区块链”;而当该某一区块链在跨链交互中向其他区块链提供交互消息时,该某一区块链为该跨链交互过程中的“第二区块链”。
在一实施例中,所述区块链节点获取的消息包括:所述第二区块链发布且满足所述区块链节点的订阅条件的消息。例如,假定需要由用户A在第二区块链上向用户B转移资产1、由用户B在第一区块链上向用户A转移资产2,那么首先在第二区块链上实施由用户A向用户B转移资产1的操作,然后由第一区块链收到该操作对应的操作完成消息后,在第一区块链上实施由用户B向用户A转移资产2的操作;其中,对于用户A与用户B之间的上述资产转移过程而言,第一区块链上的区块链节点的订阅条件可以为“用户A向用户B转移了资产1”,因而该区块链节点所需获取的消息为:第二区块链上发布的含义为“用户A向用户B转移了资产1”的消息,从而触发该区块链节点实施与该消息相关的操作,即由用户B向用户A转移资产2的操作。
在一实施例中,所述区块链节点可以向跨链交互端发起订阅请求,所述订阅请求用于向所述跨链交互端指示订阅条件,使所述跨链交互端获取所述第二区块链发布且满足所述订阅条件的消息,以添加至所述区块链节点对应的订阅客户端维护的消息队列中;然后,所述区块链节点获取所述消息队列中的消息。通过向跨链交互端提供订阅条件,并由跨链交互端获取满足该订阅条件的消息,便于统筹区块链上数量众多的区块链节点,使得所有区块链节点的订阅条件均可以由跨链交互端所满足。
步骤104,所述区块链节点实施与所述消息相关的操作。
在一实施例中,所述区块链节点可以发起与获取的所述消息相关联的合约操作,从而在该合约操作生效时,完成上述与消息相关的操作。
图2是一示例性实施例提供的另一种跨区块链的交互方法的流程图。如图2所示,该方法应用于订阅客户端,可以包括以下步骤:
步骤202,订阅客户端通过第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链发布的消息,所述消息满足所述第一区块链内的区块链节点向所述跨链交互端提供的订阅条件。
在一实施例中,所述订阅客户端可以被配置于所述区块链节点上,即该订阅客户端可以理解为该区块链节点上实现或扩展出的消息订阅功能。在其他实施例中,订阅客户端还可以配置于第一区块链之外的其他节点处,本说明书并不对此进行限制。
步骤204,所述订阅客户端将所述消息提供至所述区块链节点。
在一实施例中,所述订阅客户端可以将获取的消息添加至消息队列中,所述消息队列对应于所述区块链节点,以由所述区块链节点从所述消息队列中获取所述消息。
在一实施例中,订阅客户端与区块链节点之间一一对应,使得跨链交互端可以根据订阅客户端映射到相应的区块链节点,确保消息的准确传达。在其他实施例中,同一订阅客户端也可以对应于多个区块链节点,比如该订阅客户端上可以维护与多个区块链节点之间一一对应的多个消息队列,从而通过消息队列映射到相应的区块链节点。
在一实施例中,所述订阅客户端可以根据跨链交互端更新至消息队列中的消息和所述区块链节点对所述消息队列中的消息的消费状况,维护所述消息队列的队列状态,以表明该消息队列中包含的消息;然后,所述订阅客户端可以向所述跨链交互端发送所述队列状态,使所述跨链交互端根据所述队列状态确定该消息队列中是否包含满足上述订阅条件的消息;当包含满足该订阅条件的消息时,跨链交互端无需重复获取该消息,当未包含满足该订阅条件的消息时,跨链交互端可以获取所述第二区块链发布且满足所述订阅条件的消息,以更新至上述的消息队列中。
在一实施例中,所述订阅客户端可以接收所述跨链交互端发起的状态询问请求;其中,所述订阅客户端响应于所述状态询问请求,向所述跨链交互端返回所述队列状态。换言之,消息队列及其队列状态均由区块链节点对应的订阅客户端维护,而避免由跨链交互端进行维护,防止有关人员针对跨链交互端实施恶意行为,有助于提升消息传递过程中的可靠性。
在一实施例中,所述订阅客户端可以对所述跨链交互端提供的消息进行验证,以在通过验证后提供至所述区块链节点。基于区块链技术的分布式账本、统一记账数据、数据不可篡改的特性,使得即便有关人员对跨链交互端提供的消息进行篡改,也可以对消息的真实可靠性进行验证,从而消除安全性风险。
在一实施例中,订阅客户端可以通过任意的一种或多种方式对消息进行验证,本说明书并不对此进行限制。例如,当消息位于第二区块链上的最长链且该消息所处的区块之后存在至少6个区块时,可以确定该消息通过验证;再例如,可以基于PBFT(PracticalByzantine Fault Tolerance,实用拜占庭容错)算法对消息进行验证;又例如,可以通过预设的预言机(Oracle)来验证该消息。
图3是一示例性实施例提供的又一种跨区块链的交互方法的流程图。如图3所示,该方法应用于跨链交互端,可以包括以下步骤:
步骤302,跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件。
在一实施例中,所述跨链交互端可以向所述区块链节点对应的订阅客户端发起状态查询请求,所述订阅客户端维护有所述区块链节点对应的消息队列;然后,所述跨链交互端接收所述订阅客户端返回的所述消息队列的队列状态,并根据该队列状态确定上述消息队列中是否包含满足订阅条件的消息;当包含满足该订阅条件的消息时,跨链交互端无需重复获取该消息,当未包含满足该订阅条件的消息时,跨链交互端可以获取所述第二区块链发布且满足所述订阅条件的消息,以更新至上述的消息队列中。换言之,消息队列及其队列状态均由区块链节点对应的订阅客户端维护,而避免由跨链交互端进行维护,防止有关人员针对跨链交互端实施恶意行为,有助于提升消息传递过程中的可靠性。
在一实施例中,所述跨链交互端可以向所述第二区块链对应的发布客户端发起对应于所述订阅条件的消息获取请求,所述发布客户端用于维护所述第二区块链产生的消息;然后,所述跨链交互端接收所述发布客户端返回的匹配于所述消息获取请求的消息。换言之,发布客户端从第二区块链上获取所有可发布的消息,这些消息均为无状态消息,即发布客户端并不需要维护第一区块链上的区块链节点对应的消息队列及其队列状态,仅需要对跨链交互端发起的消息获取请求进行响应即可,从而防止有关人员针对发布客户端实施恶意行为,有助于提升消息传递过程中的可靠性。
步骤304,所述跨链交互端获取第二区块链上满足所述订阅条件的消息,以提供至所述区块链节点。
在一实施例中,所述跨链交互端可以配置于所述第一区块链上;或者,所述跨链交互端可以配置于所述第二区块链上;或者,所述跨链交互端可以配置于所述第一区块链和所述第二区块链之外的节点上;或者,所述跨链交互端还可以配置于其他位置,本说明书并不对此进行限制。
图4是一示例性实施例提供的再一种跨区块链的交互方法的流程图。如图4所示,该方法应用于发布客户端,可以包括以下步骤:
步骤402,发布客户端获取第二区块链上的消息。
在一实施例中,所述发布客户端可以接收所述跨链交互端发起的消息获取请求;其中,所述消息获取请求由所述跨链交互端根据所述区块链节点提供的订阅条件而生成;然后,所述发布客户端将所述第二区块链上匹配于所述消息获取请求的消息发送至所述跨链交互端,以由所述跨链交互端发送至所述区块链节点。换言之,发布客户端从第二区块链上获取所有可发布的消息,这些消息均为无状态消息,即发布客户端并不需要维护第一区块链上的区块链节点对应的消息队列及其队列状态,仅需要对跨链交互端发起的消息获取请求进行响应即可,从而防止有关人员针对发布客户端实施恶意行为,有助于提升消息传递过程中的可靠性。
步骤404,所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息发送至所述第一区块链中的区块链节点。
在一实施例中,跨链交互端可以将消息发送至订阅客户端,由订阅客户端将消息添加至区块链节点对应的消息队列中,以供区块链节点获取并实施相关操作。
在一实施例中,第二区块链上的所有区块链节点可以对应于同一发布客户端;或者,第二区块链上的区块链节点可以分别对应于多个发布客户端,本说明书并不对此进行限制。
图5是一示例性实施例提供的一种跨区块链的交互系统的架构示意图。如图5所示,跨区块链的交互系统可以包括:
第一区块链和第二区块链,第一区块链为本说明书中作为消息订阅方的区块链、第二区块链为本说明书中作为消息发布方的区块链;换言之,“第一区块链”、“第二区块链”只是用于区分不同区块链所扮演的角色,而并不固定某一区块链为“第一区块链”或“第二区块链”。
订阅客户端,该订阅客户端对应于第一区块链内的区块链节点,用于维护该区块链节点对应的消息队列,该消息队列包含该区块链节点订阅的消息。在一实施例中,订阅客户端可以配置在独立于第一区块链之外的设备、节点或平台等处;在另一实施例中,订阅客户端可以配置在第一区块链内的该区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的订阅功能。
发布客户端,该发布客户端对应于第二区块链,用于获取并发布第二区块链产生的消息。基于区块链的分布式记账特性,第二区块链上的所有区块链节点之间可以通过共识维护相同内容的全量记账数据,即区块链账本,而发布客户端可以从该区块链账本上获取允许发布的消息,以供跨链交互端获取。在一实施例中,发布客户端可以配置在独立于第二区块链之外的设备、节点或平台等处;在另一实施例中,发布客户端可以配置在第二区块链内的区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的发布功能。
跨链交互端,该跨链交互端可以接收第一区块链中的区块链节点发起的订阅请求,该订阅请求中包含订阅条件,以表明该区块链节点的订阅需求。跨链交互端可以向订阅客户端发起状态询问消息,并根据订阅客户端返回的上述消息队列的队列状态,确定消息队列中是否包含满足该订阅条件的消息;如果包含,跨链交互端无需重复获取该消息,如果未包含,跨链交互端需要从上述的发布客户端处获取满足该订阅条件的消息;其中,跨链交互端可以向发布客户端请求满足上述订阅条件的消息,并将发布客户端返回的消息发送至订阅客户端,以更新至上述的消息队列中,供第一区块链中的区块链节点进行消费。其中,跨链交互端仅在发布客户端与订阅客户端之间传递消息,不需要对消息进行持久化。在一实施例中,跨链交互端可以配置在独立于第一区块链和第二区块链之外的设备、节点或平台等处;在另一实施例中,跨链交互端可以配置在第一区块链内的区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的跨链交互功能;在另一实施例中,跨链交互端可以配置在第二区块链内的区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的跨链交互功能。
基于图5所示实施例中的订阅客户端、发布客户端、跨链交互端等,并使得第一区块链内的区块链节点对应的消息队列被维护于该区块链节点对应的订阅客户端上,使得该区块链节点对于该消息队列中消息的消费情况被维护于该区块链节点处,而跨链交互端、发布客户端等均不需要维护该消费情况,从而避免跨链交互端、发布客户端等向订阅客户端提供错误或无效消息。
跨链交互端向订阅客户端提供的消息来源于发布客户端,而发布客户端所提供的消息来源于第二区块链,并且发布客户端并不维护消息队列的队列状态,使得发布客户端无法篡改消息内容,而跨链交互端对消息内容的篡改无意义,因为订阅客户端可以根据第二区块链上维护的区块链账本进行内容验证,从而确保消息内容的可靠性。但在一些情况下,跨链交互端可能发起拒绝服务攻击,使得订阅客户端无法获得发布客户端所发布的消息;为此,如图6所示:在订阅客户端与发布客户端之间可以配置多个相互独立的跨链交互端,比如跨链交互端1与跨链交互端2等,使得即便跨链交互端1发起解决服务攻击时,订阅客户端仍然可以通过跨链交互端2获得发布客户端发布的消息。
为了便于理解,以跨区块链的关联转账场景为例,对本说明书一个或多个实施例的技术方案进行说明。图7是一示例性实施例提供的一种跨区块链的关联转账系统的结构示意图;如图7所示,假定用户A分别在区块链1上存在账户A1、在区块链2上存在账户A2,用户B分别在区块链1上存在账户B1、在区块链2上存在账户B2,其中区块链1上的账户A1与账户B1用于维护某一类型的资产对象(比如证券)、区块链2上的账户A2与账户B2用于维护另一类型的资产对象(比如人民币),那么当用户A希望将证券出售给用户B时,可以采用下述的关联转账逻辑实现:从账户A2向账户B2转入指定数量的证券资产,然后由账户B1向账户A1转入指定数额的人民币。
为了提升转账过程中的可靠性,可以通过在区块链1、区块链2上分别设定相应的智能合约,从而自动化地完成上述的两次转账过程,而避免用户在手动转账过程中出现有意或无意的转账数额错误、延迟等,确保转账过程快速、准确完成。而基于本说明书的技术方案,可以在区块链1与区块链2之间实现跨区块链的消息交互,使得区块链1能够确定区块链2上已经完成了账户A2向账户B2的转账操作后,在区块链1上实施账户B1向账户A1的转账操作。
在如图7所示的实施例中,假定区块链1包括区块链节点1、区块链节点2、区块链节点3等,其中区块链节点1上配置有订阅客户端1、区块链节点2上配置有订阅客户端2、区块链节点3上配置有订阅客户端3等;其中,订阅客户端1~3并不一定配置于区块链节点1~3上,也可以配置于区块链1之外的独立节点上,本说明书并不对此进行限制。其中,订阅客户端1上维护有区块链节点1对应的消息队列1,订阅客户端2上维护有区块链节点2对应的消息队列2,订阅客户端3上维护有区块链节点3对应的消息队列3。区块链2配置有相应的发布客户端,该发布客户端可以配置于该区块链2上的某一区块链节点上,也可以配置于区块链2之外的独立节点上,本说明书并不对此进行限制。在订阅客户端1~3与发布客户端之间,配置有跨链交互端;其中,该跨链交互端可以配置于区块链1上的某一区块链节点上,或者可以配置于区块链2上的某一区块链节点上,或者可以配置于区块链1与区块链2之外的独立节点上,本说明书并不对此进行限制。
其中,由订阅客户端1~3分别维护上述的消息队列1~3,该消息队列1~3中包含区块链节点1~3分别订阅的消息。订阅客户端1~3可以根据区块链节点1~3分别对消息队列1~3中消息的消费情况,维护该消息队列1~3的队列状态。而跨链交互端和发布客户端并不需要维护队列状态,发布客户端可以获取区块链2上所有供发布的消息,而跨链交互端可以通过向订阅客户端1~3询问队列状态,并据此向发布客户端请求相应的消息,以更新至相应的消息队列中。下面以区块链节点1为例,对跨区块链的消息交互过程进行描述;其中,图8是一示例性实施例提供的一种跨区块链的消息交互过程的示意图,如图8所示,该消息交互过程可以包括以下步骤:
步骤801,跨链交互端向订阅客户端1请求队列状态。
步骤802,跨链交互端接收订阅客户端1返回的队列状态。
在一实施例中,订阅客户端1维护了区块链节点1对应的消息队列(即上述的消息队列1),该消息队列中包含有区块链节点1订阅的消息,而队列状态包含了区块链节点1对于各个消息的消费情况,使得跨链交互端可以据此了解需要向发布客户端请求获取的下一条消息为何。
具体地,由区块链节点1向跨链交互端发起订阅请求,该订阅请求包含订阅条件。以上述的用户A与用户B之间的转账交易为例,假定订阅条件为:账户A2向账户B2转入指定数量的证券资产的交易成功完成。那么,跨链交互端通过查询上述的队列状态,可以确定订阅客户端1维护的消息队列中是否包含满足该订阅条件的消息,即账户A2向账户B2转入指定数量的证券资产的交易成功消息。如果已经存在满足该订阅条件的消息,跨链交互端无需重复获取该消息、判定该订阅请求已被成功响应;如果并不存在满足该订阅条件的消息,跨链交互端可以确定所需获取的下一条消息为账户A2向账户B2转入指定数量的证券资产的交易成功消息,需要继续执行后续步骤,以获取该下一条消息。
步骤803,跨链交互端向发布客户端发起消息获取请求。
在一实施例中,以上述的用户A与用户B之间的转账交易为例,假定由区块链节点1订阅了区块链2上的下述消息:账户A2向账户B2转入指定数量的证券资产的交易成功消息,那么当跨链交互端根据队列状态确定所需获取的下一条消息为该交易成功消息时,可以据此向发布客户端发起相应的消息获取请求,以获取该交易成功消息。
步骤804,跨链交互端获取发布客户端返回的消息。
在一实施例中,发布客户端通过解析消息获取请求,可以确定跨链交互端所需的消息。如果发布客户端已经获得了该交易成功消息,可以直接返回给跨链交互端;如果发布客户端尚未获得该交易成功消息,可以向跨链交互端告知获取失败,使得跨链交互端可以按照预设周期进行反复询问,直至发布客户端已获得该交易成功消息。或者,在一些情况下,如果发布客户端尚未获得该交易成功消息,可以由发布客户端对该交易成功消息进行监控,并在确定获得该交易成功消息后,由发布客户端主动发送至跨链交互端。
在一实施例中,区块链2上发生的由账户A2向账户B2的转账操作,可以为区块链2上的某一区块链节点通过调用智能合约而完成,也可以由智能合约根据预先定义的触发条件而自动触发完成,本说明书并不对此进行限制。
步骤805,跨链交互端将获得的消息发送至订阅客户端1。
在一实施例中,跨链交互端只负责在订阅客户端1与发布客户端之间的数据传递功能,而既不维护消息队列和队列状态,也不关注于数据内容,并且不需要对数据进行持久化,仅作为数据传递的“管道”。
步骤806,订阅客户端1将跨链交互端发送的消息添加至消息队列中,以维护该消息队列。
在一实施例中,订阅客户端1或者区块链节点1可以对收到的消息进行验证,以确保该消息真实可靠、未经篡改。订阅客户端1或者区块链节点1可以采用各种形式的验证方式,本说明书并不对此进行限制;例如,订阅客户端1或者区块链节点1可以查验该消息在区块链2上所处的区块是否位于最长链上,以及该区块之后存在的区块数量,如果该消息所处的区块位于最长链上且该区块之后的区块数量不小于6,可以确定该消息通过验证;再例如,订阅客户端1或者区块链节点1可以基于PBFT算法或预言机的方式对该消息进行验证。
实际上,由于区块链的分布式记账技术,使得跨链交互端、发布客户端或区块链2上的部分区块链节点对消息内容进行篡改是无意义的,不会影响区块链2的区块链账本上所记录的账本数据,确保订阅客户端1或者区块链节点1可以对收到的消息进行有效验证。
在一实施例中,假定区块链1上预先创建有相应的智能合约,该智能合约的触发条件为获得上述的交易成功消息、合约操作的内容为从账户B1向账户A1转入指定数额的人民币,那么当区块链节点1从订阅客户端1维护的消息队列中获取上述的交易成功消息后,可使该智能合约被自动调用并发起相应的合约操作,从而自动实现从账户B1向账户A1转入指定数额的人民币,使得用户A与用户B之间的转账操作能够可靠、无延迟(指人工操作时所导致的延迟,不包含数据传递和处理所消耗的正常时长)地完成。
图9是一示例性实施例提供的一种设备的示意结构图。请参考图9,在硬件层面,该设备包括处理器902、内部总线904、网络接口906、内存908以及非易失性存储器910,当然还可能包括其他业务所需要的硬件。处理器902从非易失性存储器910中读取对应的计算机程序到内存908中然后运行,在逻辑层面上形成跨区块链的交互装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在一实施例中,请参考图10,在软件实施方式中,该跨区块链的交互装置可以包括:
获取单元1001,使第一区块链的区块链节点通过所述第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链上的消息;
实施单元1002,使所述区块链节点实施与所述消息相关的操作。
可选的,所述区块链节点获取的消息包括:所述第二区块链发布且满足所述区块链节点的订阅条件的消息。
可选的,所述获取单元1001具体用于:
使所述区块链节点向所述跨链交互端发起订阅请求,所述订阅请求用于向所述跨链交互端指示订阅条件,使所述跨链交互端通过所述跨链交互端获取所述第二区块链发布且满足所述订阅条件的消息,以添加至所述区块链节点对应的订阅客户端维护的消息队列中;
所述区块链节点获取所述消息队列中的消息。
可选的,所述实施单元1002具体用于:
使所述区块链节点发起与获取的所述消息相关联的合约操作。
在另一实施例中,请参考图11,在软件实施方式中,该跨区块链的交互装置可以包括:
消息获取单元1101,使订阅客户端通过第一区块链与第二区块链之间的跨链交互端,获取所述第二区块链发布的消息,所述消息满足所述第一区块链内的区块链节点向所述跨链交互端提供的订阅条件;
消息提供单元1102,使所述订阅客户端将所述消息提供至所述区块链节点。
可选的,所述消息提供单元1102具体用于:
使所述订阅客户端将获取的消息添加至所述区块链节点对应的消息队列中,以由所述区块链节点从所述消息队列中获取所述消息。
可选的,
还包括:维护单元1103,使所述订阅客户端维护所述消息队列的队列状态;
所述消息获取单元1101具体用于:使所述订阅客户端向所述跨链交互端发送所述队列状态,使所述跨链交互端在根据所述队列状态确定所述消息队列中未包含满足所述订阅条件的消息时,获取所述第二区块链发布且满足所述订阅条件的消息。
可选的,还包括:
请求接收单元1104,使所述订阅客户端接收所述跨链交互端发起的状态询问请求;
其中,所述消息获取单元1101使所述订阅客户端响应于所述状态询问请求,向所述跨链交互端返回所述队列状态。
可选的,还包括:
验证单元1105,使所述订阅客户端对所述跨链交互端提供的消息进行验证,以在通过验证后提供至所述区块链节点。
可选的,所述订阅客户端被配置于所述区块链节点上。
在又一实施例中,请参考图12,在软件实施方式中,该跨区块链的交互装置可以包括:
获取单元1201,使跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件;
提供单元1202,使所述跨链交互端获取第二区块链上满足所述订阅条件的消息,以提供至所述区块链节点。
可选的,还包括:
查询单元1203,使所述跨链交互端向所述区块链节点对应的订阅客户端发起状态查询请求,所述订阅客户端维护有所述区块链节点对应的消息队列;
接收单元1204,使所述跨链交互端接收所述订阅客户端返回的所述消息队列的队列状态,以在根据所述队列状态确定所述消息队列中未包含满足所述订阅条件的消息时,获取所述第二区块链上满足所述订阅条件的消息。
可选的,所述获取单元1201具体用于:
使所述跨链交互端向所述第二区块链对应的发布客户端发起对应于所述订阅条件的消息获取请求,所述发布客户端用于维护所述第二区块链产生的消息;
使所述跨链交互端接收所述发布客户端返回的匹配于所述消息获取请求的消息。
可选的,所述跨链交互端配置于所述第一区块链上;或者,所述跨链交互端配置于所述第二区块链上;或者,所述跨链交互端配置于所述第一区块链和所述第二区块链之外的节点上。
在再一实施例中,请参考图13,在软件实施方式中,该跨区块链的交互装置可以包括:
获取单元1301,使发布客户端获取第二区块链上的消息;
发送单元1302,使所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息发送至所述第一区块链中的区块链节点。
可选的,所述获取单元1301具体用于:
使所述发布客户端接收所述跨链交互端发起的消息获取请求;其中,所述消息获取请求由所述跨链交互端根据所述区块链节点提供的订阅条件而生成;
使所述发布客户端将所述第二区块链上匹配于所述消息获取请求的消息发送至所述跨链交互端,以由所述跨链交互端发送至所述区块链节点。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。