Block-Header

在 prevBlockHash 中散列隨機數的原因是什麼?

  • July 27, 2016

我了解隨機數在塊頭中所起的作用,用於計算有效工作證明的雜湊值。

但我要問的是:我們在prevBlockHash計算前一個區塊時是否考慮 nonce,因為它已經在區塊頭中(用於工作量證明計算),編寫一個calcPrevBlockHash計算的函式會很愚蠢前一個塊的標題通過忽略隨機數?

prevBlockHash或者,在計算後續塊時,我們是否獲得了特定的安全屬性或保證?

例如,您可能會爭辯說我們對時間戳進行雜湊處理是因為我們想要擷取生成塊的時間。在這裡查看答案:為什麼是塊頭的時間戳組件?我想你可以為 nonce 領域爭辯。

但是我聲稱我們仍然可以在塊頭中保留隨機數,並且在prevBlockHash計算後續塊的過程中不對其進行雜湊處理,事情仍然可以正常工作。您仍然可以 (a) 驗證該區塊,並且 (b) 無法處理區塊中的交易,因為這會修改該hashMerkeRoot欄位,從而使該區塊無效。

發表評論後,我認為您的問題歸結為:

對於prevBlockHash一個區塊頭的欄位,在計算前一個區塊頭的雜湊值時,我們可以排除它的nonce值嗎?

我想不出這會導致任何實際或安全問題。除了 nonce 之外的所有內容的散列仍然可以證明來自該塊的所有重要數據,包括其中包含的交易,以及它自己的交易,它prevBlockHash通過引用包含所有先前的塊。

但是,這樣做沒有任何意義。我們已經必須計算包括隨機數在內的前一個標頭的雜湊值,以驗證它是適當難度的工作量證明。這樣做之後,我們不妨將此值用作所有用途的“塊 ID”,包括prevBlockHash. 計算不包括隨機數的不同雜湊值將需要更多程式碼、更多開發人員時間和更多計算時間;會增加散列程式碼本身的錯誤的可能性;當人們試圖跟踪程式碼的哪個部分使用哪個雜湊時,會導致很多潛在的混亂。據我所知,所有這一切都沒有任何好處。

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