Block

以目前的算力,怎麼還需要 10 分鐘才能解出一個比特幣區塊?

  • September 4, 2017

不管難度有多高(或者目標有多低),我都不明白比特幣網路如何平均需要 10 分鐘來解決每個區塊。

對於任何給定的塊頭,nonce 只有 2^32 個可能的值。即使我們考慮到時間戳最多可以更改 1 小時(例如),也就是 3600 x 2^32 可能的組合,大約是 1.5e13

在 blockchain.info 上,它表示網路的目前雜湊率為 7,991,378,504 GH/s,這意味著每秒計算的雜湊值比目前塊頭可能產生的雜湊值多多個數量級.

那麼為什麼塊不是在幾秒鐘內解決的,而是大約需要 10 分鐘呢?

我知道礦工希望在一個區塊中包含盡可能多的交易以收取費用,因此有人可能會爭辯說最好等到一個區塊中有很多交易後再解決它。但即使這樣也沒有任何意義,因為無論如何,盡可能快地解決每個塊絕對沒有什麼可失去的。

挖礦基本上是這樣工作的:

  1. 做一個候選塊,嘗試所有的隨機數。
  2. 如果沒有產生有效塊,請更改 coinbase 交易中的某些內容。
  3. 從步驟 1 開始重複。

礦工收集交易,然後嘗試通過暴力破解隨機數來創建有效塊。創建塊的難度與有效塊可能具有的最大雜湊值有關。

例如,目前區塊鏈頭(在發佈時)的塊雜湊為 00000000000000000077d9c18fdbd5cf45b2652fe6db9089558eb8fc9fc3b397。如您所見,它有許多前導零,因為大多數高於此值的雜湊都被拒絕。使用 2^32 nonce 值和其他標頭欄位,您無法嘗試足夠多的塊來可能擊中任何足夠小的塊散列。礦工將交換交易中的一些字節(通常在 coinbase 中)以創建更多新的候選塊。

此外,不同的礦工將嘗試不同的區塊,因為他們應該有不同的 coinbase 交易接收者。

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