区块链默克尔树

2025年3月17日 | 阅读 3 分钟

默克尔树是区块链技术的基本组成部分。它是一种由不同数据块的哈希组成的数学数据结构,作为区块中所有交易的摘要。它还允许高效且安全地验证大量数据中的内容。它还有助于验证数据的完整性和内容。比特币和以太坊都使用默克尔树结构。默克尔树也称为哈希树

默克尔树的概念以拉尔夫·默克尔 (Ralph Merkle) 的名字命名,他于1979 年为其专利。从根本上说,它是一种数据结构树,其中每个叶节点标记为数据块的哈希,而非叶节点标记为其子节点标签的加密哈希。叶节点是树中最底层的节点。

默克尔树如何工作?

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

默克尔树通过重复计算节点的哈希对来创建,直到只剩下一个哈希。这个哈希称为默克尔根或根哈希。默克尔树是自下而上构建的。

每个叶节点都是交易数据的哈希,非叶节点是其先前哈希的哈希。默克尔树是二叉树,因此需要偶数个叶节点。如果交易数量为奇数,则最后一个哈希将被复制一次,以创建偶数个叶节点。

Blockchain Merkle Tree

上面的例子是最常见和最简单的默克尔树形式,即二叉默克尔树。一个区块中有四笔交易:TX1TX2TX3TX4。在这里,你可以看到有一个顶部的哈希,它是整个树的哈希,称为根哈希默克尔根。这些都被重复哈希,并存储在每个叶节点中,得到哈希 0、1、2 和 3。然后将连续的叶节点对通过哈希Hash0Hash1 汇总到父节点中,得到 Hash01,并单独哈希 Hash2Hash3,得到 Hash23。然后再次哈希这两个哈希(Hash01Hash23)以生成根哈希或默克尔根。

默克尔根存储在区块头中。区块头是比特币区块在挖矿过程中进行哈希处理的部分。它包含最后一个区块的哈希、一个 Nonce 以及默克尔树中当前区块所有交易的根哈希。因此,将默克尔根包含在区块头中使交易防篡改。由于此根哈希包含了区块内所有交易的哈希,因此这些交易可能会节省磁盘空间。

Blockchain Merkle Tree

默克尔树维护数据的完整性。如果交易的任何一个细节或交易的顺序发生更改,这些更改将反映在该交易的哈希中。这种变化将沿着默克尔树向上级联到默克尔根,改变默克尔根的值,从而使区块无效。因此,每个人都可以看到,默克尔树可以快速简单地测试某个特定交易是否包含在集合中。

默克尔树有三个好处

  • 它提供了一种维护数据完整性和有效性的方法。
  • 由于证明计算简单快捷,因此有助于节省内存或磁盘空间。
  • 它们的证明和管理需要传输少量信息到网络。