重啟後礦工的工作會發生什麼?
我正在研究比特幣的內部結構,尤其是工作量證明。工作量證明基於數學問題,我們必須從產生帶有某個前導子字元串的雜湊的輸入中計算出來,我認為子字元串應該以一定數量的零開始。
我們使用 SHA-256 對目前輸入進行雜湊處理,因此我們需要計算 2^256。現在我的問題是,我們用交易和隨機數來散列前一個區塊鏈的散列?雜湊中是否還有其他內容?此外,如果第一次嘗試不成功,nonce 會因此而更改以計算新的雜湊?
還有幾個問題:a)如果我們開始向一個區塊添加交易,並且在我們的區塊之前創建了另一個區塊,我們的工作會發生什麼?我們從頭開始挖礦,還是繼續使用剩餘的交易進行挖礦?b) 此外,我們能否將交易為 0 的區塊包含在區塊鏈中?
現在我的問題是,我們用交易和隨機數來散列前一個區塊鏈的散列?
實際散列的資訊包括版本、上一個塊散列、礦工已包含在塊中的交易的默克爾根、目前時間、塊的目標難度和 32 位隨機數。這裡的其餘資訊是推斷出來的。
wiki上有更多關於塊格式的資訊。
此外,如果第一次嘗試不成功,nonce 會因此而更改以計算新的雜湊?
隨機數會增加,直到 32 位空間用完,此時標頭會被修改,以便為礦工提供不同的工作。目前,這可能每秒發生多次。
如果我們開始向一個區塊添加交易並且在我們的區塊之前創建了另一個區塊,我們的工作會發生什麼?
目前的工作被丟棄,礦工開始在已知的最高區塊頂部工作。
此外,我們能否將交易為 0 的區塊包含到區塊鏈中?
不,一個區塊必須包含一個包含礦工獎勵的交易,該交易可以是目前區塊獎勵上限的任何值,在撰寫本文時為 25BTC。1 交易塊很常見,因為它們不太可能成為孤立的(另一個是在鑄造塊穿過網路時創建的)。
是的,每次嘗試都會增加隨機數。我可能很迂腐,但雜湊是雙 SHA256 雜湊,例如 SHA256(SHA256(data))
查看<http://blockexplorer.com/rawblock/000000000000026190ebd9560f94b8d0534c6cd6fd585bf6fdb54610e6b676c3>以查看顯示標頭資訊的原始(成功探勘的塊)範例。
請注意,如果您溢出(達到最高計數)nonce,您只需更改時間戳或添加新事務,您可以將您的 nonce 重置回 0。
此外,不同礦池中的礦工在計算上不可能得出與區塊相同的默克爾根
如果我們開始向一個區塊添加交易並且在我們的區塊之前創建了另一個區塊,我們的工作會發生什麼?
你的工作失去/浪費了,每個人都開始探勘下一個區塊(包括之前區塊的雜湊)。
我們可以將交易為 0 的區塊包含到區塊鏈中嗎?
是的,您可以,但是您將丟棄(目前)25BTC 的區塊獎勵,因為區塊中的交易之一是要求獲得獎勵的交易。