我正在尝试用这篇论文实现默克尔树一致性算法:
但是,我有点卡在一致性检查上,因为当我执行 ConsProofSub 部分时,我总是陷入无限循环。
例子:
新树有8
, 老树有7
叶子。
通过前面的函数,我获得了 m = 7
,我的新树的叶子作为矢量 E
和 true
作为b
.
函数通过递归代码流,直到我们到达这种情况:
E 现在有 2
元素,所以 n = 2
.
m = 1
,由于递归调用中先前的减法 m < k
,以及 b = false
.
我们不属于 m = n && b = false
如果,作为 m
和 n
不相等。
k
现在再次计算为 2
,因为上限正在纠正结果 1/2
来自 log2(n)/2
至 1
.
我们陷入了m <= k
情况下,我们再次使用完全相同的参数递归调用该函数。现在我们处于无限循环中。
但是,我似乎无法弄清楚我做错了什么。我感觉像天花板在k
计算是问题。它基本上不可能脱离循环,因为k
似乎总是高于m
经过一些迭代。
对我这里的错误有什么建议/提示吗?
编辑:有趣的是,当 n 为奇数时,算法似乎 可以完美运行。它似乎只对偶数失败。我刚刚用一棵 7 片叶子的新树对其进行了尝试,它的效果非常好,提供了证明一致性所需的正确节点。
但是,我仍然无法弄清楚必须进行哪些更改才能使其适用于偶数。
最佳答案
关于algorithm - 我正在尝试实现一个 merkle 树一致性证明,但我坚持理解算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41674058/