本文解释了Merkle Proofs的概念及其用途,通过一个实例详细说明了如何验证数据在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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!