Merkle Tree

Merkle Tree,是一种树(数据结构中所说的树),网上大都称为Merkle Hash Tree,这是因为 它所构造的Merkle Tree的所有节点都是Hash值。Merkle Tree具有以下特点:
1. 它是一种树,可以是二叉树,也可以多叉树,无论是几叉树,它都具有树结构的所有特点;
2. Merkle树的叶子节点上的value,是由你指定的,这主要看你的设计了,如Merkle Hash Tree会将数据的Hash值作为叶子节点的值;
3 非叶子节点的value是根据它下面所有的叶子节点值,然后按照一定的算法计算而得出的。如Merkle Hash Tree的非叶子节点value的计算方法是将该节点的所有子节点进行组合,然后对组合结果进行hash计算所得出的hash value。
例如,下图就是一个Merkle Hash Tree形状,如果它是Merkle Hash Tree,则节点7的hash value必须是通过节点15、16上的value计算而得到.



目前, 在计算机领域,Merkle Tree大多用来进行比对以及验证处理。在处理比对或验证的应用场景中时,特别是在分布式环境下进行比对或验证时,Merkle Tree会大大减少数据的传输量以及计算的复杂度。例如,就拿图一举例,假如是 15,16.......30是一个个数据块的hash值,我把这些数据从A传输到B,数据传输到B后,我想验证下传输到B上的数据的有效性型(验证数据是否在传输过程中发生变化),只需要验证A 和 B上所构造的Merkle Tree的root节点值是否一致即可,如果一致,表示数据是有效的,传输过程中没有发生改变。假如在传输过程中,15对应的数据被人篡改,通过Merkle Tree很容易定位找到(因为此时,节点0,1,3,7,15对应的hash值都发生了变化),定位的时间复杂度为O(log(n)).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是merkle tree 假设你已经知道了什么是哈希算法以及哈希是用来干啥的。 网络传输数据的时候,A收到B的...
    Pony小马阅读 10,016评论 0 52
  • 如果对区块链有些基本的了解,那应该经常听到一个词叫merkle tree,那么merkle tree到底是做什么用...
    qinxiuchen阅读 3,717评论 0 0
  • 说实话,离职后到第一份简历简历投出去,中间隔了两个月。 这两个月,我并没有积极向上地学习或者提升自己的价值,而是日...
    HelloJIN阅读 2,586评论 0 0
  • 刚刚,有个老朋友发微信跟我说,她在汕头,问明天要不要出去见个面。心里忽然咯噔了一下,这是个有15年交情的老朋友,虽...
    sherry小可爱阅读 4,055评论 0 1
  • 简介 iOS8.0之后Touch ID的API开发给开发,最低支持的机型为iPhone 5s,最低支持系统为ios...
    白石洲霍华德阅读 3,511评论 0 2