去年,有人声称发现了比特币交易记录中的一个漏洞,并宣布他们无需下载整个区块链即可证明任何交易已被篡改。
公告毫无进展,因为他们遇到了所有人都会遇到的同一个难题:默克尔树。不是安全团队,也不是防火墙。而是一篇1979年的数学论文,至今无人能解。
这就是重点。首先,https://academy.bit2me.com/en/quien-es-ralph-merkle/
Merkle 树的历史背景

Merkle 树的概念出现在 密码学领域 作为有效验证计算机系统中存储的数据完整性的手段。
拉尔夫·默克尔的 原始论文提出了使用的想法 哈希函数 构建一个树结构,以便有效地验证数据完整性。
从那时起,默克尔树在分布式系统、区块链技术和数字签名等各个领域得到了广泛应用。
Merkle 树在确保各种应用程序中数据的完整性和安全性方面发挥着至关重要的作用。
它们最重要的作用在于能够提供高效且加密的数据一致性和完整性证明。
它们被广泛应用于区块链技术中,以维护交易记录的完整性并确保分布式账本的一致性。
此外,Merkle 树还可应用于分布式文件系统、数字签名和证书, 对等网络以及许多其他数据完整性和安全性至关重要的领域。
默克尔树具有诸多优势,使其成为数据完整性验证的热门选择。首先,它为验证大型数据集的完整性提供了一种高效的方法。
通过以树状结构组织数据并使用哈希函数,验证过程可以以对数复杂度执行,而不管数据集的大小。
Merkle树的基本概念

