Merkle证明详解

本文解释了Merkle Proofs的概念及其用途,通过一个实例详细说明了如何验证数据在Merkle树中的存在性,并强调了Merkle树在区块链应用中的广泛使用。

本文解释了如何获取 Merkle 证明以及 Merkle 证明是什么。

Merkle 证明用于决定以下因素:

  • 数据是否属于 Merkle 树
  • 在不存储整个数据集的情况下,简洁地证明数据是数据集的一部分的有效性
  • 在不透露完整数据集或其子集的情况下,确保某个数据集包含在更大数据集中的有效性

Merkle 树广泛使用了单向哈希。

Merkle 证明通过将哈希与其对应的哈希一起进行哈希运算来建立,并沿着树向上攀升,直到获得公开的或已知的根哈希。

由于单向哈希旨在无冲突且是确定性算法,任何两个明文的哈希都不可能/不应该相同。

Merkle 证明通过以下示例可以更好地解释。

为了验证数据 [K] 是否包含在 Merkle 树的根中,我们使用单向函数对 [K] 进行哈希运算以获得 H(K)。

为了验证 K 的包含性,不必透露 K,同样地,数据 L 的哈希也可以透露而不会带来任何隐含的安全影响,依此类推。

H(K) 与未知数据集 L 的哈希值一起哈希,得到 H(KL)。

H(KL) 与 H(IJ) 一起哈希,得到 H(IJKL)。

H(IJKL) 与 H(MNOP) 一起哈希,得到 H(IJKLMNOP)。

H(IJKLMNOP) 与 H(ABCDEFGH) 一起哈希,得到 H(ABCDEFHGIJKLMNOP),这恰好是我们公开可用的 Merkle 根。

因此,我们通过使用 H(L)、H(IJ)、H(MNOP) 和 H(ABCDEFGH),证明了数据集 K 确实存在于我们的 Merkle 树中,而无需透露 K 或任何数据。

为了获得 H 的 Merkle 证明,我们需要 H(L)、H(IJ)、H(MNOP) 和 H(ABCDEFGH),通过这些我们可以一起得到 H(ABCDEFHGIJKLMNOP),从而证明 H(K) 是 Merkle 树的一部分,意味着数据集 K 确实是通用数据集 [A, B, C, … , N, O, P] 的一部分。

Merkle 树广泛用于证明大型数据集中的包含性,并且在大多数区块链应用中得到广泛应用。

参考资料:

希望这篇文章有所帮助且信息丰富。

感谢 erick calder 纠正错误。

祝一切顺利

  • 原文链接: medium.com/crypto-0-nite...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
prahaladbelavadi
prahaladbelavadi
江湖只有他的大名,没有他的介绍。