Bitcoin-Core

探勘難度和前導零

  • April 8, 2019

我知道比特幣挖礦問題是找到一個字元串 s(前一個區塊的雜湊 + Merkle Tree Hash + nonce),使得sha256(s)n 個前導零,其中n決定了探勘難度。

探勘難度

根據Blockchain.Info的數據,目前的難度為 63,93,02,37,17,201。

在此處輸入圖像描述

**sha256()**的輸出是一個 16 位的十六進制值。

問題 1 上圖表示如果 N=4,則 16 位十六進制值中有 4 個零。那麼如果 N=16 是整個字元串預計只有零?請解釋使用此範例的困難。因此,如果 N=6393023717201 我如何期望 16 位長度字元串中有 63,93,02,37,17,201 個零?請解釋在這種情況下大量零的重要性。

問題2 為什麼在某個時間點難度會降低?

比特幣挖礦問題是找到一個字元串 s(前一個區塊的雜湊 + Merkle Tree Hash + nonce),使得 sha256(s) 有 n 個前導零,其中 n 決定了探勘難度。

首先澄清一下。string s(區塊頭)將包括前一個區塊頭的雜湊、默克爾根、隨機數、目標位、時間戳和隨機數。

因此,如果 N=6393023717201,我如何期望 16 位長度的字元串中有 63、93、02、37、17、201 個零?

這不是困難的表現方式。我們從難度為 1 的創世塊開始。在那個難度下,我們需要找到小於 的塊雜湊0x00000000ffff0000000000000000000000000000000000000000000000000000。目前目標雜湊發現塊頭小於0x0000000000000000002c071d0000000000000000000000000000000000000000. 所以你的難度數是genesis block header hash target/current block header hash target。這就是您獲得 6393023717201.863 的方式。

有關如何使用塊頭中的目標位確定塊頭雜湊目標的更多資訊,請參閱此處。

為什麼難度會在某個時間點降低?

在比特幣中,難度將平均出塊時間保持在 10 分鐘。如果礦工開始使用複雜的工具(例如 ASIC 晶片)以 10 分鐘以上的速度找到塊頭的解決方案,那麼每個 2016 塊都會調整難度,從而增加探勘塊所需的時間。如果礦工開始降低對複雜工具的投資,使 2016 年區塊的平均出塊時間超過 10 分鐘,那麼難度就會降低,從而使出塊時間更快。所有這些都是為了讓我們收斂到 10 分鐘作為平均塊探勘時間。

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