Blockchain
網路如何確切地知道礦工是否提出了有效的工作證明?
如果礦工需要做的就是找到一個帶有一定數量的區塊頭前導 0 的雜湊,他們難道不能找到一個具有所需數量 0 的隨機雜湊,而這不一定是區塊頭的雜湊? 節點怎麼知道?
節點究竟如何確定工作量證明是否有效?為此使用什麼協議?
當礦工創建一個新塊時,該塊包含一個塊頭。區塊頭用於將新區塊與之前的區塊相關聯,並提供交易摘要。具體來說,區塊頭包含:
- 版本字節
- 前一個區塊的區塊雜湊
- 送出區塊中所有交易的 Merkle 根
- 時間戳
- 對應目前難度的欄位
- 一個提供一些隨機性的隨機數。
這個塊頭只有 80 個字節的數據。當這 80 個字節通過 SHA-256d 一次時,它們會產生一個散列,我們將其用作塊的唯一標識符,即“塊散列”。塊雜湊用於向對等點宣布塊,並在下一個塊中送出給這個塊。解釋為數字的相同“塊雜湊”必須滿足難度要求(“具有一定數量的前導零”)。
您所說的是節點必須重新找到有效雜湊的工作。
不完全的!找到雜湊滿足難度的塊頭需要多次嘗試。由於除了散列和檢查之外無法預測哪個塊頭會成功,因此找到有效塊的事實證明已經花費了大量嘗試(目前平均約為 4,92×10²²)。我們將此概念稱為工作量證明。然而,工作的驗證只需要將提供的塊頭通過雜湊函式一次,然後將生成的雜湊與難度進行比較,這是微不足道的!事實上,這是其他網路參與者在收到新的候選區塊時所做的許多有效性檢查中的第一個。