CN108520050A - 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 - Google Patents
一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 Download PDFInfo
- Publication number
- CN108520050A CN108520050A CN201810297017.6A CN201810297017A CN108520050A CN 108520050 A CN108520050 A CN 108520050A CN 201810297017 A CN201810297017 A CN 201810297017A CN 108520050 A CN108520050 A CN 108520050A
- Authority
- CN
- China
- Prior art keywords
- node
- code
- rank
- group
- offset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于二维定位的Merkle树缓存装置,基于组相联缓存机制,每一行高速缓存由标记域和数据域两部分组成:(1)标记域包括计数域、修改位、失效位以及偏移域和级别域,用于表示数据的身份和状态,其中:(a)计数域:支持基于权重的LRU替换算法,是缓存条目替换情况的标志;(b)修改位:标识放入缓存中的数据内容是否有更新,在执行写操作将修改位有效的数据一并写回;(c)失效位:保证数据的一致性,如果有不同的权威副本集,则失效位有效,缓存内相应数据无效;(d)偏移域和级别域:用于地址映射;(2)数据域:用于缓存完整的节点信息,只可能被经过授权的请求更新信息内容,可以直接用于Hash校验。还公开了缓存装置的基本操作方法和对Merkle树进行操作的方法,在对大规模Merkle树验证过程中减轻了CPU的计算负荷并提高了验证效率。
Description
技术领域
本发明涉及一种区块链技术领域,特别是涉及一种Merkle树的缓存机制的技术领域。
背景技术
当今Merkle树广泛应用在区块链等分布式生态环境中,在大规模的数据对比和校验中有良好的计算复杂度表现。如在证书透明度(CT)技术中,通过Merkle树记录日志的附加属性,随着日志规模的不断增加,只通过比较根节点和路径一致性检测,Merkle树就能保证日志每一个版本都有足够的可信度。此后劳丽和卡斯珀还提出证书撤销(RT)技术,利用经过认证的Merkle树结构支持非成员证明。而在区块链中,它使用Merkle树进行交易存储,所需要的是保证每一笔交易都不可伪造并且没有重复交易。
Merkle树的叶子结点存储数据集合的单元数据或其hash值,而分支节点存储各自子节点价值的哈希。通过验证数据块的签名序列的正确性,可以实现快速认证。而为了保证商用级别的数据完整性和安全性,目前Merkle树多采用位数较高的数字签名技术,导致rawMerkle树整体规模指数倍增长。如基于SHA-256散列算法的满Merkle树,叶节点就多达2256个。这样大规模的Merkle树,一方面给存储空间带来了挑战,更多的空间浪费在存储伪Hash节点上。另一方面,由于平均验证路径加长,会浪费更多的处理器运算资源,造成更大的时延。尤其是密集验证的时候,没有高效的缓存机制支撑,处理器运算资源更为紧张,而缓存机制会受限于它的物理存储能力而难以提供令人满意的命中率。
发明内容
有鉴于此,为了在对大规模Merkle树验证过程中减轻CPU的计算负荷并提高验证效率,本发明提供一种二维定位的二级缓存装置及相关的操作方法,从merkle树的编码和缓存两个方面解决问题。
本发明的目的在于提供一种基于二维定位的Merkle树缓存装置,所述缓存装置基于组相联缓存机制,设所述缓存装置关联度为O,每一组有O行,每一行高速缓存由标记域和数据域两部分组成:
(1)所述标记域包括计数域、修改位、失效位以及偏移域和级别域,用于表示数据的身份和状态,其中:
(a)计数域:用于支持基于权重的LRU替换算法,是缓存条目替换情况的标志;
(b)修改位:标识放入缓存中的数据内容是否有更新,在执行写操作将修改位有效的数据一并写回;
(c)失效位:保证数据的一致性,如果有不同的权威副本集,则失效位有效,缓存内相应数据无效;
(d)偏移域和级别域:用于地址映射。
其中,为了保证Merkle树上半部分永久保留在高速缓存中,设定在未命中的时候,级别高于阈值S的节点信息不会参与页面置换,级别不高于阈值S的节点所在的缓存区域称为非保留空间;
(2)数据域:用于缓存完整的节点信息,只可能被经过授权的请求更新信息内容,可以直接用于Hash校验。
优选的,所述基于权重的LRU替换算法根据数据的级别和活跃度更新缓存,其算法的步骤包括:
第一步,设节点为i,根据节点i的级别和偏移量生成地址码;
第二步,用节点i地址码的映射码作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,按照同一组内映射码一定相同的原则,根据级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,则读出数据,进行Hash校验;
第五步,如果没有找到缓存项,则重新计算节点的Hash值,然后在该组缓存中,选择级别小于阈值S而且计数域最大的一项,替换成新节点的信息,将所有修改位或失效位有效的缓存数据写回内存,新的Hash值写入数据域,修改位置有效,失效位置无效,偏移量写入偏移域,级别写入级别域;
第六步,将节点i缓存项计数域的值清零,同一组内其他项计数域的值加一。
本发明的目的还在于提供一种缓存装置的基本操作方法,包括:读操作和写操作,其中
所述读操作包括:
第一步,用节点地址码的映射码作为索引地址,解析得到缓存组号;
第二步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第三步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一;
第四步,如果没有找到缓存项,则重新计算节点的Hash值,返回结果,并调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,计数域的值置零,同一组内其他计数域的值加一;
所述写操作包括:
第一步,用节点地址码的映射码作为索引地址,解析得到缓存组号;
第二步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码,快速查找包含节点信息的缓存项;
第三步,如果找到缓存项,将输入的Hash值写入数据域,修改位有效,计数域置零,同一组内其他的计数域加一;
第四步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,修改位置有效,计数域置零,同一组内其他的计数域加一。
本发明的目的还在于提供一种采用缓存装置对Merkle树进行操作的方法,包括如下操作:节点查询,节点验证,节点更新,节点插入和节点删除。
优选的,所述Merkle采用满二叉树型结构,只有最下面的两层节点度小于2,而且这两层节点都集中在最左边的位置,其余节点度都为2,每个节点最多有两个子节点,以层遍历的方法将Merkle树编号,根节点对应起始序号1,对于任意一个节点i,可能的左孩子节点序号为2i,可能的右孩子节点为2i+1,对于任意节点i,用高度H表示它所在的层次,根节点高度为1,用偏移量Offset标识它在同一层次中自左向右的序号,同一层第一个节点偏移量为0,级别L表示节点自下而上所在的层次,最后一层的级别为1,假设树的高度为N,节点级别与相应的高度H满足H+L=N+1的关系,在插入第2i,i=0,1,2...个节点之后,自动将叶子结点扩充到2i+1个,额外增加的伪节点复制第2i个节点的数据,使Merkle树维持满二叉树的结构,保证每一层的节点都不会有奇数个,下一次插入的叶子结点只执行对第2i+1个叶子结点的更新操作,使用级别和偏移量二元组标识节点从而生成任意数据块的校验路径,采用标识码和映射码作为merkle树的节点地址码,所述Merkle树的节点地址码被划分成三个部分:级别域,保留位和偏移域,不同层次的节点有相同位数的所述级别域,偏移域的位数与级别相关,因而除了最后一层的节点,其他节点都有一定位数的保留位用0填充,保证保留位和偏移量的总长度是定值N,地址映射的时候,根据级别值确定偏移域的起始位置,偏移域被划分成标识码和映射码两部分,映射码用作缓存组的索引地址,利用偏移量右侧部分变化较快的特点,映射码将节点数据映射到缓存区的特定组内,使得相邻节点分布更加分散。
优选的,所述Merkle树的寻址方法包括:
第一步,读取级别L;
第二步,根据级别字段L确定偏移量字段的起始位置;
第三步,对于2k组缓存结构,取节点地址的后k位作为映射码,映射到相应缓存组,然后逐行比较偏移量;
第四步,如果偏移量有匹配则命中,寻址结束;
第五步,如果偏移量不匹配,则重新计算节点Hash值,调用替换算法更新缓存。
优选的,所述节点查询包括步骤:
第一步,根据节点的级别和偏移量生成地址码;
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一。
优选的,所述节点验证包括步骤:
第一步,根据节点的级别和偏移量生成地址码;
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同,按照级别和标识码快速查找包含节点信息的缓存项。
第四步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一;
第五步,将非认证方的Hash值与缓存中Hash值比较;
第六步,如果非认证方的Hash值与缓存中Hash值不一致则返回验证失败信息,拒绝服务;
第七步,如果非认证方的Hash值与缓存中Hash值一致,则利用满二叉树良好的节点关联性自动计算路径上的下一节点地址码,重复第二~七步,直到根节点为止。
优选的,所述节点更新包括步骤:
第一步,计算节点Hash值;
第二步,根据节点的级别和偏移量生成地址码;
第三步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第四步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第五步,如果找到缓存项,将新的Hash值写入数据域,将修改位置有效,计数域的值置零,同一组内其他计数域的值加一;
第六步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,修改位置有效,计数域置零,同一组内其他的计数域加一,计算路径上下一节点的Hash值,重复第二~六步,直到根节点为止。
优选的,所述节点插入包括步骤:
第一步,计算节点的Hash值;
第二步,根据节点的级别和偏移量生成地址码;
第三步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第四步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第五步,如果找到缓存项,将新的Hash值写入数据域,修改位置有效,计数域的值置零,同一组内其他计数域的值加一;
第六步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点Hash值调入缓存。计算当前节点的验证路径上的下一节点,执行第二~六步,直到根节点为止;
第七步,如果插入节点是第2k+1个叶子结点(k=0,,1,2...),则再以节点的Hash值为输入,重复第二~六步2k-1次,插入2k-1个伪叶子结点,该步骤通过线下完成。
优选的,所述节点删除包括步骤:
第一步,根据节点的级别和偏移量生成地址码。
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同的原则,根据级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,将相应的失效位置有效;
第五步,如果没有找到缓存项,在内存中查找相应数据并删除;
第六步,计算当前节点验证路径上的下一节点地址码,重复第一~五步,直到根节点为止。
采用本发明的二维定位的二级缓存装置和缓存方法,在对大规模Merkle树验证过程中减轻了CPU的计算负荷并提高了验证效率,从merkle树的编码和缓存两个方面解决了现有技术存在的问题。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
图1为根据本发明一个实施例的基于二维定位的Merkle树缓存装置结构示意图。
图2为根据本发明一个实施例的Merkle树的满二叉树型结构示意图。
图3为根据本发明一个实施例的获得需要的Hash值序列从而自动递推出整条验证路径原理示意图。
图4为根据本发明一个实施例的Merkle树节点地址码组成示意图。
图5为根据本发明一个实施例的基于SHA-256的Merkle树为例,要更新第10个叶子结点的更新列表的示意图。
具体实施方式
为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此的描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
图1展示了本发明一个实施例的基于二维定位的Merkle树缓存装置结构示意图。缓存装置基于组相联缓存机制,设所述缓存装置关联度为O,每一组有O行,每一行高速缓存由标记域和数据域两部分组成:
(1)所述标记域包括计数域、修改位、失效位以及偏移域和级别域,用于表示数据的身份和状态,其中:
(a)计数域:用于支持基于权重的LRU替换算法,是缓存条目替换情况的标志;
(b)修改位:标识放入缓存中的数据内容是否有更新,在执行写操作将修改位有效的数据一并写回;
(c)失效位:保证数据的一致性,如果有不同的权威副本集,则失效位有效,缓存内相应数据无效;
(d)偏移域和级别域:用于地址映射。
其中,为了保证Merkle树上半部分永久保留在高速缓存中,设定在未命中的时候,级别高于阈值S的节点信息不会参与页面置换,级别不高于阈值S的节点所在的缓存区域称为非保留空间;
(2)数据域:用于缓存完整的节点信息,只可能被经过授权的请求更新信息内容,可以直接用于Hash校验。
基于权重的LRU替换算法根据数据的级别和活跃度更新缓存,其算法的步骤包括:
第一步,设节点为i,根据节点i的级别和偏移量生成地址码;
第二步,用节点i地址码的映射码作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,按照同一组内映射码一定相同的原则,根据级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,则读出数据,进行Hash校验;
第五步,如果没有找到缓存项,则重新计算节点的Hash值,然后在该组缓存中,选择级别小于阈值S而且计数域最大的一项,替换成新节点的信息,将所有修改位或失效位有效的缓存数据写回内存,新的Hash值写入数据域,修改位置有效,失效位置无效,偏移量写入偏移域,级别写入级别域;
第六步,将节点i缓存项计数域的值清零,同一组内其他项计数域的值加一。
对于上述缓存装置,基本操作方法包括:读操作和写操作,其中
所述读操作包括:
第一步,用节点地址码的映射码作为索引地址,解析得到缓存组号;
第二步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第三步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一;
第四步,如果没有找到缓存项,则重新计算节点的Hash值,返回结果,并调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,计数域的值置零,同一组内其他计数域的值加一;
所述写操作包括:
第一步,用节点地址码的映射码作为索引地址,解析得到缓存组号;
第二步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码,快速查找包含节点信息的缓存项;
第三步,如果找到缓存项,将输入的Hash值写入数据域,修改位有效,计数域置零,同一组内其他的计数域加一;
第四步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,修改位置有效,计数域置零,同一组内其他的计数域加一。
本发明的目的还在于提供一种采用缓存装置对Merkle树进行操作的方法,包括如下操作:节点查询,节点验证,节点更新,节点插入和节点删除。
其中,所述Merkle采用满二叉树型结构,只有最下面的两层节点度小于2,而且这两层节点都集中在最左边的位置,其余节点度都为2,这种结构下,每个节点最多有两个子节点,以层遍历的方法将Merkle树编号,根节点对应起始序号1,对于任意一个节点i,可能的左孩子节点序号为2i,可能的右孩子节点为2i+1,对于任意节点i,用高度H表示它所在的层次,根节点高度为1,用偏移量Offset标识它在同一层次中自左向右的序号,同一层第一个节点偏移量为0。此外,级别L表示节点自下而上所在的层次,最后一层的级别为1,假设树的高度为N,节点级别与相应的高度H满足(H+L=N+1)的关系,在插入第2i,i=0,1,2...个节点之后,自动将叶子结点扩充到2i+1个,越在上层的节点,它的L值越大,有利于作为节点在缓存中生存周期的评判依据。额外增加的伪节点复制第2i个节点的数据,使Merkle树维持满二叉树的结构,保证每一层的节点都不会有奇数个,下一次插入的叶子结点只执行对第2i+1个叶子结点的更新操作,使用级别和偏移量二元组标识节点从而生成任意数据块的校验路径。
同一层中,节点个数ND=2D-1,节点偏移量Offset<2D-1。节点的级别L和同一层的最大偏移量的二进制编码长度Omax满足(L+Omax=N)的关系。而且级别L可以确定节点所在层次,偏移量Offset可以确定节点在同一层内的位置。二者组成的二元组唯一确定相应节点在Merkle树的位置。参见图2中,对于叶子节点33:因而它的级别L等于1。偏移量Offset为33-25=1。所以结点33可以用(6,1)代表。同理,中间节点14可以用(3,6)代表。
根据满二叉树的特性,对于任意节点(L,Offset)。如果不是根节点,则父节点为(L+1,),兄弟节点为:
如果父节点的兄弟节点存在,
参见图3,使用二元组(级别,偏移量)标识节点就可以方便的生成任意数据块的校验路径。比如要验证第七个数据块的可靠性,本机制就会自动递推出整条验证路径需要的Hash值序列。
另外,参见图4,采用标识码和映射码作为merkle树的节点地址码,所述Merkle树的节点地址码被划分成三个部分:级别域,保留位和偏移域,不同层次的节点有相同位数的所述级别域,偏移域的位数与级别相关,因而除了最后一层的节点,其他节点都有一定位数的保留位用0填充,保证保留位和偏移量的总长度是定值N,地址映射的时候,根据级别值确定偏移域的起始位置,偏移域被划分成标识码和映射码两部分,映射码用作缓存组的索引地址,利用偏移量右侧部分变化较快的特点,映射码将节点数据映射到缓存区的特定组内,使得相邻节点分布更加分散。
Merkle树的寻址方法包括:
第一步,读取级别L,例如:使用SHA-256哈希加密算法,Merkle树能达到256层,级别字段L占8个字节,偏移量字段占255个字节;对于不在第256层的节点,其偏移量编码所占字节为(255-D)<255;因而地址码中包括一段保留位;
第二步,根据级别字段L确定偏移量字段的起始位置,如对于级别5的节点地址,它的偏移量自第13个字节开始;
第三步,对于2k组缓存结构,取节点地址的后k位作为映射码,映射到相应缓存组,然后逐行比较偏移量;
第四步,如果偏移量有匹配则命中,寻址结束;
第五步,如果偏移量不匹配,则重新计算节点Hash值,调用替换算法更新缓存。
如前面提到的,缓存装置对Merkle树进行操作的方法,包括如下操作:节点查询,节点验证,节点更新,节点插入和节点删除,其中各个操作的步骤分别详细描述如下:
(1)节点查询包括步骤:
第一步,根据节点的级别和偏移量生成地址码;
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一。
(2)节点验证包括步骤:
第一步,根据节点的级别和偏移量生成地址码;
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同,按照级别和标识码快速查找包含节点信息的缓存项。
第四步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一;
第五步,将非认证方的Hash值与缓存中Hash值比较;
第六步,如果非认证方的Hash值与缓存中Hash值不一致则返回验证失败信息,拒绝服务;
第七步,如果非认证方的Hash值与缓存中Hash值一致,则利用满二叉树良好的节点关联性自动计算路径上的下一节点地址码,重复第二~七步,直到根节点为止。
(3)节点更新包括步骤:
第一步,计算节点Hash值;
第二步,根据节点的级别和偏移量生成地址码;
第三步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第四步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第五步,如果找到缓存项,将新的Hash值写入数据域,将修改位置有效,计数域的值置零,同一组内其他计数域的值加一;
第六步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,修改位置有效,计数域置零,同一组内其他的计数域加一,计算路径上下一节点的Hash值,重复第二~六步,直到根节点为止。
以基于SHA-256的Merkle树为例,要更新第10个叶子结点,则更新列表如图5所示。
(4)节点插入包括步骤:
第一步,计算节点的Hash值;
第二步,根据节点的级别和偏移量生成地址码;
第三步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第四步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第五步,如果找到缓存项,将新的Hash值写入数据域,修改位置有效,计数域的值置零,同一组内其他计数域的值加一;
第六步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点Hash值调入缓存。计算当前节点的验证路径上的下一节点,执行第二~六步,直到根节点为止;
第七步,如果插入节点是第2k+1个叶子结点(k=0,,1,2...),则再以节点的Hash值为输入,重复第二~六步2k-1次,插入2k-1个伪叶子结点,该步骤通过线下完成。
(5)节点删除包括步骤:
第一步,根据节点的级别和偏移量生成地址码。
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同的原则,根据级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,将相应的失效位置有效;
第五步,如果没有找到缓存项,在内存中查找相应数据并删除;
第六步,计算当前节点验证路径上的下一节点地址码,重复第一~五步,直到根节点为止
虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。
Claims (11)
1.一种基于二维定位的Merkle树缓存装置,其特征在于:所述缓存装置基于组相联缓存机制,设所述缓存装置关联度为O,每一组有O行,每一行高速缓存由标记域和数据域两部分组成:
(1)所述标记域包括计数域、修改位、失效位以及偏移域和级别域,用于表示数据的身份和状态,其中:
(a)计数域:用于支持基于权重的LRU替换算法,是缓存条目替换情况的标志;
(b)修改位:标识放入缓存中的数据内容是否有更新,在执行写操作将修改位有效的数据一并写回;
(c)失效位:保证数据的一致性,如果有不同的权威副本集,则失效位有效,缓存内相应数据无效;
(d)偏移域和级别域:用于地址映射。
其中,为了保证Merkle树上半部分永久保留在高速缓存中,设定在未命中的时候,级别高于阈值S的节点信息不会参与页面置换,级别不高于阈值S的节点所在的缓存区域称为非保留空间;
(2)数据域:用于缓存完整的节点信息,只可能被经过授权的请求更新信息内容,可以直接用于Hash校验。
2.根据权利要求1所述的一种基于二维定位的Merkle树缓存装置,其特征在于所述基于权重的LRU替换算法根据数据的级别和活跃度更新缓存,其算法的步骤包括:
第一步,设节点为i,根据节点i的级别和偏移量生成地址码;
第二步,用节点i地址码的映射码作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,按照同一组内映射码一定相同的原则,根据级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,则读出数据,进行Hash校验;
第五步,如果没有找到缓存项,则重新计算节点的Hash值,然后在该组缓存中,选择级别小于阈值S而且计数域最大的一项,替换成新节点的信息,将所有修改位或失效位有效的缓存数据写回内存,新的Hash值写入数据域,修改位置有效,失效位置无效,偏移量写入偏移域,级别写入级别域;
第六步,将节点i缓存项计数域的值清零,同一组内其他项计数域的值加一。
3.一种根据权利要求1-2任一所述的缓存装置的基本操作方法,包括:读操作和写操作,其中
所述读操作包括:
第一步,用节点地址码的映射码作为索引地址,解析得到缓存组号;
第二步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第三步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一;
第四步,如果没有找到缓存项,则重新计算节点的Hash值,返回结果,并调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,计数域的值置零,同一组内其他计数域的值加一;
所述写操作包括:
第一步,用节点地址码的映射码作为索引地址,解析得到缓存组号;
第二步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码,快速查找包含节点信息的缓存项;
第三步,如果找到缓存项,将输入的Hash值写入数据域,修改位有效,计数域置零,同一组内其他的计数域加一;
第四步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,修改位置有效,计数域置零,同一组内其他的计数域加一。
4.一种采用权利要求1-2任一所述的缓存装置对Merkle树进行操作的方法,包括如下操作:节点查询,节点验证,节点更新,节点插入和节点删除。
5.根据权利要求4所述的一种采用缓存装置对Merkle树进行操作的方法,其特征在于所述Merkle采用满二叉树型结构,只有最下面的两层节点度小于2,而且这两层节点都集中在最左边的位置,其余节点度都为2,每个节点最多有两个子节点,以层遍历的方法将Merkle树编号,根节点对应起始序号1,对于任意一个节点i,可能的左孩子节点序号为2i,可能的右孩子节点为2i+1,对于任意节点i,用高度H表示它所在的层次,根节点高度为1,用偏移量Offset标识它在同一层次中自左向右的序号,同一层第一个节点偏移量为0,级别L表示节点自下而上所在的层次,最后一层的级别为1,假设树的高度为N,节点级别与相应的高度H满足H+L=N+1的关系,在插入第2i,i=0,1,2...个节点之后,自动将叶子结点扩充到2i+1个,额外增加的伪节点复制第2i个节点的数据,使Merkle树维持满二叉树的结构,保证每一层的节点都不会有奇数个,下一次插入的叶子结点只执行对第2i+1个叶子结点的更新操作,使用级别和偏移量二元组标识节点从而生成任意数据块的校验路径,采用标识码和映射码作为merkle树的节点地址码,所述Merkle树的节点地址码被划分成三个部分:级别域,保留位和偏移域,不同层次的节点有相同位数的所述级别域,偏移域的位数与级别相关,因而除了最后一层的节点,其他节点都有一定位数的保留位用0填充,保证保留位和偏移量的总长度是定值N,地址映射的时候,根据级别值确定偏移域的起始位置,偏移域被划分成标识码和映射码两部分,映射码用作缓存组的索引地址,利用偏移量右侧部分变化较快的特点,映射码将节点数据映射到缓存区的特定组内,使得相邻节点分布更加分散。
6.根据权利要求4-5任一所述的一种采用缓存装置对Merkle树进行操作的方法,其特征在于所述Merkle树的寻址方法包括:
第一步,读取级别L;
第二步,根据级别字段L确定偏移量字段的起始位置;
第三步,对于2k组缓存结构,取节点地址的后k位作为映射码,映射到相应缓存组,然后逐行比较偏移量;
第四步,如果偏移量有匹配则命中,寻址结束;
第五步,如果偏移量不匹配,则重新计算节点Hash值,调用替换算法更新缓存。
7.根据权利要求4所述的一种采用缓存装置对Merkle树进行操作的方法,其特征在于所述节点查询包括步骤:
第一步,根据节点的级别和偏移量生成地址码;
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一。
8.根据权利要求4所述的一种采用缓存装置对Merkle树进行操作的方法,其特征在于所述节点验证包括步骤:
第一步,根据节点的级别和偏移量生成地址码;
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同,按照级别和标识码快速查找包含节点信息的缓存项。
第四步,如果找到缓存项,取出数据域数据,将计数域的值置零,同一组内其他计数域的值加一;
第五步,将非认证方的Hash值与缓存中Hash值比较;
第六步,如果非认证方的Hash值与缓存中Hash值不一致则返回验证失败信息,拒绝服务;
第七步,如果非认证方的Hash值与缓存中Hash值一致,则利用满二叉树良好的节点关联性自动计算路径上的下一节点地址码,重复第二~七步,直到根节点为止。
9.根据权利要求4所述的一种采用缓存装置对Merkle树进行操作的方法,其特征在于所述节点更新包括步骤:
第一步,计算节点Hash值;
第二步,根据节点的级别和偏移量生成地址码;
第三步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第四步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第五步,如果找到缓存项,将新的Hash值写入数据域,将修改位置有效,计数域的值置零,同一组内其他计数域的值加一;
第六步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点的Hash值和相关信息写入缓存的非保留空间,修改位置有效,计数域置零,同一组内其他的计数域加一,计算路径上下一节点的Hash值,重复第二~六步,直到根节点为止。
10.根据权利要求4所述的一种采用缓存装置对Merkle树进行操作的方法,其特征在于所述节点插入包括步骤:
第一步,计算节点的Hash值;
第二步,根据节点的级别和偏移量生成地址码;
第三步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第四步,在相应缓存组内,根据同一组内映射码一定相同的原则,按照级别和标识码快速查找包含节点信息的缓存项;
第五步,如果找到缓存项,将新的Hash值写入数据域,修改位置有效,计数域的值置零,同一组内其他计数域的值加一;
第六步,如果没有找到缓存项,调用基于权重的LRU替换算法,将节点Hash值调入缓存。计算当前节点的验证路径上的下一节点,执行第二~六步,直到根节点为止;
第七步,如果插入节点是第2k+1个叶子结点(k=0,,1,2...),则再以节点的Hash值为输入,重复第二~六步2k-1次,插入2k-1个伪叶子结点,该步骤通过线下完成。
11.根据权利要求4所述的一种采用缓存装置对Merkle树进行操作的方法,其特征在于所述节点删除包括步骤:
第一步,根据节点的级别和偏移量生成地址码。
第二步,用节点地址码的映射码部分作为索引地址,解析得到缓存组号;
第三步,在相应缓存组内,根据同一组内映射码一定相同的原则,根据级别和标识码快速查找包含节点信息的缓存项;
第四步,如果找到缓存项,将相应的失效位置有效;
第五步,如果没有找到缓存项,在内存中查找相应数据并删除;
第六步,计算当前节点验证路径上的下一节点地址码,重复第一~五步,直到根节点为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810297017.6A CN108520050B (zh) | 2018-03-30 | 2018-03-30 | 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810297017.6A CN108520050B (zh) | 2018-03-30 | 2018-03-30 | 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108520050A true CN108520050A (zh) | 2018-09-11 |
CN108520050B CN108520050B (zh) | 2019-01-25 |
Family
ID=63431818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810297017.6A Active CN108520050B (zh) | 2018-03-30 | 2018-03-30 | 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108520050B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
CN112182105A (zh) * | 2020-09-28 | 2021-01-05 | 湖北大学 | 一种基于Merkle树的区块链数据修改方法 |
CN113377979A (zh) * | 2021-06-09 | 2021-09-10 | 中国国家铁路集团有限公司 | 一种基于默克尔树的列车开行方案对比生成优化方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327505A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Content Identification for Peer-to-Peer Content Retrieval |
CN101853190A (zh) * | 2010-06-04 | 2010-10-06 | 华中科技大学 | 一种适用于嵌入式处理器的数据完整性验证方法 |
CN101894079A (zh) * | 2010-07-15 | 2010-11-24 | 哈尔滨工程大学 | 变长存储块的Hash树存储器完整性保护方法 |
CN102103552A (zh) * | 2009-12-22 | 2011-06-22 | Nxp股份有限公司 | 安全高速缓存存储器架构 |
CN102147802A (zh) * | 2010-12-17 | 2011-08-10 | 曙光信息产业(北京)有限公司 | 一种伪随机类nfs应用加速系统 |
CN102346695A (zh) * | 2010-07-29 | 2012-02-08 | 财团法人工业技术研究院 | 渐进式备份的基于片段的高延展的去复本系统与方法 |
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
-
2018
- 2018-03-30 CN CN201810297017.6A patent/CN108520050B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327505A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Content Identification for Peer-to-Peer Content Retrieval |
CN102103552A (zh) * | 2009-12-22 | 2011-06-22 | Nxp股份有限公司 | 安全高速缓存存储器架构 |
CN101853190A (zh) * | 2010-06-04 | 2010-10-06 | 华中科技大学 | 一种适用于嵌入式处理器的数据完整性验证方法 |
CN101894079A (zh) * | 2010-07-15 | 2010-11-24 | 哈尔滨工程大学 | 变长存储块的Hash树存储器完整性保护方法 |
CN102346695A (zh) * | 2010-07-29 | 2012-02-08 | 财团法人工业技术研究院 | 渐进式备份的基于片段的高延展的去复本系统与方法 |
CN102147802A (zh) * | 2010-12-17 | 2011-08-10 | 曙光信息产业(北京)有限公司 | 一种伪随机类nfs应用加速系统 |
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
Non-Patent Citations (1)
Title |
---|
YANG LI 等: "Optimized Source Authentication Scheme for Multicast Based on Merkle Tree and TESLA", 《IEEE INTERNATIONAL CONFERENCE ON INFORMATION THEORY & INFORMATION SECURITY》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
CN112182105A (zh) * | 2020-09-28 | 2021-01-05 | 湖北大学 | 一种基于Merkle树的区块链数据修改方法 |
CN112182105B (zh) * | 2020-09-28 | 2022-06-17 | 湖北大学 | 一种基于Merkle树的区块链数据修改方法 |
CN113377979A (zh) * | 2021-06-09 | 2021-09-10 | 中国国家铁路集团有限公司 | 一种基于默克尔树的列车开行方案对比生成优化方法 |
CN113377979B (zh) * | 2021-06-09 | 2023-09-19 | 中国国家铁路集团有限公司 | 一种基于默克尔树的列车开行方案对比生成优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108520050B (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165224B (zh) | 一种在区块链数据库上针对关键字key的索引方法 | |
CN108520050B (zh) | 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 | |
CN103458023B (zh) | 分布式闪存存储系统 | |
Leis et al. | The adaptive radix tree: ARTful indexing for main-memory databases | |
CN101692651B (zh) | 一种哈希查找表的方法和装置 | |
CN102122285B (zh) | 一种数据缓存系统中的数据查询系统和数据查询方法 | |
US20140188885A1 (en) | Utilization and Power Efficient Hashing | |
CN101853190B (zh) | 一种适用于嵌入式处理器的数据完整性验证方法 | |
CN102333036B (zh) | 一种实现高速路由查找的方法和系统 | |
CN105975587A (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
CN108197138A (zh) | 在发布/订阅系统中发布信息匹配订阅信息的方法及系统 | |
Blelloch et al. | Strongly history-independent hashing with applications | |
CN109656798A (zh) | 基于顶点重排序的超级计算机大数据处理能力测试方法 | |
CN105357247A (zh) | 基于分层云对等网络的多维属性云资源区间查找方法 | |
Botelho et al. | Minimal perfect hashing: A competitive method for indexing internal memory | |
CN111488614A (zh) | 基于业务数据区块链的数字身份存储方法及装置 | |
Pei et al. | An efficient query scheme for hybrid storage blockchains based on merkle semantic trie | |
CN102378407B (zh) | 一种物联网中的对象名字解析系统及其解析方法 | |
CN114064984A (zh) | 一种基于稀疏数组链表的世界状态增量更新方法及装置 | |
CN108009250A (zh) | 一种多分类赛事数据缓存建立、查询方法及装置 | |
CN106547484A (zh) | 一种基于raid5的实现内存数据可靠性方法及系统 | |
CN106789632A (zh) | 一种大规模分布式存储系统的节点路由的方法 | |
CN113821477A (zh) | 一种元数据缓存方法、系统、设备以及介质 | |
CN105205158A (zh) | 基于云计算的大数据检索方法 | |
CN114402352A (zh) | 用于追踪并测量矿池中工作量证明贡献的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |