Getwork
什麼是額外的Nonce?
這個問題有助於辨識 getwork“數據”欄位的各個組成部分,但我很好奇 extraNonce 來自哪裡。我的預感是它是數據後半部分的前四個字節,因為我相信這仍然是 Merkle 根的一部分(然而,在數據的後半部分,它不會是中間狀態的一部分) . 它是否正確?如果是這樣,如何增加 extraNonce,這樣做意味著什麼?
範例 getwork 數據:
00000001a10bacc7e639d1c69a01014bc5db6f2604b3477a3f273a4e019a232700000000a5942372cc60477c8a276e59c8f1a3f58654ea2f6c4402bf1b18e48455b5b8f64f10868b1c07475200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
55b5b8f6
是額外的Nonce(我知道小端),?
extraNonce 被放入生成交易的輸入中。getwork 客戶端看不到交易,因此他們無法更新 extraNonce。一些礦工反而稍微修改 nTime 以給他們更多的 nonce 空間。
比特幣使用extraNonce,但它不是協議的一部分。區塊或交易中沒有 extraNonce 欄位。
這真的幫助我理解了它:
一個單獨的礦工增加 Nonce 直到它溢出。然後它增加 extraNonce 並重置 Nonce。extraNonce 位於 coinbase 交易中,因此更改它會改變 Merkle 根。extraNonce 根據時間重置。