Merkle树是区块链技术的基本组成部分。它是由不同数据块的散列组成的数学数据结构,用作块中所有交易的摘要。它还允许对大量数据中的内容进行有效和安全的验证。此结构有助于验证数据的一致性和内容。比特币和以太坊都使用Merkle树结构。Merkle树也被称为哈希树。

Merkle树的概念以1979年为该概念申请专利的Ralph Merkle命名。从根本上说,Merkle树是数据结构树,其中每个叶节点都用数据块的哈希标记,非叶节点用加密标记 其子节点标签的哈希值。叶节点是树中的最低节点。

Merkle树是如何工作的?

Merkle树通过生成整个交易集的数字指纹来存储块中的所有交易。它允许用户验证交易是否包含在块中。

通过重复计算节点的散列对来创建Merkle树,直到只剩下一个散列。此哈希称为Merkle Root或Root Hash。Merkle树采用自下而上的方式构建。

每个叶节点都是事务数据的散列,非叶节点是其先前散列的散列。Merkle树是二进制的,因此它需要偶数个叶节点。如果存在奇数个事务,则最后一个哈希将被复制一次以创建偶数个叶节点。

区块链Merkle树-LMLPHP

上面的例子是Merkle树最常见和最简单的形式,即二进制Merkle树。块中有四个交易: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树维护数据的完整性。如果事务中的任何单个细节或事务的顺序发生更改,则这些更改将反映在该事务的哈希中。此更改会将Merkle树级联到Merkle Root,更改Merkle根的值,从而使块无效。因此,每个人都可以看到Merkle树允许快速简单地测试特定交易是否包含在集合中。

Merkle树有三大好处:

  • 它们提供了维护数据完整性和有效性的方法。
  • 它们有助于节省内存或磁盘空间,因为证明在计算上容易且快速。
  • 它们的证明和管理需要通过网络传输少量信息。

03-07 10:49