Merkle树是区块链技术的基本组成部分。它是由不同数据块的散列组成的数学数据结构,用作块中所有事务的摘要。它还允许对大量数据中的内容进行有效和安全的验证。此结构有助于验证数据的一致性和内容。比特币和以太坊都使用Merkle Trees结构。Merkle Tree也被称为Hash Tree。
Merkle Tree 的概念以1979年获得专利的Ralph Merkle命名。基本上Merkle树是数据结构树,其中每个叶节点都用数据块的哈希标记,非叶节点用加密标记其子节点标签的哈希值。叶节点是树中的最低节点。
Merkle树是如何工作的?
Merkle树通过生成整个交易集的数字指纹来存储块中的所有交易。它允许用户验证事务是否包含在块中。
通过重复计算节点的散列对来创建Merkle树,直到只剩下一个散列。此哈希称为Merkle Root或Root Hash。Merkle Trees采用自下而上的方式构建。
每个叶节点都是事务数据的散列,非叶节点是其先前散列的散列。Merkle树是二进制的,因此它需要偶数个叶节点。如果存在奇数个事务,则最后一个哈希将被复制一次以创建偶数个叶节点。
上面的例子是Merkle树最常见和最简单的形式,即Binary Merkle Tree。块中有四个事务:TX1,TX2,TX3和TX4。在这里你可以看到,有一个顶级哈希是整个树的哈希,称为Root Hash,或Merkle Root。这些中的每一个都被重复散列,并存储在每个叶节点中,从而产生散列0,1,2和3.然后,通过散列Hash0和Hash1,在父节点中汇总连续的叶节点对,从而产生Hash01,并且分别散列Hash2和Hash3,导致Hash23。然后再对两个哈希值(Hash01和Hash23)进行哈希处理以生成Root Hash或Merkle Root。
Merkle Root存储在块头中。块头是比特币块的一部分,它在挖掘过程中得到哈希值。它包含最后一个块的哈希值,一个Nonce,以及Merkle树中当前块中所有事务的Root Hash。因此,在块头中具有Merkle根使得事务防篡改。由于此Root Hash包含块内所有事务的哈希值,因此这些事务可能会导致节省磁盘空间。
Merkle Tree维护数据的完整性。如果事务中的任何单个细节或事务的顺序发生更改,则这些更改将反映在该事务的哈希中。此更改会将Merkle树级联到Merkle Root,更改Merkle根的值,从而使块无效。因此,每个人都可以看到Merkle树允许快速简单地测试特定交易是否包含在集合中。
Merkle树有三大好处:
- 它们提供了维护数据完整性和有效性的方法。
- 它们有助于节省内存或磁盘空间,因为证明在计算上容易且快速。
- 他们的证明和管理需要通过网络传输少量信息。
原创文章,作者:惊蛰财经,如若转载,请注明出处:http://www.xmlm.net/bi/32011.html