跨区块链的交互方法及装置、系统、电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种跨区块链的交互方法及装置、系统、电子设备。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种跨区块链的交互方法及装置、系统、电子设备。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种跨区块链的交互系统,包括:
第一区块链和第二区块链;
订阅客户端,所述订阅客户端对应于所述第一区块链内的区块链节点,用于维护所述区块链节点对应的消息队列,所述消息队列包含所述区块链节点订阅的消息;
发布客户端,所述发布客户端对应于所述第二区块链,用于获取所述第二区块链上的第二智能合约产生的消息;
跨链交互端,所述跨链交互端获取所述区块链节点的订阅条件,并在所述消息队列未包含满足所述订阅条件的消息时,向所述发布客户端请求满足所述订阅条件的消息并发送至所述订阅客户端,以更新至所述消息队列中;
所述区块链节点在确定所述消息队列中包含满足所述订阅条件的消息时,调用所述第一区块链上的第一智能合约,以触发相应的合约操作。
根据本说明书一个或多个实施例的第二方面,提出了一种跨区块链的交互方法,包括:
第一区块链的区块链节点通过所述第一区块链与第二区块链之间的跨链交互端,确定所述第二区块链上的第二智能合约产生的消息;
当所述第二智能合约产生的消息满足所述区块链节点的订阅条件时,所述区块链节点调用所述第一区块链上的第一智能合约,以触发执行相应的合约操作。
根据本说明书一个或多个实施例的第三方面,提出了一种跨区块链的交互方法,包括:
订阅客户端获取第二区块链上的第二智能合约产生的消息,所述消息由第一区块链与所述第二区块链之间的跨链交互端从所述第二区块链处获得,且所述消息满足所述第一区块链内的区块链节点向所述跨链交互端提供的订阅条件;
所述订阅客户端向所述区块链节点提供所述消息,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
根据本说明书一个或多个实施例的第四方面,提出了一种跨区块链的交互方法,包括:
跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件;
所述跨链交互端获取第二区块链上的第二智能合约产生的满足所述订阅条件的消息;
所述跨链交互端将所述消息提供至所述区块链节点,使所述区块链节点根据所述消息调用所述第一区块链上的第一智能合约。
根据本说明书一个或多个实施例的第五方面,提出了一种跨区块链的交互方法,包括:
发布客户端获取第二区块链上的第二智能合约产生的消息;
所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息提供至所述第一区块链中的区块链节点,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
根据本说明书一个或多个实施例的第六方面,提出了一种跨区块链的交互装置,包括:
确定单元,使第一区块链的区块链节点通过所述第一区块链与第二区块链之间的跨链交互端,确定所述第二区块链上的第二智能合约产生的消息;
调用单元,当所述第二智能合约产生的消息满足所述区块链节点的订阅条件时,使所述区块链节点调用所述第一区块链上的第一智能合约,以触发执行相应的合约操作。
根据本说明书一个或多个实施例的第七方面,提出了一种跨区块链的交互装置,包括:
获取单元,使订阅客户端获取第二区块链上的第二智能合约产生的消息,所述消息由第一区块链与所述第二区块链之间的跨链交互端从所述第二区块链处获得,且所述消息满足所述第一区块链内的区块链节点向所述跨链交互端提供的订阅条件;
提供单元,使所述订阅客户端向所述区块链节点提供所述消息,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
根据本说明书一个或多个实施例的第八方面,提出了一种跨区块链的交互装置,包括:
请求获取单元,使跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件;
消息获取单元,使所述跨链交互端获取第二区块链上的第二智能合约产生的满足所述订阅条件的消息;
提供单元,使所述跨链交互端将所述消息提供至所述区块链节点,使所述区块链节点根据所述消息调用所述第一区块链上的第一智能合约。
根据本说明书一个或多个实施例的第九方面,提出了一种跨区块链的交互装置,包括:
获取单元,使发布客户端获取第二区块链上的第二智能合约产生的消息;
提供单元,使所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息提供至所述第一区块链中的区块链节点,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
根据本说明书一个或多个实施例的第十方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为实现上述实施例中任一所述的方法。
根据本说明书一个或多个实施例的第十一方面,提出了一种跨区块链的交互系统,包括:
第一区块链和第二区块链;
订阅客户端,所述订阅客户端对应于所述第一区块链内的区块链节点,用于维护所述区块链节点对应的消息队列,所述消息队列包含所述区块链节点订阅的消息;
发布客户端,所述发布客户端对应于所述第二区块链,用于获取所述第二区块链上的第二智能合约产生的消息;
跨链交互端,所述跨链交互端获取所述区块链节点的订阅条件,并在所述消息队列未包含满足所述订阅条件的消息时,向所述发布客户端请求满足所述订阅条件的消息并发送至所述订阅客户端,以更新至所述消息队列中;
所述区块链节点调用所述第一区块链上的第一智能合约,以触发相应的合约操作;其中,所述订阅条件与所述合约操作相关,使所述区块链节点在确定所述消息队列中包含满足所述订阅条件的消息时完成所述合约操作。
附图说明
图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,所述订阅客户端向所述区块链节点提供所述消息,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
在一实施例中,所述订阅客户端可以维护所述区块链节点对应的消息队列,所述消息队列包含所述区块链节点订阅的消息;换言之,订阅客户端通过将满足区块链节点提出的订阅条件的消息添加至该消息队列中,以供区块链节点对该消息队列中包含的消息进行消费。
在一实施例中,订阅客户端与区块链节点之间一一对应,使得跨链交互端可以根据订阅客户端映射到相应的区块链节点,确保消息的准确传达。在其他实施例中,同一订阅客户端也可以对应于多个区块链节点,比如该订阅客户端上可以维护与多个区块链节点之间一一对应的多个消息队列,从而通过消息队列映射到相应的区块链节点。
在一实施例中,所述订阅客户端可以向所述跨链交互端提供所述消息队列的队列状态,该队列状态表明了消息队列所包含的消息;相应地,如果队列状态表明消息队列中包含满足所述订阅条件的消息时,所述跨链交互端无需重复获取该消息,而如果所述队列状态表明所述消息队列中未包含满足所述订阅条件的消息时,所述跨链交互端可以从所述第二区块链处获取所述第二智能合约产生的满足所述订阅条件的消息,以更新至该消息队列中。
在一实施例中,所述订阅客户端可以接收所述跨链交互端发起的状态询问请求,以响应于所述状态询问请求而向所述跨链交互端返回所述队列状态。换言之,消息队列及其队列状态均由区块链节点对应的订阅客户端维护,而避免由跨链交互端进行维护,防止有关人员针对跨链交互端实施恶意行为,有助于提升消息传递过程中的可靠性。
在一实施例中,所述订阅客户端可以将所述消息添加至所述消息队列;以及,所述订阅客户端可以在所述第一区块链中触发所述消息的到达事件,以触发所述区块链节点对所述消息队列进行消费,从而当该区块链节点确定消息队列中包含第二智能合约产生的满足订阅条件的消息时,可以触发调用上述的第一智能合约。
在一实施例中,所述订阅客户端可以通过预先锚定的验证根对所述跨链交互端提供的消息进行认证,以在通过认证后提供至所述区块链节点。一种情况下,订阅客户端可以主动认证所述消息是否真实存在于所述第二区块链上,比如在订阅客户端处可以配置有SPV(Simplified Payment Verification,轻简支付验证)客户端,该SPV客户端维护与第二区块链对应的轻简区块链(仅包含各个区块的区块头),验证根可以包括该轻简区块链,从而据此认证所述消息是否真实存在于第二区块链上。另一种情况下,可以由订阅客户端之外的预设的预言机客户端认证所述消息是否真实存在于第二区块链上,而订阅客户端则完全信任该预言机客户端;那么,当预言机客户端确认所述消息真实存在于第二区块链时,可以对该消息添加该预言机客户端自身的签名,而验证根可以包括针对该签名的验证信息,使得订阅客户端可以在验证该签名确实来自预言机客户端时,判定所述预言机客户端已经认证了所述消息真实存在于所述第二区块链上;如果所述消息的签名未通过验证,则认为该消息并不真实存在于第二区块链上,订阅客户端可以丢弃该消息。当然,订阅客户端还可以通过其他方式对所述消息进行认证,本说明书并不对此进行限制。
在一实施例中,第一智能合约在被调用时,可以触发执行相应的合约操作。其中,该合约操作的执行过程可以与上述的消息无关,即该消息仅用于触发该第一智能合约被调用;或者,上述消息可以被应用于该合约操作的执行过程中,比如该消息被作为该合约操作的输入信息,从而参与到该合约操作的执行过程。
图3是一示例性实施例提供的又一种跨区块链的交互方法的流程图。如图3所示,该方法应用于跨链交互端,可以包括以下步骤:
步骤302,跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件。
在一实施例中,所述跨链交互端可以向所述区块链节点对应的订阅客户端发起状态查询请求,所述订阅客户端维护有所述区块链节点对应的消息队列,所述消息队列包含所述区块链节点订阅的消息;然后,所述跨链交互端接收所述订阅客户端返回的所述消息队列的队列状态,以在根据所述队列状态确定所述消息队列中未包含满足所述订阅条件的消息时,获取所述第二区块链上的第二智能合约产生的满足所述订阅条件的消息。当然,如果队列状态表明消息队列中包含满足该订阅条件的消息时,那么跨链交互端无需重复获取该消息。换言之,消息队列及其队列状态均由区块链节点对应的订阅客户端维护,而避免由跨链交互端进行维护,防止有关人员针对跨链交互端实施恶意行为,有助于提升消息传递过程中的可靠性。
步骤304,所述跨链交互端获取第二区块链上的第二智能合约产生的满足所述订阅条件的消息。
在一实施例中,所述跨链交互端可以通过发布客户端桥接至所述第二区块链上的预设存储空间(即发布客户端用于桥接跨链交互端与该预设存储空间),所述预设存储空间用于存储所述第二智能合约产生的消息;然后,所述跨链交互端通过所述发布客户端提供的查询接口,查询所述预设存储空间是否包含满足所述订阅条件的消息;以及,所述跨链交互端可以向所述发布客户端发起消息获取请求,以使所述发布客户端从所述预设存储空间获取满足所述订阅条件的消息并返回至所述跨链交互端。
在一实施例中,通过由发布客户端实现上述的桥接功能,使得跨链交互端仅需要实现与发布客户端的对接即可,而无需关注于发布客户端如何桥接至该预设存储空间、如何获取相关消息等,有助于简化跨链交互端的配置、降低系统的复杂程度。
在一实施例中,所述预设存储空间可以包括以下至少之一:所述第二区块链上的第三智能合约,比如该第三智能合约可以专用于存放第二智能合约产生的消息;所述第二区块链上的预设区块链数据结构,那么发布客户端仅需要了解该预设区块链数据结构,即可通过获取第二区块链上的区块链账本内包含的该预设区块链数据结构,准确桥接至该预设存储空间。当然,预设存储空间还可以包括其他形式,本说明书并不对此进行限制。
步骤306,所述跨链交互端将所述消息提供至所述区块链节点,使所述区块链节点根据所述消息调用所述第一区块链上的第一智能合约。
图4是一示例性实施例提供的再一种跨区块链的交互方法的流程图。如图4所示,该方法应用于发布客户端,可以包括以下步骤:
步骤402,发布客户端获取第二区块链上的第二智能合约产生的消息。
在一实施例中,所述发布客户端与所述第二区块链上的预设存储空间桥接,所述预设存储空间用于存储所述第二智能合约产生的消息;其中,所述发布客户端可以从该预设存储空间获取所述第二智能合约产生的消息。
在一实施例中,所述预设存储空间可以包括以下至少之一:所述第二区块链上的第三智能合约,比如该第三智能合约可以专用于存放第二智能合约产生的消息;所述第二区块链上的预设区块链数据结构,那么发布客户端仅需要了解该预设区块链数据结构,即可通过获取第二区块链上的区块链账本内包含的该预设区块链数据结构,准确桥接至该预设存储空间。当然,预设存储空间还可以包括其他形式,本说明书并不对此进行限制。
在一实施例中,所述发布客户端配置有针对所述预设存储空间的查询接口;所述发布客户端可以向所述跨链交互端开放所述查询接口,以供所述跨链交互端通过所述查询接口对所述预设存储空间进行查询;以及,所述发布客户端根据所述跨链交互端发起的消息获取请求,可以获取所述跨链交互端查询到的消息,并返回至所述跨链交互端;其中,所述跨链交互端查询到的消息匹配于所述区块链节点向所述跨链交互端提供的订阅条件。
步骤404,所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息提供至所述第一区块链中的区块链节点,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
在一实施例中,所述发布客户端可以接收所述跨链交互端发起的消息获取请求,所述消息获取请求匹配于所述区块链节点向所述跨链交互端提供的订阅条件;然后,所述发布客户端可以将所述第二智能合约产生且匹配于所述消息获取请求的消息发送至所述跨链交互端,以由所述跨链交互端提供至所述区块链节点。
在一实施例中,所述发布客户端可以根据对获取的消息进行认证的结果,对通过认证的消息进行签名;以及,所述发布客户端可以通过所述跨链交互端将所述消息发送至所述区块链节点对应的订阅客户端,使所述订阅客户端对所述签名进行验证通过后,将所述消息添加至所述区块链节点对应的消息队列;其中,所述区块链节点在确定所述消息队列中包含满足所述订阅条件的消息时,调用所述第一智能合约。其中,发布客户端上可以配置有预言机功能(即该发布客户端可以实现为预言机客户端),使得发布客户端可以对获取的消息进行认证,以确定该消息是否真实存在于第二区块链上;而该发布客户端在确认上述消息真实存在于第二区块链时,可以对该消息进行签名,从而在订阅客户端对该签名进行验证通过后,使得订阅客户端可以直接认定该消息已经被发布客户端认证为真实存在于第二区块链上,而无需订阅客户端主动实施认证操作。
图5是一示例性实施例提供的一种跨区块链的交互系统的架构示意图。如图5所示,跨区块链的交互系统可以包括:
第一区块链和第二区块链,第一区块链为本说明书中作为消息订阅方的区块链、第二区块链为本说明书中作为消息发布方的区块链;换言之,“第一区块链”、“第二区块链”只是用于区分不同区块链所扮演的角色,而并不固定某一区块链为“第一区块链”或“第二区块链”。
订阅客户端,该订阅客户端对应于第一区块链内的区块链节点,用于维护该区块链节点对应的消息队列,该消息队列包含该区块链节点订阅的消息。在一实施例中,订阅客户端可以配置在独立于第一区块链之外的设备、节点或平台等处;在另一实施例中,订阅客户端可以配置在第一区块链内的该区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的订阅功能。
发布客户端,该发布客户端对应于第二区块链,用于获取第二区块链上的第二智能合约产生的消息。基于区块链的分布式记账特性,第二区块链上的所有区块链节点之间可以通过共识维护相同内容的全量记账数据,即区块链账本,而发布客户端可以从该区块链账本上获取允许发布的消息,以供跨链交互端获取。在一实施例中,发布客户端可以配置在独立于第二区块链之外的设备、节点或平台等处;在另一实施例中,发布客户端可以配置在第二区块链内的区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的发布功能。
跨链交互端,该跨链交互端可以接收第一区块链中的区块链节点发起的订阅请求,该订阅请求中包含订阅条件,以表明该区块链节点的订阅需求。跨链交互端可以向订阅客户端发起状态询问消息,并根据订阅客户端返回的上述消息队列的队列状态,确定消息队列中是否包含满足该订阅条件的消息;如果包含,跨链交互端无需重复获取该消息,如果未包含,跨链交互端需要从上述的发布客户端处获取满足该订阅条件的消息;其中,跨链交互端可以向发布客户端请求满足上述订阅条件的消息,并将发布客户端返回的消息发送至订阅客户端,以更新至上述的消息队列中,供第一区块链中的区块链节点进行消费。其中,跨链交互端仅在发布客户端与订阅客户端之间传递消息,不需要对消息进行持久化。在一实施例中,跨链交互端可以配置在独立于第一区块链和第二区块链之外的设备、节点或平台等处;在另一实施例中,跨链交互端可以配置在第一区块链内的区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的跨链交互功能;在另一实施例中,跨链交互端可以配置在第二区块链内的区块链节点上,相当于该区块链节点在相关技术的基础上扩展出的跨链交互功能。
一种情况下,第二智能合约产生的消息可以为异步消息。第一区块链中的区块链节点可以向跨链交互端提供订阅条件,以使该跨链交互端获取该异步消息。跨链交互端通过发布客户端获得该异步消息后,可以将该异步消息发送至订阅客户端,使得订阅客户端将该异步消息添加至消息队列中。以及,订阅客户端可以在第一区块链中触发消息到达事件,使得第一区块链中的区块链节点可以被触发,从而在确定消息队列中包含该异步消息的情况下,触发调用第一智能合约。
另一种情况下,第二智能合约产生的消息可以为同步消息。第一区块链中的区块链节点可以调用第一智能合约,以触发执行相应的合约操作;在该合约操作的执行过程中,需要将上述的同步消息作为输入信息。因此,该区块链节点可以向跨链交互端提供订阅条件,以使该跨链交互端获取该同步消息。跨链交互端通过发布客户端获得该同步消息后,可以将该同步消息发送至订阅客户端,使得订阅客户端将该同步消息添加至消息队列中。以及,订阅客户端可以在第一区块链中触发消息到达事件,从而进一步触发上述的合约操作继续执行;在监测到消息到达事件之前,该合约操作可以保持等待。
基于图5所示实施例中的订阅客户端、发布客户端、跨链交互端等,并使得第一区块链内的区块链节点对应的消息队列被维护于该区块链节点对应的订阅客户端上,使得该区块链节点对于该消息队列中消息的消费情况被维护于该区块链节点处,而跨链交互端、发布客户端等均不需要维护该消费情况,从而避免跨链交互端、发布客户端等向订阅客户端提供错误或无效消息。
跨链交互端向订阅客户端提供的消息来源于发布客户端,而发布客户端所提供的消息来源于第二区块链,并且发布客户端并不维护消息队列的队列状态,使得发布客户端无法篡改消息内容,而跨链交互端对消息内容的篡改无意义,因为订阅客户端可以根据第二区块链上维护的区块链账本进行内容验证,从而确保消息内容的可靠性。例如,订阅客户端通过主动对收到的消息进行认证,譬如通过该订阅客户端上维护的第二区块链对应的SPV区块链,确定该消息是否确实存在于第二区块链上;再例如,订阅客户端可以通过验证该消息的签名是否来自于预设的预言机客户端,并在验证通过后确定该消息确实存在于第二区块链上。
在一些情况下,跨链交互端可能发起拒绝服务攻击,使得订阅客户端无法获得发布客户端所发布的消息;为此,如图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可以对收到的消息进行认证,以确保该消息真实来源于区块链2上,内容可靠、未经篡改。订阅客户端1或者区块链节点1可以采用各种形式的认证方式,本说明书并不对此进行限制;例如,订阅客户端1或者区块链节点1可以查验该消息在区块链2上所处的区块是否位于最长链上,以及该区块之后存在的区块数量,如果该消息所处的区块位于最长链上且该区块之后的区块数量不小于6,可以确定该消息通过认证;再例如,订阅客户端1或者区块链节点1可以基于PBFT算法或预言机的方式对该消息进行认证;又例如,订阅客户端1或者区块链节点1可以通过配置的对应于区块链2的SPV区块链对该消息进行认证。
实际上,由于区块链的分布式记账技术,使得跨链交互端、发布客户端或区块链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具体用于:
使所述区块链节点向所述跨链交互端发起订阅请求,所述订阅请求用于向所述跨链交互端指示所述订阅条件,使所述跨链交互端获取所述第二智能合约产生的满足所述订阅条件的消息,以添加至所述区块链节点对应的订阅客户端维护的消息队列中;
使所述区块链节点在所述消息队列中包含满足所述订阅条件的消息时,确定所述第二智能合约产生了满足所述订阅条件的消息。
在另一实施例中,请参考图11,在软件实施方式中,该跨区块链的交互装置可以包括:
获取单元1101,使订阅客户端获取第二区块链上的第二智能合约产生的消息,所述消息由第一区块链与所述第二区块链之间的跨链交互端从所述第二区块链处获得,且所述消息满足所述第一区块链内的区块链节点向所述跨链交互端提供的订阅条件;
提供单元1102,使所述订阅客户端向所述区块链节点提供所述消息,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
可选的,还包括:维护单元1103,使所述订阅客户端维护所述区块链节点对应的消息队列,所述消息队列包含所述区块链节点订阅的消息;
所述获取单元1101具体用于:使所述订阅客户端向所述跨链交互端提供所述消息队列的队列状态,使所述跨链交互端在根据所述队列状态确定所述消息队列中未包含满足所述订阅条件的消息时,从所述第二区块链处获取所述第二智能合约产生的满足所述订阅条件的消息。
可选的,还包括:
接收单元1104,使所述订阅客户端接收所述跨链交互端发起的状态询问请求,以响应于所述状态询问请求而向所述跨链交互端返回所述队列状态。
可选的,所述提供单元1102具体用于:
使所述订阅客户端将所述消息添加至所述消息队列;
使所述订阅客户端在所述第一区块链中触发所述消息的到达事件,以触发所述区块链节点对所述消息队列进行消费。
可选的,还包括:
认证单元1105,使所述订阅客户端通过预先锚定的验证根对所述跨链交互端提供的消息进行认证,以在确定所述跨链交互端提供的消息来自所述第二区块链时提供至所述区块链节点。
可选的,所述认证单元1105具体用于:
使所述订阅客户端确定所述消息是否包含预言机客户端的签名;当所述签名通过所述订阅客户端的验证后,使所述订阅客户端判定所述预言机客户端已经认证了所述消息真实存在于所述第二区块链上;
或者,使所述订阅客户端主动认证所述消息是否真实存在于所述第二区块链上。
在又一实施例中,请参考图12,在软件实施方式中,该跨区块链的交互装置可以包括:
请求获取单元1201,使跨链交互端获取第一区块链内的区块链节点发起的订阅请求,所述订阅请求中包含订阅条件;
消息获取单元1202,使所述跨链交互端获取第二区块链上的第二智能合约产生的满足所述订阅条件的消息;
提供单元1203,使所述跨链交互端将所述消息提供至所述区块链节点,使所述区块链节点根据所述消息调用所述第一区块链上的第一智能合约。
可选的,还包括:
请求发起单元1204,使所述跨链交互端向所述区块链节点对应的订阅客户端发起状态查询请求,其中所述订阅客户端维护有所述区块链节点对应的消息队列,所述消息队列包含所述区块链节点订阅的消息;
状态接收单元1205,使所述跨链交互端接收所述订阅客户端返回的所述消息队列的队列状态,以在根据所述队列状态确定所述消息队列中未包含满足所述订阅条件的消息时,获取所述第二区块链上的第二智能合约产生的满足所述订阅条件的消息。
可选的,所述消息获取单元1202具体用于:
使所述跨链交互端通过发布客户端桥接至所述第二区块链上的预设存储空间,所述预设存储空间用于存储所述第二智能合约产生的消息;
使所述跨链交互端通过所述发布客户端提供的查询接口,查询所述预设存储空间是否包含满足所述订阅条件的消息;
使所述跨链交互端向所述发布客户端发起消息获取请求,以使所述发布客户端从所述预设存储空间获取满足所述订阅条件的消息并返回至所述跨链交互端。
在再一实施例中,请参考图13,在软件实施方式中,该跨区块链的交互装置可以包括:
获取单元1301,使发布客户端获取第二区块链上的第二智能合约产生的消息;
提供单元1302,使所述发布客户端通过第一区块链与所述第二区块链之间的跨链交互端,将所述消息提供至所述第一区块链中的区块链节点,以触发所述区块链节点调用所述第一区块链上的第一智能合约。
可选的,所述提供单元1302具体用于:
使所述发布客户端接收所述跨链交互端发起的消息获取请求,所述消息获取请求匹配于所述区块链节点向所述跨链交互端提供的订阅条件;
使所述发布客户端将所述第二智能合约产生且匹配于所述消息获取请求的消息发送至所述跨链交互端,以由所述跨链交互端提供至所述区块链节点。
可选的,所述发布客户端与所述第二区块链上的预设存储空间桥接,所述预设存储空间用于存储所述第二智能合约产生的消息;所述获取单元1301具体用于:
使所述发布客户端从所述预设存储空间获取所述第二智能合约产生的消息。
可选的,所述发布客户端配置有针对所述预设存储空间的查询接口;所述装置还包括:
接口管理单元1303,使所述发布客户端向所述跨链交互端开放所述查询接口,以供所述跨链交互端通过所述查询接口对所述预设存储空间进行查询;
消息返回单元1304,使所述发布客户端根据所述跨链交互端发起的消息获取请求,获取所述跨链交互端查询到的消息,并返回至所述跨链交互端;其中,所述跨链交互端查询到的消息匹配于所述区块链节点向所述跨链交互端提供的订阅条件。
可选的,所述预设存储空间包括以下至少之一:
所述第二区块链上的第三智能合约、所述第二区块链上的预设区块链数据结构。
可选的,还包括:签名单元1305,使所述发布客户端根据对获取的消息进行认证的结果,对通过认证的消息进行签名;
所述提供单元1302具体用于:使所述发布客户端通过所述跨链交互端将所述消息发送至所述区块链节点对应的订阅客户端,以使所述订阅客户端对所述签名进行验证通过后,将所述消息添加至所述区块链节点对应的消息队列;其中,所述区块链节点在确定所述消息队列中包含满足所述订阅条件的消息时,调用所述第一智能合约。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。