簡體   English   中英

我正在嘗試實現merkle樹一致性證明,但我堅持理解算法

[英]I'm trying to implement a merkle tree consistency proof, but I'm stuck at understanding the algorithm

我正在嘗試用本文實現merkle樹一致性算法:

https://books.google.de/books?id=CokSDQAAQBAJ&lpg=PA147&dq=merkle%20consistency%20proof&hl=de&pg=PA148#v=onepage&q&f=false

但是,我有點堅持一致性檢查,因為當我執行ConsProofSub部分時,我總是處於無限循環中。

例:

新樹有8棵,老樹有7片葉子。

通過上一個函數,我得到m = 7 ,我的新樹的葉子為向量Etrueb

該函數通過遞歸代碼流,直到我們達到這種情況:

E現在有2元素,所以n = 2

m = 1 ,由於m < k的遞歸調用中的先前減法,以及b = false

如果mn不相等,我們不會落入m = n && b = false

k現在再次計算為2 ,因為上限正在將log2(n)/2的結果1/2校正為1

我們落入m <= k情況,再次,我們遞歸調用具有完全相同參數的函數。 現在我們處於無限循環中。

但是,我似乎無法弄清楚我做錯了什么。 我覺得k計算中的天花板是問題所在。 它基本上使得不可能離開循環,因為在一些迭代之后k似乎總是高於m

有什么建議/暗示我的錯誤嗎?

編輯:有趣的是,當n是奇數時,算法似乎工作得很好。 它似乎只為偶數而失敗。 我只是嘗試了一個新的7片葉子樹,它就像一個魅力,提供了證明一致性所需的正確節點。

但是,我仍然無法弄清楚要使它與偶數一起使用會發生什么變化。

書中似乎有一個錯誤。 m = nb = true需要單獨處理。 可以在RFC 6962中找到該算法的更詳細描述。

以下是如何解決它:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM