Bitcoin-Core
比特幣中籤名記憶體的資料結構是什麼?
比特幣中有一個簽名記憶體,用於記憶體簽名驗證的結果,避免額外的簽名驗證。簽名記憶體中儲存了哪些數據?是以鍵值對的形式儲存還是以其他形式儲存?比特幣節點在進行區塊驗證時,如何確定一筆交易的簽名驗證結果已經在簽名記憶體中?
簽名記憶體基本上是一組公鑰、消息雜湊和簽名元組。當存在有效的公鑰、消息散列和簽名組合時,所有這些都與 SHA256 一起散列。然後將此雜湊插入簽名記憶體中。所以簽名記憶體只包含有效組合的雜湊值。驗證簽名時,公鑰、消息散列和簽名一起散列,並在簽名記憶體中查找生成的散列。如果它在那裡,則已知簽名是有效的,並且可以跳過實際的簽名驗證。
簽名記憶體本身不僅僅是一個集合。它實際上是一個 Cuckoo 記憶體,它是一種雜湊表,可確保在最壞的情況下進行恆定時間查找。