区块链中的每个区块(什么是区块)都使用默克尔树来代表区块中所有交易的摘要。又称二叉哈希树(binary hash tree),merkle tree。
什么是Merkle树
Merkle树是一种树(数据结构中所说的树),通常称为Merkle Hash Tree。组成Merkle树的所有节点都是哈希值。默克尔树,用于高效汇总和验证大数据集的完整性。默克尔树是一个由加密哈希组成的二叉树。Merkle树具有以下特点:
•Merkle树是一种树型数据结构,可以是二叉树也可以是多叉树,具有树型结构的所有恃点;
•Merkle树的叶子节点上的value可以任意指定,比如可以将数据的咍希值作为叶子节点的值;
•非叶子节点的value是根据它下面所有的叶子节点值,然后按照一定的算法计算得出的。如Merkle树的非叶子节点value是将该节点的所有子节点进行组合,然后对组合结果进行哈希计算所得出的哈希值。
Merkle树的应用领域
目前,在计算机领域Merkle树多用来进行比对以及验证处理。比特币钱包服务用Merkle树的机制来做"百分百准备金证明〃。在处理比对或验证的应用场景中,特别是在分布式环境下进行比对或验证时,Merkle树可以大大减少数据的传输量以及计算的复杂度。
Merkle树的优点
Merkle树明显的一个好处是可以单独拿出一个分支(作为一个小树)来对部分数据进行校验,这个特性在很多使用场合可以带来哈希列表所不能比拟的方便和高效。
Merkle树在区块链中的应用
在区块链中,区块中的交易是按照Merkle的形式存储在区块上面的。每笔交易都有一个哈希值,然后不同的哈希值向上继续做哈希运算,最终形成了唯一的Merkle裉。这个Merkle根将会被存放到区块的区块头中。利用Merkle树的特性可以确保每一笔交易都不可伪造。