Difficulty
為什麼礦工不能通過為塊雜湊選擇低數字來解決困難?
就“工作量證明”而言,我的新手理解是,礦工們正在想出一個小於或等於目標雜湊值的 64 位十六進制數字“雜湊”。
通過輸入“63 個零後跟一個 1”,礦工不能總是低於目標嗎?
初學者在這裡,我為我的簡單理解道歉。
雜湊是在塊頭上計算兩輪 SHA256 的結果。如果您自己設置散列,當其他節點嘗試通過執行上述計算來驗證散列時,它不會(但是,有極小的機會)導致“63 個零後跟一個 1”。我建議閱讀散列函式。
創建有效散列的唯一可靠方法是在實際塊頭上不斷計算散列,同時修改塊的內容以使塊仍然有效(例如隨機數、交易、塊版本等),但給出您進行了很多嘗試(猜測),直到獲得有效的輸出。它基本上是暴力破解,因此擁有快速、高效的挖礦硬體是一個優勢。
另請參閱:塊散列算法
正如@stewbasic 在評論中簡潔指出的那樣:
礦工不選擇雜湊。礦工選擇一個標頭,從中計算雜湊。
區塊雜湊是使用 SHA-256d 對區塊頭進行雜湊處理的摘要。此摘要在解釋為數字時必須滿足難度要求,並且由於它是唯一的,因此也用作塊的標識符。
不能任意選擇散列,因為這需要您恢復散列函式。這與密碼散列函式的原像抗性屬性相矛盾,該屬性指出:
給定一個雜湊h,很難找到一條消息m,其中h = hash(m)。
事實上,試圖找到一個具有特定前綴的區塊的工作量證明難題本質上是要求礦工解決一個更容易的子問題:找到一個部分原像。
總之,礦工選擇區塊雜湊的唯一實用方法是找到其摘要符合難度陳述的區塊頭。