Merkle 树听起来可能很复杂,但其核心依赖于一些相对容易理解的基本概念。让我们以简化的方式深入探讨 Merkle 树的基本概念。
哈希函数及其在 Merkle 树中的作用
A 哈希函数 是一种数学算法,它接受一个输入(例如数据项),并生成一个固定大小的输出,称为哈希值或哈希码。
哈希函数的关键特性是,即使输入发生微小变化,也会导致哈希值发生显著变化。
在默克尔树中,哈希函数在确保数据完整性方面起着至关重要的作用。树中的每个数据项(以叶节点表示)都使用选定的哈希函数进行单独哈希处理。
生成的哈希值唯一地代表了数据项。这些哈希值作为树结构中后续计算的输入。
在默克尔树中使用哈希函数有诸多好处。首先,它可以通过比较哈希值来高效地比较和验证数据完整性。
其次,它通过仅存储哈希值而不是整个数据来实现大型数据集的紧凑表示。
此外,哈希函数通过计算使得从哈希值逆向原始数据变得不可行,从而提供了安全性。
Merkle树的数据结构
默克尔树具有层级结构,类似于一棵倒置的树。这棵树从底部的叶节点开始,向上延伸,直到到达顶部的根节点。
树的每一级(叶级除外)都包含从下一级节点派生的节点。
Merkle Trees 的分层结构能够有效地验证数据完整性。
通过以树状结构组织数据,它减少了验证过程中所需的哈希值比较次数。
这种对数结构确保验证时间与树的高度而不是数据集的大小成比例。
默克尔树的结构也使得数据存储和传输更加高效。无需存储或传输整个数据集,只需共享根哈希值即可。
这种紧凑的表示形式减少了存储要求,并在需要通过网络传输数据的情况下最大限度地减少了带宽使用。
Merkle 树的性质和特征
i. 高效默克尔树能够高效地验证数据完整性。该树的对数结构确保了验证过程所需的哈希值比较次数最少,而与数据集的大小无关。
在需要快速可靠的数据完整性验证的场景中,这种效率至关重要。
II。 篡改检测默克尔树旨在检测数据中的任何更改或篡改。通过比较树中不同层级的哈希值,任何叶子节点的更改都会导致根节点的哈希值完全不同。
此属性使得 Merkle 树在检测数据中未经授权的修改方面具有高度可靠性,从而保证了数据的完整性。
III。 紧凑的表示默克尔树提供了一种紧凑的大型数据集表示方法。无需存储或传输整个数据集,只需共享根哈希值即可。
这减少了存储要求并最大限度地减少了数据传输所需的带宽。
紧凑表示在存储容量有限或通过网络传输数据的情况下尤其有价值。
IV。 可扩展性默克尔树具有可扩展性,可以处理不同大小的数据集。
即使数据集不断增长,验证过程仍然高效,因为哈希值比较的数量与树的高度呈对数关系,而不是与数据集的大小呈线性关系。
这种可扩展性使得默克尔树适用于各种应用,包括大型数据库、分布式系统和区块链技术。
v. 安保防护Merkle 树的安全性依赖于所选哈希函数的抗碰撞性。
抗碰撞性确保在计算上不可能找到两个不同的输入产生相同的哈希值。
此外,树的层级结构使得攻击者很难在不被发现的情况下篡改数据。
但是,为了维护默克尔树的安全性,使用经过充分验证且安全的哈希函数非常重要。
为什么你的移动加密钱包不需要下载整个区块链
比特币区块链的大小超过 600GB。你的手机钱包不会存储任何数据,却依然能在几秒钟内验证你的交易。默克尔树正是实现这一点的关键。
该机制称为简化支付验证 (SPV),它通过称为默克尔证明的东西来工作,默克尔证明是一小组哈希值,可以证明特定交易包含在区块中,而无需完整的区块数据。
您的钱包会向完整节点请求此证明,并使用该证明重建从您的交易到默克尔根的路径,然后确认匹配情况。如果根与区块头中的根匹配,则您的交易将被确认。
实际意义在于:轻客户端、移动钱包、硬件钱包以及在有限硬件上运行的应用程序可以使用比特币网络的一小部分数据参与其中。
您是在针对默克尔根进行验证,而不是针对整个 600GB 的链。安全保障是一样的;计算需求只是全部成本的一小部分。
这就是为什么你的 Cash App 比特币交易不需要服务器机房进行验证的原因。它只需要一个默克尔证明。
Merkle 树的用例和实际示例
Merkle 树在各个领域都有应用。以下是一些示例:
i. 加密货币空投和代币领取如今,加密货币用户与默克尔树互动最直接的方式之一(他们往往并不知情)是通过代币空投和允许列表。
当一个项目想要向数百万个符合条件的钱包分发代币时,将每个地址都列在链上会产生高昂的 gas 费用,并且会将完整的列表公开。
相反,该项目创建了一个包含所有符合条件的钱包地址的默克尔树,只在链上发布默克尔根,并允许每个用户通过提交默克尔证明来领取他们的代币,证明他们的特定钱包地址包含在树中。
智能合约只需一次操作即可验证链上根目录下的证明。无需浪费 gas 发布完整列表。钱包地址也不会在必要时被公开。
这种模式,即在链上发布 Merkle 根,并在认领时提交个人证明——现在已成为以太坊和 Solana 上 NFT 允许列表、DeFi 协议分发和追溯空投的标准机制。
II。 区块链技术: Merkle 树是区块链技术不可或缺的一部分。它有助于确保交易的完整性,并提供一种有效的方法来验证区块链中区块的有效性。
III。 分布式文件系统: Merkle 树在分布式文件系统中用于验证跨多个节点复制数据的一致性。这可以实现高效的 数据同步 和错误检测。
IV。 数字签名和证书: Merkle 树在数字签名和证书中发挥作用,能够有效地验证信任链。
它们确保证书未被篡改,并且与受信任的根证书关联。
v. 对等网络: 在点对点网络中,Merkle 树可用于验证共享资源的完整性。参与者可以快速验证从其他对等点接收的数据的一致性。
除了这些示例之外,Merkle 树还有更多的应用,展示了其在各种场景中确保数据完整性和安全性的多功能性和实用性。
Verkle 树——下一代版本已在开发中
维克尔树该技术在 2018 年的一篇论文中提出,现在已成为以太坊长期路线图的一部分,它用一种名为“加密”的不同加密结构取代了默克尔树中基于哈希的承诺。 矢量承诺.
实际结果:Verkle 证明比 Merkle 证明小得多,有可能将交易验证所需的数据量减少一个数量级。
具体到以太坊而言,Verkle 树是通往……的途径之一。 无国籍状态节点无需存储完整状态即可验证区块的能力。
目前,运行一个以太坊全节点需要数百GB的状态数据。Verkle树通过实现更小的见证证明,可以显著降低这一需求,从而提高网络的可访问性。
截至2026年,Verkle树仍在以太坊测试网上进行积极的研究和测试,尚未部署到主网上。
包括向后兼容性和大规模性能在内的所有影响仍在评估中。
显而易见的是:拉尔夫·默克尔在1979年创立的结构并非最终答案。它只是第一个足以支撑一个产业发展的良好结构。
Merkle树的构造

