Zcash
Zcash - 樹狀態儲存在哪裡?
樹狀態儲存在哪裡?
換句話說,當一個 JoinSplit 事務被驗證時,錨點在哪裡被檢查?
查看<https://github.com/zcash/zcash/blob/master/src/primitives/block.h>讓我得出結論,承諾(即註釋)merkle-tree 未儲存在塊頭中。
它在 LevelDB 數據庫中嗎?
它用於儲存塊的樹根映射的資料結構是什麼?
任何具體參考程式碼的答案將不勝感激。
您是正確的,Sprout 承諾樹根 / 錨未儲存在塊頭中。它在一個塊到達時由每個節點計算,並儲存在塊索引中。
Sapling 承諾樹根儲存在塊頭中(在什麼
hashReserved
欄位中);節點根據塊內容檢查這一點,並拒絕頭部中具有無效根的塊。這將使輕客戶端的屏蔽地址支持更容易實現。從 Sprout 和 Sapling 樹根到 IncrementalMerkleTrees 本身的映射儲存在硬幣數據庫中,並且可以在任何有CCoinsView的地方訪問。