Nonce

為什麼中本聰不讓 nonce 空間更大?

  • December 18, 2014

我知道 Satoshi 不再問了,所以這可能是徒勞的,但我希望有人對此有所了解。

比特幣挖礦通常使用一個額外的隨機數(bnExtraNonce在 coinbase tx 的 scriptSig 中)和一個隨機數欄位(32 位)。為什麼中本聰不只是讓 nonce 欄位更大,然後甚至不需要bnExtraNonce? 是否有某些原因需要將 nonce 欄位保持為 32 位?似乎在塊頭中有一個 64 位整數會更簡單。即使他擔心有一個超過 32 位的整數,標題也可能只是被解釋為兩個 32 位整數nonce1nonce2.

這個問題有很多很好的答案。在閱讀完它們之後,我也將嘗試回答。

coinbase 交易的 coinbase 欄位(因為它被稱為)實際上只是一個 scriptSig,它不需要通過任何關於其內容的驗證(除了它小於 100 字節,以及較新的 BIP34 要求)。中本聰知道你可以在這裡放任意內容,因此他在創世區塊的 scriptSig 中放了一個及時的新聞標題:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”。像這樣的消息還有助於確認沒有進行預探勘,因為在文章發布日期之前無法將消息放入區塊中。

我認為 Satoshi 認為 32 位 nonce 空間是多餘的。一台標準電腦,比如我正在寫這篇文章的那個,可以達到大約 3 MH/s,這大約是通過單個 nonce 範圍的 0.07%,然後你可以增加 nTime 並獲得一個全新的 nonce 範圍。這並不是說中本聰認為只會有單個電腦 CPU 挖礦(這篇文章表明他沒有),但我敢打賭,他認為在這種情況下每個礦工都有自己的地址。

我不認為 Satoshi 設想池會發生,尤其是在它們今天存在的相當集中的方式中,並且當雜湊算力變得足夠大時,礦池才利用 coinbase 領域的靈活性(有點像黑客)每秒超過一個隨機數範圍。

從協議規則來看,沒有額外的 nonce 之類的東西。

塊頭中只有一個 32 位的隨機數(可以非常快速地迭代),而 coinbase 輸入中最多有 100 個任意字節。參考客戶端內的塊生成程式碼傳統上會在這些任意字節中放置一個“額外的隨機數”,但內容可以是任何內容。

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