1. 叶子节点及其在 Merkle 树中的作用
在默克尔树中,我们需要包含的数据项用叶节点表示。每个叶节点对应一个特定的数据项,并包含该数据项的哈希值。
可以将叶节点视为树的根基,其中每个节点代表我们想要确保其完整性的一段数据。
2. 生成叶节点哈希的哈希算法
为了生成每个叶子节点的哈希值,我们使用选定的哈希算法,例如 SHA-256 或 SHA-3。
哈希算法以数据项作为输入,并生成一个固定长度的哈希值作为输出。该哈希值唯一地表示数据项,并作为其在默克尔树中的标识符。
3. 计算父节点哈希值
一旦我们有了叶节点及其对应的哈希值,我们就可以沿着树向上移动来计算 父节点的哈希值.
父节点的哈希值是通过对其所有子节点的哈希值进行连接并计算哈希值得到的。这个过程一直持续到根节点。
4. Merkle Tree结构的递归构建
默克尔树的构建遵循递归过程。从最底层的叶节点开始,我们将相邻的节点配对,并计算它们连接后的哈希值,从而生成父节点。
如果节点数为奇数,我们在配对之前会复制最后一个节点,使其变为偶数。我们重复此过程,直到只剩下一个节点——根节点。
这种递归构造使我们能够高效地构建 Merkle 树结构。通过对每一层节点进行哈希运算,我们创建了紧凑且分层的数据表示,从而能够高效地验证数据完整性。
Merkle树的验证过程
一旦构建出默克尔树,我们就可以用它来验证数据的完整性。
验证过程包括比较哈希值,以检查数据是否已被篡改或修改。
以下是验证过程的概述:
第四步: 数据检索
检索或重建需要验证的数据块。
第四步: 证明生成
对于每个数据块,都会生成一个证明(也称为 Merkle 证明或身份验证路径)。该证明包含必要的哈希值和信息,以证明该数据块是 Merkle 树的一部分。
步骤3:根哈希计算
利用提供的证明和数据块,通过迭代地对数据块进行哈希运算,并将其与证明中相应的哈希运算相结合,来计算根哈希。
最终结果应与从可信来源获得的默克尔根相符。
第 4 步:验证
将计算出的根哈希与可信的 Merkle 根进行比较。如果匹配,则确认数据块的完整性。如果不匹配,则表明数据块已被篡改或不一致。
根据证明的结构和数据块在树中的位置,只需计算默克尔树中哈希值的子集即可高效地执行验证过程。
即使对于大型默克尔树,这也能够实现快速验证。
相关新闻: 工作量证明(PoW):它是什么以及它如何作为一种共识机制发挥作用
结语
开头提到的那次失败的攻击并没有取得任何进展,不是因为比特币的安全团队发现了它,而是因为攻击者发现了任何试图伪造交易记录的人都会发现的问题:你不仅要更改一个哈希值,还要更改它上面的每一个父哈希值,一直到默克尔根,而在一个成千上万个节点独立持有同一个根的网络中。
拉尔夫·默克尔在 1979 年解决了这个问题。他当时并没有想到比特币,而是在思考如何验证公钥。
他所构建的东西,最终回答了互联网在三十年后才会提出的一个问题:如何信任你没有创建、你无法控制、由你从未见过的人验证的网络上的数据?
这就是默克尔树的作用。而且每次你查看钱包余额时,它仍然会这样做。










