為什麼難度會影響區塊頭隨機數範圍?
黃皮書第 4.3.4 節第 48 項指出,具有隨機數 n 必須是 lte 2^256/
current difficulty
。這樣做的效果是,假設current difficulty
< 2^256,nonce 的範圍變得更小,由於嘗試的 nonce 值更少,因此更容易驗證塊。這似乎與增加current difficulty
. 我錯過了什麼嗎?
在那個等式中,fancy
n
並不是指 nonce。Hn
指nonce。這是完整的匯總方程式,可能會澄清它:
關於難度的更多資訊:
給定 [0,2^64) 範圍內的近似均勻分佈,找到解決方案的預期時間與難度成正比
Hd
。或者,更坦率地說:
這種機制在塊之間的時間方面強制實現穩態;最後兩個區塊之間的較小周期會導致難度級別增加,因此需要額外的計算,從而延長可能的下一個週期。相反,如果週期太大,則難度和下一個區塊的預期時間會降低。
所以。塊之間的時間更短=難度更大。
PoW 計算為一個數組,其中…
- 第一項:
Hn with the strikethru thingy
= mix-hash 以證明使用了正確的 DAG (d
)。Hn with the strikethru thingy
是塊的標題H
,但沒有隨機數和混合雜湊組件。- 第二項:(
Hn
隨機數)它是一個偽隨機數,在密碼學上依賴於H
(新塊頭)和d
(DAG)- 第三項:
d
= 目前 DAG。Vitalik 用更容易理解的語言在這篇博文中介紹了很多關於挖礦的內容。
這個想法是讓礦工重複計算一個塊和一個隨機數的偽隨機函式,每次嘗試不同的隨機數,直到最終某個隨機數產生一個以大量零開頭的結果。
所以……我知道這並不能完全回答你的問題,但我認為你最初問題的基礎是一個錯誤的假設,所以這個問題真的無法回答。(我想。我只是掌握了大部分內容。)
為了簡化答案,我將使用十進制數而不是十六進制數。而不是分子中的 2^256,我將使用 10^10(= 10,000,000,000)。
(A) 當難度設置為 1,000,000 時,“目標”是找到低於 10^10 / 1,000,000 的數字。這是 10,000,000,000 / 1,000,000 = 10,000 。我們必須在 0 到 10,000,000,000 之間找到一個低於 10,000 的雜湊函式結果。
(B) 現在讓我們將難度增加一百倍至 100,000,000 。“目標”是找到一個低於 10^10 / 100,000,000 的數字。這是 10,000,000,000 / 100,000,000 = 100 。我們現在必須在 0 到 10,000,000,000 之間找到一個低於 100 的雜湊函式結果。
nonce 是一個隨機數,它與其他塊數據資訊進行散列,得出一個散列函式結果,範圍在 0 到 10,000,000,000 之間。
在上面的 (A) 中,找到低於目標的雜湊函式結果(來自 nonce 隨機數 + 塊數據)的機率是 10,000 / 10,000,000,000,即百萬分之一。
在上述難度較高的(B)中,得到低於目標的雜湊函式結果(來自隨機數隨機數+區塊數據)的機率為100 / 10,000,000,000,即100,000,000分之一,或億分之一。
較高的難度導致找到低於目標的雜湊函式結果(來自隨機數隨機數+塊數據)的機率較低。