Mining

為什麼難度會影響區塊頭隨機數範圍?

  • November 26, 2016

黃皮書第 4.3.4 節第 48 項指出,具有隨機數 n 必須是 lte 2^256/ current difficulty。這樣做的效果是,假設current difficulty< 2^256,nonce 的範圍變得更小,由於嘗試的 nonce 值更少,因此更容易驗證塊。這似乎與增加current difficulty. 我錯過了什麼嗎?

在那個等式中,fancyn並不是指 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分之一,或億分之一。

較高的難度導致找到低於目標的雜湊函式結果(來自隨機數隨機數+塊數據)的機率較低。

引用自:https://ethereum.stackexchange.com/questions/2207