一、什么是 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大多用来进行比对以及验证处理。比特币钱包服务用 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的优点

相对于 Hash List,Merkle Tree 的明显的一个好处是能够单独拿出一个分支来(作为一个小树)对部分数据进行校验,这个许多使用场合就带来了哈希列表所不能比较的便利和高效。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注