一种基于嵌套Merkle树的跨链数据正确性验证方法技术

技术编号:35643045 阅读:15 留言:0更新日期:2022-11-19 16:35
本发明专利技术公开了一种基于嵌套Merkle树的跨链数据正确性验证方法。该方法首先在联盟链初始化时创建一颗嵌套Merkle树,随着链上数据的不断写入对最新的数据制作Merkle结点并且插入到树中,同时将Merkle树之间的结点与其父亲和兄弟结点通过UniqueKey连接起来,最终得到由Merkle结点组成的链表。在跨链查询数据时首先获取目标数据对应的Merkle叶子结点,通过叶子结点向上寻找与遍历,从而获得完整的Merkle路径,在数据跨链时将数据与其Merkle路径打包后发送给跨链请求链进行验证,从而保证了跨链数据的正确性。本发明专利技术通过将Merkle树嵌套的方法减轻了Merkel树的存储压力,减小了传输的网络通信消耗,简化了验证计算,并且通过将Merkle树结点链接加速了在持久化存储的Merkle树中查询与遍历的过程。Merkle树中查询与遍历的过程。Merkle树中查询与遍历的过程。

【技术实现步骤摘要】
一种基于嵌套Merkle树的跨链数据正确性验证方法


[0001]本专利技术属于区块链领域,具体是一种基于嵌套Merkle树的跨链数据正确性验证方法。

技术介绍

[0002]区块链凭借其数据安全可靠、不可篡改的性质广泛应用于存证取证、物流溯源等领域,并且随着场景的不断拓展于细分,区块链也出现了数种不同的类型。区块链大致可以分为三类,公链、私链以及联盟链。
[0003]其中由于考虑到企业并不想要将数据全部公开,但是同时想要利用区块链数据不可篡改和可溯源的优势,这种情况联盟链成为了一个较好的选择。
[0004]尽管现有联盟链数量繁多,但是彼此之间缺乏一种有效的数据互通手段,为了打破联盟链之间的数据孤岛,跨链技术显得越发重要,并且出现了一些适用于联盟链的跨链框架,但是每一条单独的联盟链的安全性由其自身组织结构与共识算法保障,多条链构成的联盟链跨链系统无法保障其安全性,容易出现伪造虚假数据返回给跨链请求链的情况,为了避免这种攻击可以使用Merkle树去保证数据的正确性。
[0005]Merkle树是一种特殊的二叉树,由一个根节点、一组中间节点和一组叶节点组成。默克尔树最早由Merkle Ralf在1980年提出,曾广泛用于文件系统和P2P系统中。其主要特点为:最下面的叶节点包含存储数据或其哈希值;非叶子节点(包括中间节点和根节点)都是它的两个孩子节点内容的哈希值。
[0006]在现实场景中,联盟链实时数据量比较大,维护一颗常规的Merkle树一方面需要进行大量的Re

hash计算,需要消耗大量的计算资源;另一方面随着数据的不断写入,Merkle树的存储占用也会呈指数级增加,给联盟链带来了巨大的存储压力;同时在联盟链场景下如何将Merkle树持久化存储和高效的查询也是需要解决的问题。
[0007]在专利CN112769894A中使用Merkle树为电网设备进行了验证,但是没有解决随着实时信息写入导致Merkle树存储和验证开销变大的问题,并且无法适用于跨链场景的验证;在专利CN111262788A中,考虑到了对Merkle树的存储进行优化,在查询和索引的速度上并没有明显的改进。

技术实现思路

[0008]本专利技术的目的在于解决跨链数据中正确性得不到保障的问题,提供一种基于嵌套Merkle树的跨链数据正确性验证方法。
[0009]技术方案:一种基于嵌套Merkle树的跨链数据正确性验证方法,包括以下步骤:
[0010]6)联盟链在初始化时创建一颗空的Merkel树,并设置参数,所述参数包括树的高度,树的最新的结点,然后将设置参数之后的Merkel树序列化后上链存储;
[0011]7)将Merkle树合约部署至所述联盟链中,并将该Merkle树合约设置为代理合约,提供包括对Merkle树的插入、获取路径、查询操作的接口;
[0012]8)当联盟链中有新数据写入账本时,Merkle树合约对新数据制作新的Merkle结点,添加至当前Merkle树中,并根据该位置执行当前Merkle树的更新操作;
[0013]9)Merkle树合约遍历步骤3)中更新之后Merkle树的结点,同时将该Merkle树的每一个结点与其兄弟和父母结点连接起来;
[0014]10)当请求链向目标链发起跨链查询的请求时,所有的请求都会被Merkle树合约先处理,Merkle树合约会查询到目标数据,将目标数据与其Merkle路径打包后发送至请求链,请求链收到请求后进行Merkle验证,如果验证通过则证明了当前跨链数据的正确性。
[0015]优选的,步骤3)的实现过程为:设当前Merkle树高度为h,现有数据量为n,该Merkle树的最新结点为L,序列化后的数据结果的字节流为bs,哈希算法为Sha

