Merkle Tree简介

Merkle Tree实际上就是 树+Hash,具有树的性质,树的每个节点都是Hash值。Merkle Tree有以下特点:

  1. Merkle Tree可以是二叉树,也可以是多叉树,不管是什么树,它都具有树结构的所有特点。
  2. Merkel Tree的叶子节点的Value是数据集合的单元数据 或 单元数据的Hash值。
  3. Merkel Tree所有非叶子节点的Value是所有子节点Value的Hash值。

Merkle Tree的应用

Merkel Tree多用在数据验证,其中最有名的应用领域可能就属加密货币了。矿机在挖矿实际上就是在运算一组复杂的公式:

SHA256(SHA256(version + prevHash + merkleRoot + time + currentDifficulty + nonce )) < TARGET

这里不必深究公式的意义,只需要关注其中的一个“merkleRoot”参数,这个“merkleRoot”就是Merkle Tree的根节点的值。想要算出根节点的值,必须要从叶子节点出发(在加密货币中,叶子节点通常为各区块内从n个交易提取的n个Hash值),最后由根节点的两个子节点的Hash计算出根节点的Hash。这只是挖矿的一个小环节。

Merkle Tree的实现

Continue reading “Merkle Tree及其实现”