本文概述
- 默克尔树如何工作?
Merkle Tree的概念以Ralph Merkle的名字命名,Ralph Merkle在1979年获得了该专利的专利。从根本上讲,它是一种数据结构树,其中每个叶子节点都标记有数据块的哈希,非叶子节点则标记有密码。其子节点标签的哈希值。叶节点是树中的最低节点。
默克尔树如何工作?默克尔树通过产生整个交易集的数字指纹,将所有交易存储在一个块中。它允许用户验证交易是否可以包含在块中。
通过重复计算节点的哈希对来创建Merkle树,直到仅剩一个哈希为止。此哈希称为Merkle Root或Root Hash。 Merkle树以自下而上的方式构建。
每个叶节点都是事务数据的哈希,非叶节点是其先前哈希的哈希。 Merkle树位于二叉树中,因此它需要偶数个叶节点。如果事务数为奇数,则将最后一次哈希重复一次,以创建偶数个叶节点。
文章图片
上面的示例是Merkle树(即二进制Merkle树)的最常见和最简单的形式。一个块中有四个事务:TX1,TX2,TX3和TX4。在这里,你可以看到顶部的哈希值是整个树的哈希值,称为“根哈希”或“默克尔根”。重复对每个哈希进行哈希处理,并将其存储在每个叶节点中,从而得到哈希0、1、2和3。然后,通过对哈希Hash0和Hash1进行哈希处理,在父节点中汇总叶节点的连续对,从而分别得到Hash01和Hash01。对Hash2和Hash3进行哈希处理,生成Hash23。然后再次对两个哈希(Hash01和Hash23)进行哈希处理,以生成根哈希或Merkle根。
【区块链merkle树】Merkle Root存储在块标题中。区块头是比特币区块的一部分,在挖掘过程中会散列。它包含Merkle树中当前块中最后一个块的哈希,一个Nonce和所有事务的Root Hash。因此,在块标题中使用Merkle根可以防止事务篡改。由于此“根哈希”包含该块内所有事务的哈希,因此这些事务可能会节省磁盘空间。
文章图片
Merkle树可维护数据的完整性。如果有任何单个交易细节或交易顺序的更改,那么这些更改将反映在该交易的哈希中。此更改会将Merkle树级联到Merkle根,从而更改Merkle根的值,从而使该块无效。因此,每个人都可以看到Merkle树允许快速简单地测试特定交易是否包含在集合中。
默克尔树有三个好处:
- 它提供了一种维护数据完整性和有效性的方法。
- 作为证明,它有助于节省内存或磁盘空间,并且计算简单,快速。
- 他们的证明和管理要求跨网络传输少量信息。
推荐阅读
- 区块链双重支出
- 区块链技术的局限性
- 区块链加密货币
- 区块链关键领域
- 比特币叉子(Fork)和隔离证人(SegWit)
- 区块链coinbase交易
- 区块链工作证明
- 比特币的基本构成
- 区块散列如何在区块链中工作