跨链消息可靠传递方法、装置以及电子设备转让专利
申请号 : CN202111302693.6
文献号 : CN113743944B
文献日 : 2022-03-29
发明人 : 李志平 , 谢家贵 , 郭健 , 张波 , 刘远超 , 朱斯语
申请人 : 中国信息通信研究院
摘要 :
权利要求 :
1.一种跨链消息可靠传递方法,其特征在于,应用于跨链系统,所述跨链系统包括主链和多个子链,所述方法包括:
所述主链接收源链发送的跨链消息哈希值、所述源链的第一子链标识以及目标链的第二子链标识,并根据所述第二子链标识,将所述哈希值和所述第一子链标识发送给所述第二子链标识对应的所述目标链;其中,所述源链和所述目标链是所述多个子链中的两个子链;
所述目标链根据所述第一子链标识和所述哈希值,从所述第一子链标识对应的所述源链处,获取所述跨链消息和所述跨链消息对应的第一默克尔证明;
所述目标链根据所述跨链消息和所述第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询所述主链中是否保存有与所述第一根哈希值相同的根哈希值;
在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,所述目标链处理所述跨链消息;
所述方法还包括:所述多个子链中的每个子链每生成一个区块后,根据该区块中记录的跨链消息,生成第一默克尔树,并将该第一默克尔树的根哈希值发送给所述主链的主链节点进行保存;
所述方法还包括:所述主链的每个主链节点在获得每个子链发送的根哈希值后,保存所述根哈希值;所述主链的主链节点在接收到所述目标链的查询请求后,以所述查询请求携带的所述第一根哈希值为索引,查询自身是否保存有与所述第一根哈希值相同的根哈希值,并将查询结果反馈给所述目标链;
所述方法还包括:所述主链的每个主链节点在获得每个子链发送的根哈希值后,根据每个子链发送的根哈希值和每个子链的历史根哈希值,构建第二默克尔树,并将该第二默克尔树的根哈希值保存至所述主链新生成的区块中;如果所述主链的主链节点查询到与所述第一根哈希值相同的根哈希值,则该主链节点在向所述目标链反馈所述查询结果时,还将该根哈希值对应的第二默克尔证明反馈给所述目标链;所述目标链根据所述根哈希值和所述第二默克尔证明,计算相应的第二默克尔树的第二根哈希值,并查询所述主链的区块中是否保存有与所述第二根哈希值相同的根哈希值;
所述在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,所述目标链处理所述跨链消息,包括:
在主链的主链节点中保存有与所述第一根哈希值相同的根哈希值,且所述主链的区块中保存有与所述第二根哈希值相同的根哈希值的情况下,所述目标链处理所述跨链消息。
2.一种跨链消息可靠传递方法,其特征在于,应用于跨链系统的多个子链中的任意一个子链,所述跨链系统还包括主链,所述方法包括:接收所述主链发送的跨链消息哈希值和第一子链标识,所述跨链消息哈希值是所述第一子链标识对应的子链发送给所述主链的;
根据所述第一子链标识和所述哈希值,从所述第一子链标识对应的子链处,获取所述跨链消息和所述跨链消息对应的第一默克尔证明;
根据所述跨链消息和所述第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询所述主链中是否保存有与所述第一根哈希值相同的根哈希值;
在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,处理所述跨链消息;
所述方法还包括:每生成一个区块后,根据该区块中记录的跨链消息,生成第一默克尔树,并将该第一默克尔树的根哈希值发送给所述主链的主链节点进行保存;
所述跨链系统还包括多个骨干节点,每个骨干节点对应一个子链,每个骨干节点还对应所述主链中的部分主链节点,每个骨干节点用于连接对应的子链和对应的主链节点;
所述查询所述主链中是否保存有与所述第一根哈希值相同的根哈希值,包括:向对应的骨干节点发送携带有所述第一根哈希值的查询请求,使该骨干节点将所述查询请求提交给该骨干节点对应的主链节点,从而使得对应的主链节点查询自身是否保存有与所述第一根哈希值相同的根哈希值,并将查询结果反馈给该骨干节点;接收对应的骨干节点反馈的所述查询结果。
3.根据权利要求2所述的方法,其特征在于,在接收对应的骨干节点反馈的查询结果时,所述方法还包括:
接收对应的骨干节点反馈的第二默克尔证明,所述第二默克尔证明是对应的主链节点在查询到与所述第一根哈希值相同的根哈希值时,对应的主链节点为该根哈希值生成的默克尔证明;
根据所述第一根哈希值和所述第二默克尔证明,计算相应的第二默克尔树的第二根哈希值,并查询所述主链的区块中是否保存有与所述第二根哈希值相同的根哈希值;其中,所述主链用于根据每个子链发送的根哈希值和每个子链的历史根哈希值,构建第二默克尔树,并将该第二默克尔树的根哈希值保存至所述主链新生成的区块中;
所述在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,处理所述跨链消息,包括:
在所述主链的主链节点中保存有与所述第一根哈希值相同的根哈希值,且所述主链的区块中保存有与所述第二根哈希值相同的根哈希值的情况下,处理所述跨链消息。
4.一种跨链消息可靠传递装置,其特征在于,应用于跨链系统的多个子链中的任意一个子链,所述跨链系统还包括主链,所述装置包括:哈希值接收模块,用于接收所述主链发送的跨链消息哈希值和第一子链标识,所述跨链消息哈希值是所述第一子链标识对应的子链发送给所述主链的;
跨链消息获取模块,用于根据所述第一子链标识和所述哈希值,从所述第一子链标识对应的子链处,获取所述跨链消息和所述跨链消息对应的第一默克尔证明;
第一根哈希值查询模块,用于根据所述跨链消息和所述第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,并查询所述主链中是否保存有与所述第一根哈希值相同的根哈希值;
跨链消息处理模块,用于在所述主链中保存有与所述第一根哈希值相同的根哈希值的情况下,处理所述跨链消息;
根哈希值生成模块,用于每生成一个区块后,根据该区块中记录的跨链消息,生成第一默克尔树,并将该第一默克尔树的根哈希值发送给主链的主链节点进行保存;
所述跨链系统还包括多个骨干节点,每个骨干节点对应一个子链,每个骨干节点还对应所述主链中的部分主链节点,每个骨干节点用于连接对应的子链和对应的主链节点;
所述根哈希值查询模块具体用于:向对应的骨干节点发送携带有所述第一根哈希值的查询请求,使该骨干节点将所述查询请求提交给该骨干节点对应的主链节点,从而使得对应的主链节点查询自身是否保存有与所述第一根哈希值相同的根哈希值,并将查询结果反馈给该骨干节点;
所述根哈希值查询模块还用于:接收对应的骨干节点反馈的所述查询结果。
5.一种电子设备,其特征在于,所述电子设备包括:处理器、存储器以及总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过所述总线通信,所述机器可读指令被所述处理器执行时执行如权利要求2或3所述的方法。
说明书 :
跨链消息可靠传递方法、装置以及电子设备
技术领域
背景技术
健康医疗、供应链、资产管理、互联网电商等诸多领域得以应用。
息,可以在两个区块链之间设置主链,并利用主链对两个区块链之间的跨链消息进行存证。
在两个区块链日后对跨链消息产生争议时,主链存证的跨链消息可以作为解决争议的依
据。然而随着接入主链的区块链数量的增加,多个区块链中两两之间随时可能产生跨链交
互,导致主链的跨链消息处理压力增大,主链性能受到影响。
发明内容
述第二子链标识对应的所述目标链;其中,所述源链和所述目标链是所述多个子链中的两
个子链;
同的根哈希值;
备运行时,所述处理器与所述存储器之间通过所述总线通信,所述机器可读指令被所述处
理器执行时执行上述跨链消息可靠传递方法。
链消息的哈希值通常具有更小的数据量,因此可以降低跨链交互期间主链的消息处理压
力。此外,目标链从源链处获取跨链消息和跨链消息对应的第一默克尔证明,并根据跨链消
息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,然后查询主链中是否保
存有相同的根哈希值。如果保存有,则说明主链记录有跨链消息对应的默克尔树的根哈希
值,而该根哈希值可以作为日后处理争议的依据,同时也说明目标链在直接从源链获取跨
链消息的过程中,跨链消息没有被篡改。在此情况下,目标链才对跨链消息进行处理。可见
本申请可以降低跨链交互期间主链的消息处理压力,并提升跨链消息的传递可靠性。
附图说明
具体实施方式
链对两个区块链之间的跨链消息进行存证。在两个区块链日后对跨链消息产生争议时,主
链存证的跨链消息可以作为解决争议的依据。然而随着接入主链的区块链数量的增加,多
个区块链中两两之间随时可能产生跨链交互,导致主链的跨链消息处理压力增大,主链性
能受到影响。
链消息本身,跨链消息的哈希值通常具有更小的数据量,因此可以降低跨链交互期间主链
的消息处理压力。此外,目标链从源链处获取跨链消息和跨链消息对应的第一默克尔证明,
并根据跨链消息和第一默克尔证明,计算相应的第一默克尔树的第一根哈希值,然后查询
主链中是否保存有相同的根哈希值。如果保存有,则说明主链记录有跨链消息对应的默克
尔树的根哈希值,而该根哈希值可以作为日后处理争议的依据,同时也说明目标链在直接
从源链获取跨链消息的过程中,跨链消息没有被篡改。在此情况下,目标链才对跨链消息进
行处理。可见本申请可以降低跨链交互期间主链的消息处理压力,并提升跨链消息的传递
可靠性。
例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实
施例中的特征可以相互组合。
链消息可靠传递方法包括以下步骤:
的目标链。
接收到源链发送的上述信息后,可以根据其中的第二子链标识,从多个子链中确定出目标
链,从而将跨链消息的哈希值和源链标识(即第一子链标识)路由给目标链。
的消息处理压力。
应的子链和对应的主链节点。
求携带:跨链消息的哈希值、源链标识以及目标链标识。源链的预设节点将跨链请求发送给
源链对应的骨干节点,骨干节点再将跨链请求转发给对应的主链节点。主链节点通过主链
的P2P网络,将跨链请求发送给每个主链节点。目标链对应的主链节点在接收到跨链请求
后,根据其中携带的目标链标识,确定该目标链标识是其对应的子链的标识,因此该主链节
点将跨链请求发送给对应的骨干节点,骨干节点再将跨链请求转发给目标链的预设节点
(例如目标链的主节点master),从而使得目标链获得跨链消息哈希值和源链标识(即第一
子链标识)。而其他主链节点在接收到跨链请求后,根据其中携带的目标链标识,确定该目
标链标识不是其对应的子链的标识,因此可以不处理该跨链请求。
应的跨链消息。
的骨干节点。该跨链消息获取请求携带跨链消息的哈希值和第一子链标识。骨干节点接收
到跨链消息获取请求后,根据其中携带的第一子链标识,从多个子链中确定出源链。然后该
骨干节点将跨链消息获取请求转发给源链对应的骨干节点。源链对应的骨干节点接收到跨
链消息获取请求后,将跨链消息获取请求发送给源链的预设节点。源链的预设节点从跨链
消息获取请求中读取出哈希值,并从保存的多个跨链消息中查询该哈希值对应的跨链消
息。在查询到对应的跨链消息后,源链的预设节点还根据该跨链消息所在的默克尔树,为该
跨链消息生成默克尔证明(即前述第一默克尔证明)。源链的预设节点再通过骨干节点,将
查询到的跨链消息和生成的默克尔证明发送给目标链的预设节点。
主链节点进行保存。
第一默克尔树的根哈希值发送给主链。主链的每个主链节点在获得每个子链发送的根哈希
值后,保存这些根哈希值。
尔证明。
的第一默克尔树的根哈希值,因此可以有效节约主链的存储资源。另一方面,主链保存跨链
消息的第一默克尔树的根哈希值后,当子链与子链在日后针对跨链消息产生争议后,可以
根据争议的跨链消息重建默克尔树,并查询主链是否保存有重建的默克尔树的根哈希值,
若有,则证明争议的跨链消息是历史存在过的跨链消息,该跨链消息不是伪造的,若无,则
证明争议的跨链消息不是历史存在过的跨链消息,该跨链消息是伪造的。
相应的第一默克尔树的根哈希值(即第一根哈希值)。然后预设节点生成查询请求,该查询
请求携带了第一根哈希值。预设节点将查询请求发送给目标链对应的骨干节点,并通过骨
干节点将查询请求发送给对应的主链节点。
时,可以根据跨链交易携带的智能合约地址和合约方法标识,调用相应的智能合约,并执行
该智能合约中的相应合约方法。如果跨链消息单纯是需要同步给目标链进行保存的数据,
则当主链中保存有与第一根哈希值相同的根哈希值时,目标链才将该跨链消息记录至区块
保存。
链中是否保存有相同的根哈希值。如果保存有,则说明主链记录有跨链消息对应的默克尔
树的根哈希值,而该根哈希值可以作为日后处理争议的依据,同时也说明目标链在直接从
源链获取跨链消息的过程中,跨链消息没有被篡改。在此情况下,目标链才对跨链消息进行
处理。可见本申请可以降低跨链交互期间主链的消息处理压力,并提升跨链消息的传递可
靠性。
常默认为是可信的,但是为了尽可能提升安全性,本申请中,主链的每个主链节点在获得每
个子链发送的根哈希值后,还可以根据每个子链发送的根哈希值和每个子链的历史根哈希
值,构建第二默克尔树,并将该第二默克尔树的根哈希值保存至主链新生成的区块中。
链根据根哈希值和第二默克尔证明,计算相应的第二默克尔树的第二根哈希值,并查询主
链的区块中是否保存有与第二根哈希值相同的根哈希值。
息。
的根哈希值被篡改。此外,目标链在根据根哈希值和第二默克尔证明,计算出第二根哈希值
后,通过查询主链的区块中是否记录有相同的根哈希值。若是,则说明主链区块中记录有第
一根哈希值对应的默克尔树的根哈希值,进而证明主链节点对第一根哈希值的查询结果是
可信的,或者也可以直接证明主链中保存有与第一根哈希值相同的根哈希值。在此情况下,
目标链才处理跨链消息,从而可以进一步提高跨链安全性。
前区块内包括的相应跨链消息。为便于理解,如图2所示,子链A为子链B建立的跨链消息队
列b中,包括跨链消息b1、跨链消息b2以及跨链消息b3,这三个跨链消息同时被记录在子链A
当前生成的区块中。此外,这三个跨链消息在跨链消息队列b中的排序和在当前区块中的打
包顺序一致,因此也与三个跨链消息在子链A中的处理顺序一致。
在跨链消息队列c中的排序和在当前区块中的打包顺序一致,因此也与两个跨链消息在子
链A中的处理顺序一致。子链A为子链D建立的跨链消息队列d中,包括跨链消息d1、跨链消息
d2以及跨链消息d3,这三个跨链消息同时被记录在子链A当前生成的区块中。此外,这三个
跨链消息在跨链消息队列d中的排序和在当前区块中的打包顺序一致,因此也与三个跨链
消息在子链A中的处理顺序一致。
该第一默克尔树的根哈希值和对应区块的区块高度发送给主链保存。本申请中,子链A每生
成一个区块,就会根据该区块中的跨链消息对应生成一棵第一默克尔树。
的处理顺序。如果将来对跨链消息的执行顺序产生争议时,可以根据第一默克尔树的根哈
希值,来验证跨链消息的实际处理顺序。
C、子链D)也会在生成区块和第一默克尔树之后,将区块高度和根哈希值发送给主链保存。
以下根哈希值:子链A的区块高度等于002的区块所对应的第一默克尔树的根哈希值、子链B
的区块高度等于003的区块所对应的第一默克尔树的根哈希值、子链C的区块高度等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,还包括主链交易的根哈希值,即区块体中记录的多个主链交易所形
成的默克尔树的根哈希值。
有,则主链节点进一步根据该根哈希值对应的主链区块高度,查询到相应主链区块对应的
第二默克尔树,从而根据该第二默克尔树,为该根哈希值生成相应的第二默克尔证明。
C height_007与第一根哈希值相同。因此主链节点进一步根据root_C height_007对应的
主链区块高度003,查询到主链区块003对应的第二默克尔树,即图3所示的默克尔树。主链
节点根据图3所示的默克尔树,为root_C height_007生成相应的第二默克尔证明。
第二默克尔树的第二根哈希值。子链后续可以查询主链区块的区块头中是否记录有该第二
根哈希值,从而验证主链节点的查询结果是可信。如果区块头中记录有该第二根哈希值,则
主链节点的查询结果是可信的。
链消息可靠传递方法。以下应用于子链的跨链消息可靠传递方法的具体实施方式,可参考
上述实施例,为避免重复,以下对应用于子链的跨链消息可靠传递方法进行简要介绍。
示,该方法包括以下步骤:
和对应的主链节点。子链在查询主链中是否保存有与第一根哈希值相同的根哈希值期间,
具体可以向对应的骨干节点发送携带有第一根哈希值的查询请求,使该骨干节点将查询请
求提交给该骨干节点对应的主链节点,从而使得对应的主链节点查询自身是否保存有与第
一根哈希值相同的根哈希值,并将查询结果反馈给该骨干节点。然后子链接收对应的骨干
节点反馈的查询结果。
第一根哈希值相同的根哈希值时,对应的主链节点为该根哈希值生成的默克尔证明。
还用于根据每个子链发送的根哈希值和每个子链的历史根哈希值,构建第二默克尔树,并
将该第二默克尔树的根哈希值保存至主链新生成的区块中。
处理跨链消息。
示,该装置包括:
尔树,并将该第一默克尔树的根哈希值发送给主链的主链节点进行保存。
和对应的主链节点。根哈希值查询模块530具体用于:向对应的骨干节点发送携带有第一根
哈希值的查询请求,使该骨干节点将查询请求提交给该骨干节点对应的主链节点,从而使
得对应的主链节点查询自身是否保存有与第一根哈希值相同的根哈希值,并将查询结果反
馈给该骨干节点。根哈希值查询模块530还用于接收对应的骨干节点反馈的查询结果。
根哈希值时,对应的主链节点为该根哈希值生成的默克尔证明。
存有与第二根哈希值相同的根哈希值。本申请中,主链还用于根据每个子链发送的根哈希
值和每个子链的历史根哈希值,构建第二默克尔树,并将该第二默克尔树的根哈希值保存
至主链新生成的区块中。
跨链消息。
储器620中并被配置为由一个或多个处理器610执行,一个或多个程序配置用于执行上述跨
链消息可靠传递方法。
为由一个或多个处理器610执行,一个或多个程序配置用于执行如前述方法实施例所描述
的方法。
指令集,以及调用存储在存储器620内的数据,执行电子设备600的各种功能和处理数据。可
选地,处理器610可以采用数字信号处理(DigitalSignalProcessing,DSP)、现场可编程门
阵列(Field-ProgrammableGateArray,FPGA)、可编程逻辑阵列
(ProgrammableLogicArray,PLA)中的至少一种硬件形式来实现。处理器610可集成中央处
理器(CentralProcessingUnit,CPU)、图像处理器(GraphicsProcessingUnit,GPU)和调制
解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;
GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述
调制解调器也可以不集成到处理器610中,单独通过一块通信芯片进行实现。
620可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、
用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现
上述各个方法实施例的指令等。存储数据区还可以存储电子设备600在使用中所创建的数
据等。
施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产
品的形式。
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
选实施例以及落入本申请范围的所有变更和修改。
之内,则本申请也意图包含这些改动和变型在内。