什么是默克尔树
默克尔树是一种数据结构,以它的提出者默克尔命名,根据默克尔树的性质也可以叫哈希树,是一种典型的二叉树。
默克尔树由根,分支(中间的非叶节点),叶节点组成。它有两个重要的特点,第一个是叶节点包含的是相关数据的哈希值(而不是相关数据本身),这也是它叫哈希树的原因,因为它的所有节点都是存储的哈希值;第二个是非叶节点的内容是孩子的哈希值的哈希。具体如下图所示。
(图片来自 Investopedia )
图中的 TA 就是原始的数据,将数据经过 hash 后,得到哈希值 HA,HA 作为整棵树的叶子节点。其余的节点如 HB,HC 等,用同样的方式得到。
每两个孩子节点的哈希值在进行哈希得到其父节点的哈希值,如 HAB = hash(HA,HB) ,一次类推得到 HABCDEFGH
这样以上就是默克尔树的基本原理。
参考
《Bitcoin: A Peer-to-Peer Electronic Cash System》
《区块链技术指南》
Merkle Tree