【问题标题】:Which hashes are needed in a Merkle tree?Merkle 树中需要哪些哈希?
【发布时间】:2016-02-10 13:11:19
【问题描述】:

当您拥有一棵 Merkle 树时,验证一个叶节点的更改所需的最小哈希数是多少?

我的理解是否正确,首先,只需要顶部哈希(Merkle 树根或 Merkle 树根的哈希)?然后一旦修改了叶子,您需要在下降到被修改的叶子节点时获取“访问”的每一行的哈希?

所以如果一个根有十个孩子和一个孙子被修改,我想验证那个特定的孙子,我需要获得新的 merkle 根哈希,十个孩子的哈希和孙子的父母的孩子的哈希值。

所以在每次修改时,您总是需要至少获取第一行的所有哈希值? (否则如何重构和验证 merkle 根哈希?)

【问题讨论】:

    标签: hash tree merkle-tree


    【解决方案1】:

    一般来说,Merkle 树并没有被设计来指示哪个哈希值实际上是不正确的。相反,它可以在大型数据结构上获得有效的散列。每个叶节点的哈希可以单独计算(当然,每个分支也可以,虽然这只是哈希)。

    如果你想验证哪个节点是无效的,你应该保留整个 Merkle 树。如果您有另一方进行计算,您确实可以下降到树的一个分支以找到更改的叶节点。

    【讨论】:

    • 如果只有根哈希,如何深入到树中?
    • @streetlight 你没有。根据定义,安全散列仅显示散列消息是否相等。哈希是一种单向函数。 根据定义,它不会泄露任何其他信息。如果要对已更改的内容进行更深入的分析,则需要更深的节点。如果您只有根哈希,那么节点的分离被认为很重要(例如出于性能原因或数据分离),但哪个节点对不正确的哈希负责。
    • 请注意,Merkle 树主要用于性能原因,即您可以使用多个线程或进程来计算根节点(或整个分支,如果树有中间节点)的哈希值。跨度>
    猜你喜欢
    • 2020-10-28
    • 2021-05-21
    • 2022-08-21
    • 2023-03-31
    • 1970-01-01
    • 2011-03-25
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多