首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Merkle证明的实现

Merkle证明的实现
EN

Cryptography用户
提问于 2023-02-02 16:01:48
回答 1查看 54关注 0票数 -1

目前,我正在实现锈蚀中的Merkle树。我面临的问题之一是产生证明的复杂性。意思是我给验证者的向量,以检查是否存在一个元素。很多人说我应该横越树来找到元素的路径(如果元素是数据集的一部分),但是我不明白如果Merkle没有排序,它将如何工作。我是不是遗漏了什么?根据我的理解,最好的方法是找到叶子(如果它存在的话),然后找到你爬上树的路。在这种情况下,复杂度将是O(N)来生成。

提前感谢!

EN

回答 1

Cryptography用户

发布于 2023-02-02 18:11:38

根据我的理解,最好的方法是找到叶子(如果它存在的话),然后找到你爬上树的路。在这种情况下,复杂度将是O(N)来生成。

这里有两个步骤,不清楚您认为哪些可能需要O(N)时间。

第一步是查找叶;是的,如果您采用单独检查每个元素的方法,如果存在O(N)元素,这显然需要花费O(N)时间。另一方面,这并不一定是唯一可行的算法。如果我们有我们的N元素,那么我们可以构建一个数据结构(例如,一个哈希表)来快速查找元素,如果认为需要更快的查找的话。

第二步是生成身份验证路径;是的,生成整个Merkle树(以及计算根)将花费O(N)时间,而且没有办法解决这个问题。另一方面,一旦我们构建了树,我们通常可以保存中间节点的值。在最直接的方法中,我们只需保存所有中间节点;这需要O(N)内存;另一方面,构造身份验证路径只需复制适当的节点值,这可以在O(\log N)时间内完成。

票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/104034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档