Mining-Theory

“難度”的單位是什麼?

  • February 18, 2020

在不同的地方,例如這里這裡,隨著時間的推移,有關於比特幣挖礦“難度”的圖表。這些數字的確切解釋是什麼——它們是用什麼單位來衡量的?

我的第一個想法是“難度”是SHA256(塊+隨機數)中應該為零的位數。但是,在這種情況下,難度應該是 0 到 255 之間的數字,而這些站點顯示的數字要高得多。

我的第二個想法是 SHA256(block+nonce) 最多應該是 2^256-difficulty。但是,在這種情況下,它應該是一個整數,而這個連結顯示目前的難度級別不是一個整數。

那麼,“難度”這個數字究竟代表什麼?

難度是任何有效區塊可以包含的最小工作量證明 (PoW) 的倍數。在比特幣中,最小難度(稱為難度 1)在程式碼中由這個字節遮罩定義:

consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");

也就是說,雜湊必須以 8 個十六進制零開頭[*]。那是 4 個零字節,或 32 個零位。

如果你把這個難度加倍,那就是難度 2。再加倍,難度是 4,然後是 8,然後是 16。在難度 16 中,雜湊必須至少有 8 + 1 = 9 個零。再次將其翻倍,然後是 32,然後是 64,然後是 128,然後是 256。在難度 256 中,雜湊必須至少有 8 + 2 個零。等等…

在我寫這篇文章的時候,目前的難度是 4306949573981.513。我們可以通過取其二進制日誌,除以半字節(一個十六進製字元)中的 4 位並添加最小難度的八個零來查看對應的最小零:

log2(4306949573981.513) / 4 + 8
= 18.49245089279219

為了進行比較,這裡是最新的塊頭雜湊(為了便於閱讀,重新格式化為字節對)。正如預期的那樣,它有 18 個零。(注意:如果你在家裡做這個實驗,請注意雜湊總是允許有更多的零;他們不能少。)

0000 0000 0000 0000 0023 bfeb 3a02 1b25 7577 9256 7762 275e b72a d88b 7d50 d7f7

[*] 比特幣很奇怪。我們從大多數其他軟體向後顯示散列,因此如果您使用任何非比特幣軟體進行散列,則開始塊頭散列的零實際上位於末尾。

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