跨链消息可靠传递方法、装置以及电子设备与流程

文档序号:27769724发布日期:2021-12-04 02:22阅读:72来源:国知局
跨链消息可靠传递方法、装置以及电子设备与流程

1.本技术涉及区块链技术领域,具体地,涉及一种跨链消息可靠传递方法、装置以及电子设备。


背景技术:

2.区块链技术作为一种分布式账本技术,其技术优势主要体现于数据信息不可篡改、数据信息可溯源、分布式去中心化、无须信任系统等方面,区块链技术目前已经在金融、健康医疗、供应链、资产管理、互联网电商等诸多领域得以应用。
3.相关技术中,为了使异构区块链/同构区块链之间实现数据流转,跨链技术应运而生。在跨链技术中,为了避免参与跨链的两个区块链中的某个区块链作恶,篡改跨链交易消息,可以在两个区块链之间设置主链,并利用主链对两个区块链之间的跨链消息进行存证。在两个区块链日后对跨链消息产生争议时,主链存证的跨链消息可以作为解决争议的依据。然而随着接入主链的区块链数量的增加,多个区块链中两两之间随时可能产生跨链交互,导致主链的跨链消息处理压力增大,主链性能受到影响。


技术实现要素:

4.本技术实施例中提供了一种跨链消息可靠传递方法、装置以及电子设备,旨在降低跨链交互期间主链的消息处理压力,并提升跨链消息的传递可靠性。
5.根据本技术实施例的第一个方面,提供了一种跨链消息可靠传递方法,应用于跨链系统,所述跨链系统包括主链和多个子链,所述方法包括:所述主链接收源链发送的跨链消息哈希值、所述源链的第一子链标识以及目标链的第二子链标识,并根据所述第二子链标识,将所述哈希值和所述第一子链标识发送给所述第二子链标识对应的所述目标链;其中,所述源链和所述目标链是所述多个子链中的两个子链;所述目标链根据所述第一子链标识和所述哈希值,从所述第一子链标识对应的所述源链处,获取所述跨链消息和所述跨链消息对应的第一默克尔证明;所述目标链根据所述跨链消息和所述第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询所述主链中是否保存有与所述第一根哈希值相同的根哈希值;在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,所述目标链处理所述跨链消息。
6.根据本技术实施例的第二个方面,提供了一种跨链消息可靠传递方法,应用于跨链系统的多个子链中的任意一个子链,所述跨链系统还包括主链,所述方法包括:接收所述主链发送的跨链消息哈希值和第一子链标识,所述跨链消息哈希值是所述第一子链标识对应的子链发送给所述主链的;根据所述第一子链标识和所述哈希值,从所述第一子链标识对应的子链处,获取所述跨链消息和所述跨链消息对应的第一默克尔证明;
根据所述跨链消息和所述第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询所述主链中是否保存有与所述第一根哈希值相同的根哈希值;在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,处理所述跨链消息。
7.根据本技术实施例的第三个方面,提供了一种跨链消息可靠传递装置,应用于跨链系统的多个子链中的任意一个子链,所述跨链系统还包括主链,所述装置包括:哈希值接收模块,用于接收所述主链发送的跨链消息哈希值和第一子链标识,所述跨链消息哈希值是所述第一子链标识对应的子链发送给所述主链的;跨链消息获取模块,用于根据所述第一子链标识和所述哈希值,从所述第一子链标识对应的子链处,获取所述跨链消息和所述跨链消息对应的第一默克尔证明;第一根哈希值查询模块,用于根据所述跨链消息和所述第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询所述主链中是否保存有与所述第一根哈希值相同的根哈希值;跨链消息处理模块,用于在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,处理所述跨链消息。
8.根据本技术实施例的第三个方面,提供了一种电子设备,所述电子设备包括:处理器、存储器以及总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过所述总线通信,所述机器可读指令被所述处理器执行时执行上述跨链消息可靠传递方法。
9.采用本技术实施例中提供的跨链消息可靠传递方法、装置以及电子设备,源链将跨链消息的哈希值发送给主链,再由主链将哈希值路由给目标链。相比于跨链消息本身,跨链消息的哈希值通常具有更小的数据量,因此可以降低跨链交互期间主链的消息处理压力。此外,目标链从源链处获取跨链消息和跨链消息对应的第一默克尔证明,并根据跨链消息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,然后查询主链中是否保存有相同的根哈希值。如果保存有,则说明主链记录有跨链消息对应的默克尔树的根哈希值,而该根哈希值可以作为日后处理争议的依据,同时也说明目标链在直接从源链获取跨链消息的过程中,跨链消息没有被篡改。在此情况下,目标链才对跨链消息进行处理。可见本技术可以降低跨链交互期间主链的消息处理压力,并提升跨链消息的传递可靠性。
附图说明
10.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:图1是本技术一实施例提出的跨链消息可靠传递方法的流程示意图;图2是本技术一实施例提出的子链生成第一默克尔树的示意图;图3是本技术一实施例提出的第二默克尔树的示意图;图4是本技术一实施例提出的跨链消息可靠传递方法的流程示意图;图5是本技术一实施例提出的跨链消息可靠传递装置的结构示意图;图6是本技术一实施例提供的电子设备的结构框图。
具体实施方式
11.在实现本技术的过程中,发明人发现,在跨链技术中,为了避免参与跨链的两个区块链中的某个区块链作恶,篡改跨链交易消息,可以在两个区块链之间设置主链,并利用主链对两个区块链之间的跨链消息进行存证。在两个区块链日后对跨链消息产生争议时,主链存证的跨链消息可以作为解决争议的依据。然而随着接入主链的区块链数量的增加,多个区块链中两两之间随时可能产生跨链交互,导致主链的跨链消息处理压力增大,主链性能受到影响。
12.针对上述问题,本技术实施例中提供了一种跨链消息可靠传递方法、装置以及电子设备,源链将跨链消息的哈希值发送给主链,再由主链将哈希值路由给目标链。相比于跨链消息本身,跨链消息的哈希值通常具有更小的数据量,因此可以降低跨链交互期间主链的消息处理压力。此外,目标链从源链处获取跨链消息和跨链消息对应的第一默克尔证明,并根据跨链消息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,然后查询主链中是否保存有相同的根哈希值。如果保存有,则说明主链记录有跨链消息对应的默克尔树的根哈希值,而该根哈希值可以作为日后处理争议的依据,同时也说明目标链在直接从源链获取跨链消息的过程中,跨链消息没有被篡改。在此情况下,目标链才对跨链消息进行处理。可见本技术可以降低跨链交互期间主链的消息处理压力,并提升跨链消息的传递可靠性。
13.本技术实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言java和直译式脚本语言javascript等。
14.为了使本技术实施例中的技术方案及优点更加清楚明白,以下结合附图对本技术的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本技术的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
15.参考图1,图1是本技术一实施例提出的跨链消息可靠传递方法的流程示意图,该跨链消息可靠传递方法应用于跨链系统,跨链系统包括主链和多个子链。如图1所示,该跨链消息可靠传递方法包括以下步骤:s110:主链接收源链发送的跨链消息哈希值、源链的第一子链标识以及目标链的第二子链标识,并根据第二子链标识,将哈希值和第一子链标识发送给第二子链标识对应的目标链。
16.其中,源链和目标链是多个子链中的两个子链。具体实现时,源链向主链发送:跨链消息的哈希值、源链标识(即第一子链标识)以及目标链的标识(即第二子链标识)。主链接收到源链发送的上述信息后,可以根据其中的第二子链标识,从多个子链中确定出目标链,从而将跨链消息的哈希值和源链标识(即第一子链标识)路由给目标链。
17.本技术中,相比于跨链消息本身,跨链消息的哈希值通常具有更小的数据量,源链不需要路由跨链消息本身,而是路由跨链消息的哈希值,因此可以降低跨链交互期间主链的消息处理压力。
18.本技术中,跨链消息具体可以是跨链交易,也可以是单纯需要同步给目标链进行保存的数据,本技术对于跨链消息的具体形式不做限定。
19.此外,在一些可选的实施方式中,跨链系统还可以包括多个骨干节点,每个骨干节
点对应一个子链,每个骨干节点还对应主链中的部分主链节点,每个骨干节点用于连接对应的子链和对应的主链节点。
20.当源链接收到源链用户提交的跨链消息,并对跨链消息进行共识后,源链的预设节点(例如源链的主节点master)可以生成跨链消息的哈希值,并生成跨链请求,该跨链请求携带:跨链消息的哈希值、源链标识以及目标链标识。源链的预设节点将跨链请求发送给源链对应的骨干节点,骨干节点再将跨链请求转发给对应的主链节点。主链节点通过主链的p2p网络,将跨链请求发送给每个主链节点。目标链对应的主链节点在接收到跨链请求后,根据其中携带的目标链标识,确定该目标链标识是其对应的子链的标识,因此该主链节点将跨链请求发送给对应的骨干节点,骨干节点再将跨链请求转发给目标链的预设节点(例如目标链的主节点master),从而使得目标链获得跨链消息哈希值和源链标识(即第一子链标识)。而其他主链节点在接收到跨链请求后,根据其中携带的目标链标识,确定该目标链标识不是其对应的子链的标识,因此可以不处理该跨链请求。
21.s120:目标链根据第一子链标识和哈希值,从第一子链标识对应的源链处,获取跨链消息和跨链消息对应的第一默克尔证明。
22.具体实现时,目标链接收到主链发送的跨链消息的哈希值和第一子链标识后,可以根据第一子链标识,从多个子链中确定出源链,从而根据哈希值向源链索取该哈希值对应的跨链消息。
23.在一些可选的实施方式中,目标链的预设节点接收到主链发送的跨链消息的哈希值和第一子链标识后,生成跨链消息获取请求,并将跨链消息获取请求发送给目标链对应的骨干节点。该跨链消息获取请求携带跨链消息的哈希值和第一子链标识。骨干节点接收到跨链消息获取请求后,根据其中携带的第一子链标识,从多个子链中确定出源链。然后该骨干节点将跨链消息获取请求转发给源链对应的骨干节点。源链对应的骨干节点接收到跨链消息获取请求后,将跨链消息获取请求发送给源链的预设节点。源链的预设节点从跨链消息获取请求中读取出哈希值,并从保存的多个跨链消息中查询该哈希值对应的跨链消息。在查询到对应的跨链消息后,源链的预设节点还根据该跨链消息所在的默克尔树,为该跨链消息生成默克尔证明(即前述第一默克尔证明)。源链的预设节点再通过骨干节点,将查询到的跨链消息和生成的默克尔证明发送给目标链的预设节点。
24.在一些可选的实施方式中,多个子链中的每个子链每生成一个区块后,根据该区块中记录的跨链消息,生成第一默克尔树,并将该第一默克尔树的根哈希值发送给主链的主链节点进行保存。
25.具体实现时,当子链生成一个区块后,子链的每个节点可以根据该区块记录的跨链消息,生成一个默克尔树(即第一默克尔树)并保存。此外,子链还可以通过骨干节点,将第一默克尔树的根哈希值发送给主链。主链的每个主链节点在获得每个子链发送的根哈希值后,保存这些根哈希值。
26.当子链的预设节点接收到跨链消息获取请求,并从保存的多个跨链消息中查询到相应跨链消息后,可以根据该跨链消息对应的默克尔树,生成该跨链消息对应的第一默克尔证明。
27.本技术中,通过将跨链消息对应的第一默克尔树的根哈希值发送给主链,使主链保存根哈希值。一方面,主链不需要保存多个跨链消息,而只需要保存多个跨链消息所形成
的第一默克尔树的根哈希值,因此可以有效节约主链的存储资源。另一方面,主链保存跨链消息的第一默克尔树的根哈希值后,当子链与子链在日后针对跨链消息产生争议后,可以根据争议的跨链消息重建默克尔树,并查询主链是否保存有重建的默克尔树的根哈希值,若有,则证明争议的跨链消息是历史存在过的跨链消息,该跨链消息不是伪造的,若无,则证明争议的跨链消息不是历史存在过的跨链消息,该跨链消息是伪造的。
28.s130:目标链根据跨链消息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询主链中是否保存有与第一根哈希值相同的根哈希值。
29.在一些可选的实施方式中,当目标链从源链获得跨链消息和跨链消息对应的第一默克尔证明后,目标链的预设节点可以根据跨链消息及其对应的第一默克尔证明,计算出相应的第一默克尔树的根哈希值(即第一根哈希值)。然后预设节点生成查询请求,该查询请求携带了第一根哈希值。预设节点将查询请求发送给目标链对应的骨干节点,并通过骨干节点将查询请求发送给对应的主链节点。
30.主链节点在接收到目标链的查询请求后,以查询请求携带的第一根哈希值为索引,查询自身是否保存有与第一根哈希值相同的根哈希值,并将查询结果反馈给目标链。
31.步骤s140:在主链中保存有与第一根哈希值相同的根哈希值的情况下,目标链处理跨链消息。
32.在一些可选的实施方式中,如果跨链消息是一个跨链交易,则当主链中保存有与第一根哈希值相同的根哈希值时,目标链才执行跨链交易。其中,目标链在执行跨链交易时,可以根据跨链交易携带的智能合约地址和合约方法标识,调用相应的智能合约,并执行该智能合约中的相应合约方法。如果跨链消息单纯是需要同步给目标链进行保存的数据,则当主链中保存有与第一根哈希值相同的根哈希值时,目标链才将该跨链消息记录至区块保存。
33.本技术中,目标链从源链处获取跨链消息和跨链消息对应的第一默克尔证明,并根据跨链消息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,然后查询主链中是否保存有相同的根哈希值。如果保存有,则说明主链记录有跨链消息对应的默克尔树的根哈希值,而该根哈希值可以作为日后处理争议的依据,同时也说明目标链在直接从源链获取跨链消息的过程中,跨链消息没有被篡改。在此情况下,目标链才对跨链消息进行处理。可见本技术可以降低跨链交互期间主链的消息处理压力,并提升跨链消息的传递可靠性。
34.在一些可选的实施方式中,考虑到目标链依赖于某一个主链节点查询是否保存有与第一根哈希值相同的根哈希值,因此该主链节点存在作恶可能。虽然主链及主链节点通常默认为是可信的,但是为了尽可能提升安全性,本技术中,主链的每个主链节点在获得每个子链发送的根哈希值后,还可以根据每个子链发送的根哈希值和每个子链的历史根哈希值,构建第二默克尔树,并将该第二默克尔树的根哈希值保存至主链新生成的区块中。
35.在跨链期间,当主链节点查询到与第一根哈希值相同的根哈希值,并向目标链反馈查询结果时,主链节点还可以将该根哈希值对应的第二默克尔证明反馈给目标链。目标链根据根哈希值和第二默克尔证明,计算相应的第二默克尔树的第二根哈希值,并查询主链的区块中是否保存有与第二根哈希值相同的根哈希值。
36.如果主链节点中保存有与第一根哈希值相同的根哈希值,且主链的区块中保存有
与第二根哈希值相同的根哈希值,目标链才处理跨链消息。否则,主链节点不处理跨链消息。
37.本技术中,通过为各个子链发送的根哈希值进一步构建第二默克尔树,并将第二默克尔树的根哈希值作为区块数据,记录在主链新生成的区块中,可以防止第二默克尔树的根哈希值被篡改。此外,目标链在根据根哈希值和第二默克尔证明,计算出第二根哈希值后,通过查询主链的区块中是否记录有相同的根哈希值。若是,则说明主链区块中记录有第一根哈希值对应的默克尔树的根哈希值,进而证明主链节点对第一根哈希值的查询结果是可信的,或者也可以直接证明主链中保存有与第一根哈希值相同的根哈希值。在此情况下,目标链才处理跨链消息,从而可以进一步提高跨链安全性。
38.以上,本技术通过一些实施例提出了跨链消息可靠传递方法。以下,本技术通过另一些实施例提出跨链消息可靠传递方法的更详细实施方式。
39.参考图2,图2是本技术一实施例提出的子链生成第一默克尔树的示意图。如图2所示,子链a为其他每个子链分别建立了一个跨链消息队列,每个跨链消息队列用于记录在当前区块内包括的相应跨链消息。为便于理解,如图2所示,子链a为子链b建立的跨链消息队列b中,包括跨链消息b1、跨链消息b2以及跨链消息b3,这三个跨链消息同时被记录在子链a当前生成的区块中。此外,这三个跨链消息在跨链消息队列b中的排序和在当前区块中的打包顺序一致,因此也与三个跨链消息在子链a中的处理顺序一致。
40.同样地,如图2所示,子链a为子链c建立的跨链消息队列c中,包括跨链消息c1和跨链消息c2,这两个跨链消息同时被记录在子链a当前生成的区块中。此外,这两个跨链消息在跨链消息队列c中的排序和在当前区块中的打包顺序一致,因此也与两个跨链消息在子链a中的处理顺序一致。子链a为子链d建立的跨链消息队列d中,包括跨链消息d1、跨链消息d2以及跨链消息d3,这三个跨链消息同时被记录在子链a当前生成的区块中。此外,这三个跨链消息在跨链消息队列d中的排序和在当前区块中的打包顺序一致,因此也与三个跨链消息在子链a中的处理顺序一致。
41.如图2所示,子链a生成每个跨链消息的哈希值,并根据跨链消息在跨链消息队列中的排序,生成一个默克尔树,也即是前述第一默克尔树。子链a保存该第一默克尔树,并将该第一默克尔树的根哈希值和对应区块的区块高度发送给主链保存。本技术中,子链a每生成一个区块,就会根据该区块中的跨链消息对应生成一棵第一默克尔树。
42.需要说明的是,由于子链a根据多个跨链消息在子链a中的处理顺序,为多个跨链消息生成第一默克尔树,因此第一默克尔树的根哈希值可以反映多个跨链消息在子链a中的处理顺序。如果将来对跨链消息的执行顺序产生争议时,可以根据第一默克尔树的根哈希值,来验证跨链消息的实际处理顺序。
43.子链a在每生成一个区块以及该区块对应的第一默克尔树之后,会将该区块的区块高度和该第一默克尔树的根哈希值发送给主链保存。同样地,其他子链(例如子链b、子链c、子链d)也会在生成区块和第一默克尔树之后,将区块高度和根哈希值发送给主链保存。
44.如下表所示,下表是主链中每个主链节点保存的根哈希值列表。
45.上表中,第一行表示主链的区块高度,每一列表示主链相应高度区块具体新增了哪些子链的哪些根哈希值。以第三列为例,表示主链区块高度height等于002的区块新增了以下根哈希值:子链a的区块高度等于002的区块所对应的第一默克尔树的根哈希值、子链b的区块高度等于003的区块所对应的第一默克尔树的根哈希值、子链c的区块高度等003的区块所对应的第一默克尔树的根哈希值。
46.又以第四列为例,表示主链区块高度height等于3的区块新增了以下根哈希值:子链a的区块高度等于3的区块所对应的第一默克尔树的根哈希值、子链c的区块高度等于7的区块所对应的第一默克尔树的根哈希值。
47.此外,每个主链节点在生成主链的每个区块时,还会根据新增的根哈希值和历史根哈希值,形成该区块对应的第二默克尔树,并将该第二默克尔树的根哈希值记录至该区块的区块头中,从而使得第二默克尔树的根哈希值随区块一起被共识。本技术中,通过将第二默克尔树的根哈希值记录在区块头中,可以使得主链的轻节也能保存并记录第二默克尔树的根哈希值。
48.为便于理解,参考图3,图3是本技术一实施例提出的第二默克尔树的示意图。如图3所示,每个主链节点在为主链区块高度等于003的区块生成相应的第二默克尔树时,会根据上表所示内容,基于新增的根哈希值(root_a height_003;root_c height_007)、以及历史根哈希值(root_a height_001;root_a height_002;root_b height_001;root_b height_003;root_c height_001;root_c height_003),生成区块003对应的第二默克尔树,进而得到该第二默克尔树的根哈希值merkle root。此外,每个主链节点会将该第二默克尔树的根哈希值merkle root记录至区块003的区块头中,从而使得该根哈希值merkle root随区块003一起被共识。需要说明的是,区块003的区块头中除了包括第二默克尔树的根哈希值merkle root,还包括主链交易的根哈希值,即区块体中记录的多个主链交易所形成的默克尔树的根哈希值。
49.当某个主链节点接收到相应子链的查询请求后,该主链节点以查询请求携带的第一根哈希值为索引,查询自身保存的根哈希值列表中,是否记录该第一根哈希值。如果记录有,则主链节点进一步根据该根哈希值对应的主链区块高度,查询到相应主链区块对应的第二默克尔树,从而根据该第二默克尔树,为该根哈希值生成相应的第二默克尔证明。
50.为便于理解,示例性地,假设主链节点接收到子链a发送的查询请求,主链节点以
查询请求携带的第一根哈希值为索引,查询到自身保存的根哈希值列表中,根哈希值root_c height_007与第一根哈希值相同。因此主链节点进一步根据root_c height_007对应的主链区块高度003,查询到主链区块003对应的第二默克尔树,即图3所示的默克尔树。主链节点根据图3所示的默克尔树,为root_c height_007生成相应的第二默克尔证明。
51.主链节点生成第二默克尔证明后,可以将查询结果和第二默克尔证明反馈给子链。子链接收到第二默克尔证明后,可以根据第一根哈希值和第二默克尔证明,生成相应的第二默克尔树的第二根哈希值。子链后续可以查询主链区块的区块头中是否记录有该第二根哈希值,从而验证主链节点的查询结果是可信。如果区块头中记录有该第二根哈希值,则主链节点的查询结果是可信的。
52.以上,本技术通过一些实施例提出了跨链消息可靠传递方法,上述跨链消息可靠传递方法应用于整个跨链系统。以下,本技术通过另一些实施例提供一种应用于子链的跨链消息可靠传递方法。以下应用于子链的跨链消息可靠传递方法的具体实施方式,可参考上述实施例,为避免重复,以下对应用于子链的跨链消息可靠传递方法进行简要介绍。
53.参考图4,图4是本技术一实施例提出的跨链消息可靠传递方法的流程示意图,该方法应用于跨链系统的多个子链中的任意一个子链,此外跨链系统还包括主链。如图4所示,该方法包括以下步骤:s410:接收主链发送的跨链消息哈希值和第一子链标识,跨链消息哈希值是第一子链标识对应的子链发送给主链的。
54.s420:根据第一子链标识和哈希值,从第一子链标识对应的子链处,获取跨链消息和跨链消息对应的第一默克尔证明。
55.s430:根据跨链消息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询主链中是否保存有与第一根哈希值相同的根哈希值。
56.s440:在主链中保存有与第一根哈希值相同的根哈希值的情况下,处理跨链消息。
57.在一些可选的实施方式中,每生成一个区块后,还根据该区块中记录的跨链消息,生成第一默克尔树,并将该第一默克尔树的根哈希值发送给主链的主链节点进行保存。
58.在一些可选的实施方式中,跨链系统还包括多个骨干节点,每个骨干节点对应一个子链,每个骨干节点还对应主链中的部分主链节点,每个骨干节点用于连接对应的子链和对应的主链节点。子链在查询主链中是否保存有与第一根哈希值相同的根哈希值期间,具体可以向对应的骨干节点发送携带有第一根哈希值的查询请求,使该骨干节点将查询请求提交给该骨干节点对应的主链节点,从而使得对应的主链节点查询自身是否保存有与第一根哈希值相同的根哈希值,并将查询结果反馈给该骨干节点。然后子链接收对应的骨干节点反馈的查询结果。
59.在一些可选的实施方式中,子链在接收对应的骨干节点反馈的查询结果时,还接收对应的骨干节点反馈的第二默克尔证明,第二默克尔证明是对应的主链节点在查询到与第一根哈希值相同的根哈希值时,对应的主链节点为该根哈希值生成的默克尔证明。
60.子链还根据第一根哈希值和第二默克尔证明,计算相应的第二默克尔树的第二根哈希值,并查询主链的区块中是否保存有与第二根哈希值相同的根哈希值。本技术中,主链还用于根据每个子链发送的根哈希值和每个子链的历史根哈希值,构建第二默克尔树,并将该第二默克尔树的根哈希值保存至主链新生成的区块中。
61.子链在执行上述步骤s440时,具体可以在主链的主链节点中保存有与第一根哈希值相同的根哈希值,且主链的区块中保存有与第二根哈希值相同的根哈希值的情况下,才处理跨链消息。
62.参考图5,图5是本技术一实施例提出的跨链消息可靠传递装置的结构示意图,该装置应用于跨链系统的多个子链中的任意一个子链,其中,跨链系统还包括主链。如图5所示,该装置包括:哈希值接收模块510,用于接收主链发送的跨链消息哈希值和第一子链标识,跨链消息哈希值是第一子链标识对应的子链发送给主链的。
63.跨链消息获取模块520,用于根据第一子链标识和哈希值,从第一子链标识对应的子链处,获取跨链消息和跨链消息对应的第一默克尔证明。
64.第一根哈希值查询模块530,用于根据跨链消息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询主链中是否保存有与第一根哈希值相同的根哈希值。
65.跨链消息处理模块540,用于在主链中保存有与第一根哈希值相同的根哈希值的情况下,处理跨链消息。
66.在一些可选的实施方式中,如图5所示,该装置还包括根哈希值生成模块550。根哈希值生成模块550用于:每生成一个区块后,根据该区块中记录的跨链消息,生成第一默克尔树,并将该第一默克尔树的根哈希值发送给主链的主链节点进行保存。
67.在一些可选的实施方式中,跨链系统还包括多个骨干节点,每个骨干节点对应一个子链,每个骨干节点还对应主链中的部分主链节点,每个骨干节点用于连接对应的子链和对应的主链节点。根哈希值查询模块530具体用于:向对应的骨干节点发送携带有第一根哈希值的查询请求,使该骨干节点将查询请求提交给该骨干节点对应的主链节点,从而使得对应的主链节点查询自身是否保存有与第一根哈希值相同的根哈希值,并将查询结果反馈给该骨干节点。根哈希值查询模块530还用于接收对应的骨干节点反馈的查询结果。
68.在一些可选的实施方式中,根哈希值查询模块530还用于接收对应的骨干节点反馈的第二默克尔证明,第二默克尔证明是对应的主链节点在查询到与第一根哈希值相同的根哈希值时,对应的主链节点为该根哈希值生成的默克尔证明。
69.如图5所示,该装置还包括第二根哈希值查询模块560,用于根据第一根哈希值和第二默克尔证明,计算相应的第二默克尔树的第二根哈希值,并查询主链的区块中是否保存有与第二根哈希值相同的根哈希值。本技术中,主链还用于根据每个子链发送的根哈希值和每个子链的历史根哈希值,构建第二默克尔树,并将该第二默克尔树的根哈希值保存至主链新生成的区块中。
70.跨链消息处理模块540具体用于:在主链的主链节点中保存有与第一根哈希值相同的根哈希值,且主链的区块中保存有与第二根哈希值相同的根哈希值的情况下,才处理跨链消息。
71.需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
72.参考图6,图6是本技术一实施例提供的电子设备的结构框图,该电子设备600包括处理器610以及存储器620以及一个或多个应用程序,其中一个或多个应用程序被存储在存储器620中并被配置为由一个或多个处理器610执行,一个或多个程序配置用于执行上述跨
链消息可靠传递方法。
73.本技术中的电子设备600可以包括一个或多个如下部件:处理器610、存储器620、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器620中并被配置为由一个或多个处理器610执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
74.处理器610可以包括一个或者多个处理核。处理器610利用各种接口和线路连接整个电子设备600内的各个部分,通过运行或执行存储在存储器620内的指令、程序、代码集或指令集,以及调用存储在存储器620内的数据,执行电子设备600的各种功能和处理数据。可选地,处理器610可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器610可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器610中,单独通过一块通信芯片进行实现。
75.存储器620可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read

onlymemory)。存储器620可用于存储指令、程序、代码、代码集或指令集。存储器620可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备600在使用中所创建的数据等。
76.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
77.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
78.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
79.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
80.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
81.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1