256,当有新数据写入账本时,如果新数据插入位置为奇数,只需要对新数据进行哈希更新结点;如果新数据插入位置为偶数,那么需要获取到当前最新结点L后,将两者哈希的字节流拼接后再进行哈希更新结点。
[0016]优选的,在进行哈希更新结点后,找到该结点父亲结点的ID,使用其填充对应Merkle结点的父亲结点的ID字段。
[0017]优选的,步骤3)中,随着新数据的不断写入,固定高度的Merkle树很快会被填满,为减少计算,将上一棵Merkle树的根结点作为下一棵Merkle树的第一个结点,保证了Merkle树的高度恒定,同时减轻了存储压力和验证的计算开销。
[0018]优选的,步骤5)中,当请求链向目标链发起跨链查询请求时,所有的请求都会被Merkle树合约先处理,Merkle树合约会查询到目标数据f,并且从目标数据f的附加数据中读取到对应Merkle树结点的关键值Key,从而索引到对应Merkle树的叶子结点,利用叶子结点附加信息中的父亲与兄弟结点顺序遍历该Merkle树收集Merkle路径,最终将查询到的数据与其Merkle路径打包后发送至请求链,请求链收到请求后进行Merkle验证,如果验证通过则证明了当前跨链信息巡查数据的正确性。
[0019]优选的,Merkle验证具体为:
[0020]hashF=Hash(f)
ꢀꢀꢀ
(1)
[0021]root hash2==Hash(hashF+Hash(Hash(e)+root hash1))
ꢀꢀꢀ
(2)
[0022]其中:hashF为数据F的哈希,Hash(f)、Hash(e)为对数据f、e进行哈希,数据f的Merkle路径中包含hashF、Hash(Hash(e)+root hash1)、root hash2;
[0023]如果(2)等式两侧相等,则认定为验证通过。
[0024]有益效果:与现有技术相比,本专利技术的突出的实质性特点和显著性进步主要体现在以下几点:
[0025](1)本专利技术在跨链过程中,除了返回给请求链所查询的信息之外同时返回目标信息的Merkle路径,使得请求链可以快速的验证跨链数据的正确性;
[0026](2)本专利技术采用了将Merkle树嵌套叠加,在不影响数据安全性的情况下减小了Merkle树的存储压力,同时减少了传输和验证Merkle路径的开销;
[0027](3)本专利技术通过将嵌套Merkle树的结点与其父亲和兄弟结点采用类似链表的方式连接,加速了获取Merkle路径的过程,减小了遍历Merkle树的开销,较好的适用于Merkle持久化存储场景;
[0028]最后,本专利技术通过部署Merkle树合约作为代理合约,从而实现了拦截所有跨链请
求,从而实现了全方面无死角的对跨链数据正确性的验证。
附图说明
[0029]图1为本专利技术插入数据流程图;
[0030]图2为本专利技术验证数据流程图;
[0031]图3为本专利技术跨链请求与验证结构图;
[0032]图4为本专利技术的嵌套Merkle树结构图。
具体实施方式
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于嵌套Merkle树的跨链数据正确性验证方法,其特征在于,包括以下步骤:1)联盟链在初始化时创建一颗空的Merkel树,并设置参数,所述参数包括树的高度,树的最新的结点,然后将设置参数之后的Merkel树序列化后上链存储;2)将Merkle树合约部署至所述联盟链中,并将该Merkle树合约设置为代理合约,提供包括对Merkle树的插入、获取路径、查询操作的接口;3)当联盟链中有新数据写入账本时,Merkle树合约对新数据制作新的Merkle结点,添加至当前Merkle树中,并根据该位置执行当前Merkle树的更新操作;4)Merkle树合约遍历步骤3)中更新之后Merkle树的结点,同时将该Merkle树的每一个结点与其兄弟和父母结点连接起来;5)当请求链向目标链发起跨链查询的请求时,所有的请求都会被Merkle树合约先处理,Merkle树合约会查询到目标数据,将目标数据与其Merkle路径打包后发送至请求链,请求链收到请求后进行Merkle验证,如果验证通过则证明了当前跨链数据的正确性。2.如权利要求1所述的一种基于嵌套Merkle树的跨链数据正确性验证方法,其特征在于,步骤3)的实现过程为:当有新数据写入账本时,如果新数据插入位置为奇数,只需要对新数据进行哈希更新结点;如果新数据插入位置为偶数,那么需要获取到当前最新结点L后,将两者哈希的字节流拼接后再进行哈希更新结点。3.如权利要求2所述的一种基于嵌套Merkle树的跨链数据正确性验证方法,其特征在于,在进行哈希更新结点后,找到该结点父亲结点的ID,使用其填充对应Merkle结点的父亲结点字段。4.如权利要求3所述的一种基于嵌套Merkle树的跨链数据正确性验证方法,其特征在于,步骤3)中,随着新数据的不断写入...

【专利技术属性】
技术研发人员:陆艺仁朱友文
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1