Zcash

Zcash - 樹狀態儲存在哪裡?

  • June 13, 2018

樹狀態儲存在哪裡?

換句話說,當一個 JoinSplit 事務被驗證時,錨點在哪裡被檢查?

查看<https://github.com/zcash/zcash/blob/master/src/primitives/block.h>讓我得出結論,承諾(即註釋)merkle-tree 未儲存在塊頭中。

它在 LevelDB 數據庫中嗎?

它用於儲存塊的樹根映射的資料結構是什麼?

任何具體參考程式碼的答案將不勝感激。

您是正確的,Sprout 承諾樹根 / 錨未儲存在塊頭中。它在一個塊到達時由每個節點計算,並儲存在塊索引中。

Sapling 承諾樹根儲存塊頭中(在什麼hashReserved欄位中);節點根據塊內容檢查這一點,並拒絕頭部中具有無效根的塊。這將使輕客戶端的屏蔽地址支持更容易實現。

從 Sprout 和 Sapling 樹根到 IncrementalMerkleTrees 本身的映射儲存在硬幣數據庫中,並且可以在任何有CCoinsView的地方訪問。

引用自:https://bitcoin.stackexchange.com/questions/72376