欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 跨区块链的认证方法及装置、电子设备独创技术43858字

跨区块链的认证方法及装置、电子设备

2020-11-22 05:46:56

跨区块链的认证方法及装置、电子设备

  技术领域

  本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种跨区块链的认证方法及装置、电子设备。

  背景技术

  区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,利用区块链技术来搭建去中心化系统,并在区块链的分布式数据库中收录各种执行程序进行自动执行,已在众多的领域中广泛的进行应用。

  发明内容

  本说明书提出一种跨区块链的认证方法,应用于由订阅客户端、发布客户端、以及跨链客户端组成的跨链交互系统;其中,所述订阅客户端与第一区块链对应;所述发布客户端与第二区块链对应;所述跨链客户端与所述订阅客户端和所述发布客户端分别对接;所述方法包括:

  所述订阅客户端通过所述跨链客户端获取由所述发布客户端发布的所述第二区块链上的数据作为认证数据源;

  接收到来自所述第二区块链上的待认证数据;

  基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行数据认证。

  可选的,所述订阅客户端通过所述跨链客户端获取由所述发布客户端发布的所述第二区块链上的数据作为认证数据源,包括:

  所述订阅客户端向所述跨链交互端发起订阅请求;其中,所述订阅请求用于向所述跨链交互端指示订阅条件,以使所述跨链交互端基于所述订阅条件,向所述发布客户端请求所述第二区块链上满足所述订阅条件的数据;

  所述订阅客户端获取所述发布客户端发布的所述第二区块链上满足所述订阅条件的数据作为认证数据源。

  可选的,所述认证数据源包括所述第二区块链中各区块的区块头数据。

  可选的,所述基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行数据认证,包括:

  基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行SPV数据认证,以确定所述待认证数据是否包含在所述第二区块链的区块中。

  可选的,所述基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行SPV数据认证,包括:

  计算所述待认证数据的hash值;

  获取所述待认证数据在所述第二区块链上包含所述待认证数据的目标区块的Merkle树中的Merkle认证路径;

  基于所述待认证数据的hash值以及所述Merkle认证路径上各节点的hash值,计算所述目标区块的区块头的hash值;

  确定计算出的所述目标区块的区块头的hash值与所述认证数据源中保存的所述目标区块的区块头的hash值是否匹配;如果匹配,确定所述待认证数据包含在所述第二区块链的区块中。

  可选的,所述订阅客户端对应于所述第一区块链上的节点设备;所述发布客户端对应于所述第二区块链上的节点设备。

  本说明书还提出一种跨区块链的认证方法,应用于由订阅客户端、发布客户端、以及跨链客户端组成的跨链交互系统;其中,所述订阅客户端与第一区块链对应;所述发布客户端与第二区块链对应;所述跨链客户端与所述订阅客户端和所述发布客户端分别对接;所述装置包括:

  获取模块,通过所述跨链客户端获取由所述发布客户端发布的所述第二区块链上的数据作为认证数据源;

  接收模块,接收到来自所述第二区块链上的待认证数据;

  认证模块,基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行数据认证。

  可选的,所述获取模块:

  向所述跨链交互端发起订阅请求;其中,所述订阅请求用于向所述跨链交互端指示订阅条件,以使所述跨链交互端基于所述订阅条件,向所述发布客户端请求所述第二区块链上满足所述订阅条件的数据;

  获取所述发布客户端发布的所述第二区块链上满足所述订阅条件的数据作为认证数据源。

  可选的,所述认证数据源包括所述第二区块链中各区块的区块头数据。

  可选的,所述认证模块:

  基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行SPV数据认证,以确定所述待认证数据是否包含在所述第二区块链的区块中。

  可选的,所述认证模块进一步:

  计算所述待认证数据的hash值;

  获取所述待认证数据在所述第二区块链上包含所述待认证数据的目标区块的Merkle树中的Merkle认证路径;

  基于所述待认证数据的hash值以及所述Merkle认证路径上各节点的hash值,计算所述目标区块的区块头的hash值;

  确定计算出的所述目标区块的区块头的hash值与所述认证数据源中保存的所述目标区块的区块头的hash值是否匹配;如果匹配,确定所述待认证数据包含在所述第二区块链的区块中。

  可选的,所述订阅客户端对应于所述第一区块链上的节点设备;所述发布客户端对应于所述第二区块链上的节点设备。

  本说明书还提出一种电子设备,包括:

  处理器;

  用于存储机器可执行指令的存储器;

  其中,通过读取并执行所述存储器存储的与基于区块链的跨区块链的认证的控制逻辑对应的机器可执行指令,所述处理器被促使:

  通过所述跨链客户端获取由所述发布客户端发布的所述第二区块链上的数据作为认证数据源;

  接收到来自所述第二区块链上的待认证数据;

  基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行数据认证。

  通过以上实施例,订阅客户端通过与第一区块链和第二区块链分别对接的跨链客户端,来获取由发布客户端发布的第二区块链上的数据作为认证数据源,进而在接收到来自第二区块链上的待认证数据时,可以基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对待认证数据进行数据认证;由于第一区块链和第二区块链之间可以采用订阅和发布的方式,通过跨链客户端来进行数据同步,并将同步的数据作为认证数据源,来认证来对端区块链上的数据,因此对于不同的区块链之间,可以在互相隔离的前提下,具备验证对端区块链上的数据的能力,实现无入侵的侧链锚定,进而可以高效的与其它区块链进行锚定,搭建出低复杂度、高扩展性的跨链网络。

  附图说明

  图1是一示例性实施例提供的一种跨区块链的交互系统的架构示意图。

  图2是一示例性实施例提供的另一种跨区块链的交互系统的架构示意图。

  图3是一示例性实施例提供的一种跨区块链的认证方法的流程图。

  图4是一示例性实施例提供的一种对待认证交易进行SPV认证的流程图。

  图5是一示例性实施例提供的一种跨区块链的关联转账系统的结构示意图

  图6是一示例性实施例提供的一种电子设备的结构示意图。

  图7是一示例性实施例提供的一种跨区块链的认证装置的框图。

  具体实施方式

  侧链技术,是指在一个区块链的基础上,将该区块链作为主链进一步扩展出一个侧链,并实现侧链与主链之间的侧链锚定的技术。

  其中,所谓侧链,是具备认证来自主链上的数据的能力的区块链;例如,在侧链上可以验证一笔交易、区块或者其它形式的区块链数据是否包含在主链的区块中。如果一个区块链具备认证另一个区块链上的数据的能力,那么该区块链就称之该另一个区块链的侧链。相应的,所谓侧链锚定,则是指在侧链上设置认证根(通常包括认证数据源和认证规则),使得该侧链具备认证来自主链上的数据的能力的过程。

  本说明书则旨在提出一种基于订阅和发布模型的侧链锚定框架,使得不同的区块链可以在互相隔离的前提下实现无入侵的侧链锚定。

  在实现时,可以搭建一个由订阅客户端、发布客户端以及跨链客户端组成的跨链交互系统;其中,订阅客户端与第一区块链对应;发布客户端与第二区块链对应;跨链客户端可以与订阅客户端和发布客户端分别对接。

  订阅客户端可以向跨链客户端订阅第二区块链上的数据,并通过该跨链客户端获取由发布客户端发布的第二区块链上的数据作为认证源数据。进而当订阅客户端收到来自第二区块链上的待认证数据时,可以基于上述认证源数据以及第一区块链上配置的数据认证规则,对该待认证数据进行数据认证。

  在以上技术方案中,由于第一区块链和第二区块链之间可以采用订阅和发布的方式,通过跨链客户端来进行数据同步,并将同步的数据作为认证数据源,来认证来对端区块链上的数据,因此对于不同的区块链之间,可以在互相隔离的前提下,具备验证对端区块链上的数据的能力,实现无入侵的侧链锚定,进而可以高效的与其它区块链进行锚定,搭建出低复杂度、高扩展性的跨链网络。

  下面通过具体实施例并结合具体的应用场景对本说明书进行描述。

  请参见图1,图1是一示例性实施例提供的一种跨区块链的交互系统的架构示意图。

  如图1所示,上述跨区块链的交互系统可以是一个基于发布和订阅模型搭建的侧链锚定框架,具体可以包括:

  第一区块链和第二区块链,第一区块链为本说明书中与订阅客户端对应的锚定链(即可以作为侧链);相应的,第二区块链为本说明书中与发布客户端对应的被锚定链(即可以作为主链)。

  其中,需要说明的是,在本说明书中,“第一区块链”、“第二区块链”只是用于区分不同区块链所扮演的角色;第一区块链泛指可以作为侧链的一类区块链,而第二区块链泛指可以作为主链的一类区块链,并不特指某一区块链为“第一区块链”或“第二区块链”。

  订阅客户端,该订阅客户端对应于第一区块链,用于维护第一区块链订阅的来自第二区块链的数据。

  如图1所示,在一实施例中,该订阅客户端具体可以对应于第一区块链的节点设备,用于维护该区块链节点对应的消息队列,该消息队列包含该区块链节点所订阅的数据。

  例如,该订阅客户端可以是依托于第一区块链,在第一区块链上使用智能合约实现的客户端组件;或者,也可以基于该订阅客户端对接的节点设备的原生扩展能力实现的客户端组件。

  在另一实施例中,上述订阅客户端,也可以配置在独立与第一区块链之外的设备、节点或者平台等处,通过实现的桥接接口与第一区块链进行桥接。

  发布客户端,该发布客户端对应于第二区块链,用于获取并发布第二区块链上共识完成的数据。

  例如,在实现时,发布客户端可以实现桥接接口,提供面向第二区块链的数据查询服务,与第二区块链进行桥接。基于区块链的分布式记账特性,第二区块链上的所有区块链节点之间可以通过共识维护相同内容的全量记账数据,即区块链账本,而发布客户端可以从该区块链账本上获取允许发布的消息,以供跨链交互端获取。

  在一实施例中,该发布客户端具体可以对应于第二区块链上的节点设备。在另一实施例中,发布客户端也可以配置在独立于第二区块链之外的设备、节点或平台等处;在另一实施例中,发布客户端可以配置在第二区块链内的区块链节点上。

  跨链交互端,通过桥接接口与第一区块链和第二区块链分别进行对接,并基于实现的数据搬运逻辑,实现第一区块链和第二区块链之间的跨链数据同步。在一实施例中,该跨链交互端可以接收订阅客户端发起的订阅请求,该订阅请求中包含订阅条件,该订阅条件用于向跨链交互端指示相关的订阅需求。跨链交互端可以向订阅客户端发起状态询问消息,来询问订阅客户端维护的数据状态,并根据订阅客户端返回的数据状态,来确定订阅客户端维护的数据中是否包含满足上述订阅条件的数据;

  例如,在实现时,该订阅客户端具体可以对应于第一区块链的节点设备,并通过维护该区块链节点对应的消息队列,来维护该区块链节点所订阅的数据。在这种情况下,跨链交互端可以向订阅客户端发起状态询问消息,来询问上述消息队列的队列状态,并根据订阅客户端返回的上述消息队列的队列状态,来确定该消息队列中是否包含满足该订阅条件的消息。

  一方面,如果订阅客户端维护的数据中包含满足上述订阅条件的数据,跨链交互端无需重复获取该数据;另一方面,如果订阅客户端维护的数据中不包含满足上述订阅条件的数据,则跨链交互端需要从上述的发布客户端处获取满足该订阅条件的数据;例如,跨链交互端可以向发布客户端请求满足上述订阅条件的数据,并将发布客户端返回的数据发送至订阅客户端,以对订阅客户端维护的数据进行更新。

  其中,在本说明书中,跨链交互端仅用于在发布客户端与订阅客户端之间搬运数据,并不需要对搬运的数据进行持久化存储,也不需要维护所搬运的数据的数据状态。在一实施例中,跨链交互端可以配置在独立于第一区块链和第二区块链之外的设备、节点或平台等处;在另一实施例中,跨链交互端也可以配置在第一区块链,或者第二区块链的节点设备上。

  请继续参见图2,在实际应用中,在订阅客户端与发布客户端之间可以配置多个相互独立的跨链交互端,即订阅客户端以及发布客户端,可以分别与多个独立的跨链交互端对接;比如,如图2中示出的,跨链交互端1与跨链交互端2等。

  通过这种方式,可以在跨链交互端遭受诸如拒绝服务攻击的情况下,可以将遭受跨链攻击的跨链交互端所承载的服务,快速的切换至另一跨链交互端;比如,如图2所示,如果跨链交互端1遭受拒绝服务攻击时,可以将跨链交互端1所承载的服务,立即切换至跨链交互端2,使得订阅客户端仍然可以通过跨链交互端2获得发布客户端发布的消息。

  在以上实施例中,通过在基于发布和订阅模型搭建的跨链交互系统中,引入与发布客户端与订阅客户端分别进行桥接的跨链交互端,采用发布和订阅的信息交互模式,来完成第一区块链和第二区块链之间的数据同步,一方面,可以实现第一区块链与第二区块链之间的数据隔离,使得第一区块链和第二区块链之间不再需要直接进行数据交互,来完成数据的同步;另一方面,由于通过在发布客户端与订阅客户端之间引入跨链交互端,可以实现发布客户端与订阅客户端在业务层面的解耦,因此可以显著降低发布客户端和订阅客户端的开发难度;例如,并不需要依托于第一区块链,来实现与发布客户端相关的业务逻辑;也并不需要依托于第二区块链,来实现与订阅客户端相关的业务逻辑,仅需要在第一区块链和第二区块链上分别实现订阅客户端和发布客户端的相关业务逻辑即可。

  请参考图3,图3是本说明书一实施例提供的一种跨区块链的认证方法,应用于如图1所示出的跨链交互系统中的订阅客户端,执行以下步骤:

  步骤302,所述订阅客户端通过所述跨链客户端获取由所述发布客户端发布的所述第二区块链上的数据作为认证数据源;

  步骤304,接收到来自所述第二区块链上的待认证数据;

  步骤306,基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行数据认证。

  在本实施例描述的区块链,具体可以包括可以作为侧链与其它区块链网络进行锚定的任意类型的区块链网络。

  例如,在一个场景中,上述区块链具体可以是一个由若干成员区块链组成的联盟链中的任一成员区块链。在该联盟链中,各个成员区块链均可以作为侧链,与其它的成员区块链进行锚定。

  上述待认证的数据,具体可以包括收录在第一区块链的各区块中的,任意形式的数据;例如,上述待认证数据,可以包括但不限定于交易(transfer)、状态、事件,等等。

  在本说明书中,可以通过在上述订阅客户端中,设置对应于第二区块链的认证根,使得订阅客户端可以具备第二区块链上的数据的认证能力,将第一区块链作为侧链,与第一区块链进行锚定。

  其中,在订阅客户端中设置的认证根,通常包括认证数据源和认证规则两部分内容。

  上述认证数据源,可以包含第一区块链中存储的所有区块的完整数据,或者所有区块中的部分数据。

  其中,需要说明的是,上述认证数据源所包含的具体内容,通常取决于第一区块链和第二区块链所支持的数据认证协议;

  例如,以上述第一区块链和第二区块链支持SPV(Simpl ified PaymentVerificat ion,轻简支付验证)认证协议为例,在这种场景下,在订阅客户端中设置的认证数据源,可以仅包含第二区块链中存储的所有区块的区块头数据。

  又如,以上述第一区块链和第二区块链支持Oracle(预言机)协议为例,在这种场景下,在订阅客户端中设置的认证数据源,可以包含第二区块链中所选定的信任节点(也称之为权威节点)对第二区块链中的数据进行签名时所使用的私钥对应的公钥或者公钥集合。

  上述认证规则,包括对第二区块链中的数据进行认证的认证逻辑;其中,需要说明的是,一方面,上述认证规则中所包含的认证逻辑的种类,通常取决于收录在第二区块链中的数据的具体类型;

  例如,在实际应用中,第二区块链中的数据可以包括但不限定于交易、状态、事件,等等。相应的,上述认证规则具体可以包括但不限于交易认证逻辑、区块认证逻辑、状态认证逻辑、事件认证逻辑,等等。另一方面,上述认证规则中所包含的认证逻辑的具体内容,通常取决于第一区块链和第二区块链所支持的数据认证协议;

  例如,以上述第一区块链和第二区块链支持SPV协议为例,在这种场景下,在订阅客户端中设置的认证规则所包含的认证逻辑,具体可以是认证订阅客户端收到的来自第二区块链中的待认证数据,是否包含在上述第二区块链的区块中的认证逻辑;如果确认上述待认证数据包含在上述第二区块链的区块中,此时针对该待认证数据的认证通过。

  又如,以上述第一区块链和第二区块链支持Oracle协议为例,在这种场景下,在订阅客户端中设置的认证规则所包含的认证逻辑,具体可以是基于设置的第二区块链中所选定的信任节点对第二区块链中的数据进行签名时所使用的私钥对应的公钥或者公钥集合,对订阅客户端收到的来自第二区块链中的待认证数据携带的签名进行验证的认证逻辑;如果经过验证确认上述待认证数据携带的签名为上述信任节点的合法签名,此时针对该待认证数据的认证通过。

  以下以上述第一区块链和第二区块链均支持SPV协议,以及上述待认证数据为收录在上述第二区块链的区块中的交易为例,对订阅客户端对第二区块链上的数据进行认证的过程进行详细描述。

  在本实施例中,在将第一区块链作为侧链锚定到作为主链的第二区块链时,可以在订阅客户端上配置对应于第二区块链的认证根。

  一方面,可以在上述订阅客户端上配置用于对第二区块链中的交易进行认证的认证规则。对于SPV协议而言,上述认证规则具体可以包括认证待认证交易是否包含在第二区块链中的区块中的认证逻辑。

  另一方面,上述订阅客户端可以通过上述跨链交互端与上述发布客户端进行跨链交互,获取由上述发布客户端发布的上述第二区块链中各区块的区块头数据作为认证数据源。

  在实现时,订阅客户端可以向跨链交互端发起订阅请求;其中,在该订阅请求中,可以携带指示订阅需求的订阅条件。对于SPV协议而言,上述认证数据源具体可以是上述第二区块链中各区块的区块头数据,即由第二区块链中各区块的区块头组成的“轻简链”。相应的,上述订阅请求中所携带的订阅条件所指示的订阅需求,则具体可以是获取第二区块链中各区块的区块头数据的需求。

  当跨链交互端获取到上述订阅请求后,可以解析该订阅请求,获取该订阅请求中携带的订阅条件所指示的订阅需求。

  当跨链交互端获取到订阅客户端的订阅需求后,可以向订阅客户端发起状态询问消息,来询问订阅客户端维护的数据状态,并根据订阅客户端返回的数据状态,来确定订阅客户端维护的数据中是否包含由上述第二区块链中各区块的区块头组成的轻简链。

  例如,当订阅客户端通过消息队列来维护订阅的数据时,跨链交互端可以向订阅客户端发起状态询问消息,来询问上述消息队列的队列状态,并根据订阅客户端返回的上述消息队列的队列状态,来确定订阅客户端维护的数据中是否包含由上述第二区块链中各区块的区块头组成的轻简链。

  一方面,如果订阅客户端维护的数据中已经维护了由第二区块链中各区块的区块头组成的轻简链时,跨链交互端无需重复获取第二区块链中各区块的区块头数据;

  另一方面,如果订阅客户端维护的数据中并不包含由第二区块链中各区块的区块头组成的轻简链时,则跨链交互端需要从上述的发布客户端处获取上述第二区块链中各区块的区块头数据;例如,跨链交互端可以向发布客户端发送数据同步请求,向发布客户端请求第二区块链中的各区块的区块头数据,并将发布客户端返回的数据发送至订阅客户端,以对订阅客户端维护的数据进行更新。

  当然,在实际应用中,如果跨链交互端通过以上示出的状态询问过程,确定第二区块链中新增了区块,此时也可以通过以上示出的数据同步方式,将第二区块链中新增的区块的区块头数据,发送至订阅客户端,对订阅客户端维护的数据进行及时的更新。

  在本实施例中,当订阅客户端收到第二区块链中各区块的区块头数据后,还可以针对收到的区块头数据进行认证,以确定收到的区块头数据是否合法;其中,对收到的区块头数据进行认证所采用的认证规则,也可以预先配置在订阅客户端上,而对区块头数据进行合法认证的认证规则所对应的认证逻辑,在本说明书中不进行特别限定;

  例如,在一种实现方式中,以上述第一区块链和第二区块链采用工作量证明的共识机制为例,在区块头中通常会记录与工作量证明的“挖矿”难度对应的随机数(Nonce),而在这种情况下,订阅客户端可以基于该随机数来进行工作量证明计算,然后基于计算结果来验证区块头数据的合法性。

  又如,在另一种实现方式中,在上述第二区块链选定若干信任节点,而信任节点可以对发布客户端发布的区块头数据进行签名,而订阅客户端可以采用上述信任节点的公钥对签名进行认证,来确定收到的区块头数据是否合法。

  当订阅客户端完成对收到的区块头数据的合法性认证后,可以将收到的数据作为认证数据源在本地进行存储配置,后续当订阅客户端收到来自第二区块链的待认证交易后,可以基于配置的认证规则,以及上述认证数据源对该待认证交易进行SPV数据认证,以确定该待认证交易是否包含在第二区块链中的区块中。

  其中,在实际应用中,上述订阅客户端收到的来自第二区块链的待认证交易,具体可以是订阅客户端通过跨链交互端与发布客户端进行跨链交互,收到的由发布客户端主动发布的交易,也可以是由交易认证的发起用户手动提交的交易,在本说明书中不进行特别限定。

  请参见图4,图4为本说明书一实施例提供的对待认证交易进行SPV认证的流程图,包括以下执行步骤:

  步骤402,计算所述待认证交易的hash值;

  需要说明的是,对待认证交易进行SPV认证,即为验证基于该待认证交易的hash值,以及该待认证交易在第二区块链上包含该待认证交易的目标区块的Merkle树中的Merkle认证路径中各节点的hash值反向计算出的该目标区块的hash值取值是否相同的过程。

  因此,在对上述待认证交易进行SPV认证时,首先需要计算该待认证交易的hash值。其中,计算该待认证交易的hash值的具体过程在本实施例中不再进行详述。

  步骤404,获取所述待认证数据在所述第二区块链上包含所述待认证数据的目标区块的Merkle树中的Merkle认证路径;

  区块链中的区块,通常由区块头和区块体(包含交易)两部分组成。区块中收录的交易,通常会以交易的hash值的形式,组织成Merkle树。在Merkle树中,区块中收录的各交易的hash值,作为叶子节点。Merkle树的根节点为针对各个相邻的交易的hash值进行两两拼接后,再次进行hash计算得到上一级的中间节点的hash值,然后再对所有中间节点中各个相邻节点的hash进行两两拼接后,继续进行hash计算,得到再上一级的中间节点的hash值,依次类推,在进行逐级的多次的计算后,最终计算出根节点的hash值,该hash值可以作为区块头的hash值。除了根节点和叶子节点,还包括与中间计算过程计算出的hash值对应的若干中间节点。

  其中,将区块中收录的交易的hash值组织成Merkle树的具体过程,在本说明书中不进行特别限定,本领域技术人员在将本说明书的技术方案付诸实现时,可以参考相关技术中的记载。

  区块链中各区块中的Merkle树的根节点,即区块头的hash值,通常收录在区块头中。Merkle树中除了根节点以外的中间节点以及叶子节点,则收录在区块体中。

  而上述Merkle认证路径,则具体是指一笔交易的hash值,在上述Merkle树中进行逐级遍历查找经过的路径上的节点所对应的兄弟节点(即相邻节点)所组成的路径。在针对一笔交易进行SPV认证的过程中,该交易的Merkle认证路径可以作为反向计算该交易所在的Merkle树的根节点对应的hash值的计算参数。

  其中,需要说明的是,上述Merkle认证路径,具体可以由交易认证的发起用户手动提交,也可以是由上述订阅客户端通过跨链交互端与上述发布客户端进行跨链交互而主动查询获取;

  在一种方式中,用户在第一区块链上的订阅客户端上,请求认证一笔来自第二区块链的交易时,可以将该交易在第二区块链上包含该交易的目标区块的Merkle树中的Merkle认证路径作为认证参数,一并提交至订阅客户端。

  在另一种方式中,上述订阅客户端通过跨链交互端与上述发布客户端进行跨链交互来主动查询获取上述待认证交易对应的Merkle认证路径时,发布客户端首先可以基于待认证交易的hash值定位该交易在第二区块链中所在的区块;

  其中,基于交易hash值定位交易所在的区块的过程,在本说明书中不再进行详述;比如,在相关技术中,可以通过部署布隆过滤器,来定位交易的hash值所在的区块。当定位出待认证交易所在的区块后,可以进一步从定位出的该区块的Merkle树中,查找出该待认证交易的hash值的Merkle认证路径,然后将该Merkle认证路径发送给订阅客户端。

  步骤406,基于所述待认证交易的hash值以及所述Merkle认证路径上各节点的hash值,计算所述目标区块的区块头的hash值;

  当订阅客户端在获得待认证交易的Merkle认证路径后,可以基于SPV协议规定的计算过程,来计算出上述目标区块的区块头的hash值(即上述目标区块的Merkle树的根节点的hash值);

  例如,基于SPV协议,首先可以对上述待认证交易的hash值,与上述Merkle认证路径中与该待认证交易所在的节点对应的兄弟节点的hash值进行拼接,进行hash计算,进一步计算出上一级中间节点的hash值,然后再对该中间节点的hash值,以及上述Merkle认证路径中与该中间节点对应的兄弟节点的hash值进行拼接,进行hash计算,得到再上一级的中间节点的hash值,依次类推,直到计算出根节点的hash值,得到上述待认证交易在第二区块链上所在的目标区块的区块头的hash值后停止。

  步骤408,确定计算出的所述目标区块的区块头的hash值与所述认证数据源中保存的所述目标区块的区块头的hash值是否匹配;如果匹配,确定所述待认证交易包含在所述第二区块链的区块中。

  当订阅客户端计算出上述待认证交易在第二区块链上所在的目标区块的区块头的hash值后,可以将计算出的该目标区块的区块头的hash值,与本地配置的上述认证数据源中保存的上述目标区块头的hash值匹配;如果二者数值一致,则该待认证交易包含在第二区块链的区块中,此时该待认证交易认证通过;反之,如果二者数值不一致,则该待认证交易并未包含在第二区块链的区块中,此时该待认证交易认证失败。

  当上述待认证交易认证通过后,订阅客户端可以在第一区块链上触发执行与上述待认证交易相关的操作。

  为了便于理解,以跨区块链的关联转账场景为例进行说明。

  请参见图5,图5是一示例性实施例提供的一种跨区块链的关联转账系统的结构示意图;如图5所示,假定用户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。在这种情况下,用户可以将来自区块链2上的,已经完成了的从账户A2向账户B2转入指定数量的证券资产的交易,作为输入提交至上述智能合约进行执行,而上述订阅客户端(比如SPV钱包),可以基于配置的区块链2的认证数据源(即区块头数据组成的轻简链),来认证该交易是否包含在区块链2的区块中;如果认证通过,此时可以调用上述智能合约,触发在区块链1中执行由账户B1向账户A1转入指定数额的人民币的交易。

  通过以上各实施例可见,订阅客户端通过与第一区块链和第二区块链分别对接的跨链客户端,来获取由发布客户端发布的第二区块链上的数据作为认证数据源,进而在接收到来自第二区块链上的待认证数据时,可以基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对待认证数据进行数据认证;由于第一区块链和第二区块链之间可以采用订阅和发布的方式,通过跨链客户端来进行数据同步,并将同步的数据作为认证数据源,来认证来对端区块链上的数据,因此对于不同的区块链之间,可以在互相隔离的前提下,具备验证对端区块链上的数据的能力,实现无入侵的侧链锚定,进而可以高效的与其它区块链进行锚定,搭建出低复杂度、高扩展性的跨链网络。

  与上述方法实施例相对应,本说明书还提供了一种跨区块链的认证装置的实施例。本说明书的跨区块链的认证装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本说明书的跨区块链的认证装置所在电子设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。

  图7是本说明书一示例性实施例示出的一种跨区块链的认证装置的框图。

  请参考图7,所述跨区块链的认证装置70可以应用在前述图6所示的电子设备中,所述电子设备位于由订阅客户端、发布客户端、以及跨链客户端组成的跨链交互系统;其中,所述订阅客户端与第一区块链对应;所述发布客户端与第二区块链对应;所述跨链客户端与所述订阅客户端和所述发布客户端分别对接;所述装置70包括有:获取模块701、接收模块702和认证模块703。

  获取模块701,通过所述跨链客户端获取由所述发布客户端发布的所述第二区块链上的数据作为认证数据源;

  接收模块702,接收到来自所述第二区块链上的待认证数据;

  认证模块703,基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行数据认证。

  在本实施例中,所述获取模块701:

  向所述跨链交互端发起订阅请求;其中,所述订阅请求用于向所述跨链交互端指示订阅条件,以使所述跨链交互端基于所述订阅条件,向所述发布客户端请求所述第二区块链上满足所述订阅条件的数据;

  获取所述发布客户端发布的所述第二区块链上满足所述订阅条件的数据作为认证数据源。

  在本实施例中,所述认证数据源包括所述第二区块链中各区块的区块头数据。

  在本实施例中,所述认证模块703:

  基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行SPV数据认证,以确定所述待认证数据是否包含在所述第二区块链的区块中。

  在本实施例中,所述认证模块703进一步:

  计算所述待认证数据的hash值;

  获取所述待认证数据在所述第二区块链上包含所述待认证数据的目标区块的Merkle树中的Merkle认证路径;

  基于所述待认证数据的hash值以及所述Merkle认证路径上各节点的hash值,计算所述目标区块的区块头的hash值;

  确定计算出的所述目标区块的区块头的hash值与所述认证数据源中保存的所述目标区块的区块头的hash值是否匹配;如果匹配,确定所述待认证数据包含在所述第二区块链的区块中。

  在本实施例中,所述订阅客户端对应于所述第一区块链上的节点设备;所述发布客户端对应于所述第二区块链上的节点设备。

  上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

  对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

  上述实施例阐明的系统、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

  与上述方法实施例相对应,本说明书还提供了一种电子设备的实施例。所述电子设备位于由订阅客户端、发布客户端、以及跨链客户端组成的跨链交互系统;其中,所述订阅客户端与第一区块链对应;所述发布客户端与第二区块链对应;所述跨链客户端与所述订阅客户端和所述发布客户端分别对接;该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。

  在本实施例中,通过读取并执行所述存储器存储的与跨区块链的认证的控制逻辑对应的机器可执行指令,所述处理器被促使:

  通过所述跨链客户端获取由所述发布客户端发布的所述第二区块链上的数据作为认证数据源;

  接收到来自所述第二区块链上的待认证数据;

  基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行数据认证。

  在本实施例中,通过读取并执行所述存储器存储的与跨区块链的认证的控制逻辑对应的机器可执行指令,所述处理器被促使:

  向所述跨链交互端发起订阅请求;其中,所述订阅请求用于向所述跨链交互端指示订阅条件,以使所述跨链交互端基于所述订阅条件,向所述发布客户端请求所述第二区块链上满足所述订阅条件的数据;

  所述订阅客户端获取所述发布客户端发布的所述第二区块链上满足所述订阅条件的数据作为认证数据源。

  在本实施例中,通过读取并执行所述存储器存储的与跨区块链的认证的控制逻辑对应的机器可执行指令,所述处理器被促使:

  基于所述认证数据源以及所述第一区块链上配置的数据认证规则,对所述待认证数据进行SPV数据认证,以确定所述待认证数据是否包含在所述第二区块链的区块中。

  在本实施例中,通过读取并执行所述存储器存储的与跨区块链的认证的控制逻辑对应的机器可执行指令,所述处理器被促使:

  计算所述待认证数据的hash值;

  获取所述待认证数据在所述第二区块链上包含所述待认证数据的目标区块的Merkle树中的Merkle认证路径;

  基于所述待认证数据的hash值以及所述Merkle认证路径上各节点的hash值,计算所述目标区块的区块头的hash值;

  确定计算出的所述目标区块的区块头的hash值与所述认证数据源中保存的所述目标区块的区块头的hash值是否匹配;如果匹配,确定所述待认证数据包含在所述第二区块链的区块中。

  本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。

  应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

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

《跨区块链的认证方法及装置、电子设备.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)