【问题标题】:How the get value function works in sparse merkle trees?get value 函数如何在稀疏 merkle 树中工作?
【发布时间】:2021-09-02 12:24:21
【问题描述】:

我刚刚开始阅读有关稀疏默克尔树的内容,并且遇到了一个函数(获取值),该函数用于查找指定键的值。我在互联网上找不到可以解释 get value 函数如何工作的解释。

我的理解是每个节点都是 256 位的,所以可以有 2^256 个叶子节点并且键被索引。所以我们从根开始,根据天气选择左节点或右节点,位为 0 或 1,但我无法理解 v = db.get(v)[32:] 语句。它如何引导我获得所提供密钥的价值?

def get(db, root, key):
    v = root
    path = key_to_path(key)
    for i in range(256):
        if (path >> 255) & 1:
            v = db.get(v)[32:]
        else:
            v = db.get(v)[:32]
        path <<= 1
    return v

【问题讨论】:

  • [32:] 是 32 之后的 python 切片。 [:32] 是之前所有的 python 切片。如果密码匹配,您就知道它在树的那一侧。
  • 我知道它是 python 切片,但为什么是 32? 32 是字节数。它在这里有什么关系?这是我的疑问。
  • db.get(v) 的数据类型是什么?细绳?可能是哈希是由特定块中的引用构成的。这些值不是指针,而是在特定区域重叠以帮助找到下一个。

标签: ethereum merkle-tree


【解决方案1】:

“Merkle 树 [21] 是一种二叉树,它结合了密码哈希的使用 职能。一个或多个属性被插入到叶子中,并且每个节点 派生一个摘要,该摘要递归地依赖于其子树中的所有属性。 也就是说,叶子计算自己属性的哈希值,父节点推导出 他们孩子的摘要从左到右连接的哈希。”

这是来自“https://eprint.iacr.org/2016/683.pdf”的引用

每个散列都有其所有相关散列的路线图。

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 2017-12-16
    • 2018-08-22
    • 1970-01-01
    • 2012-09-09
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多