Mining-Pools

在聯合挖礦中,什麼是 pdiff、bdiff 和 ldiff?

  • May 2, 2016

在聯合挖礦中,似乎存在三個不同的使用難度術語。顯然,Stratum 協議使用bdiff,BTCGuild 使用pdiff,並且在這個 bitcointalk執行緒Ldiff中提到的各種 Scrypt 池中很常見。

pdiff, bdiff, 和的含義是什麼ldiff?它們有什麼不同?

pdiff、bdiff 和 ldiff 的含義是什麼?

這些數字是網路的目前難度。

  • bdiff是整個比特幣網路的目標難度。
  • ldiff是整個萊特幣網路的目標難度。
  • pdiff是您的游泳池的目標難度。

您可能知道,難度是衡量找到低於給定目標值的雜湊的難度。


它們有什麼不同?

bdiff 1 == pdiff 1 == ldiff 1,還是它們之間有什麼關係?

**TL;DR:**不。這違背了遇到多重困難的目的。

這是一個多部分的答案;我會嘗試以一種有意義的方式來劃分它。


比特幣

困難

比特幣網路具有全球區塊難度(bdiff)。有效塊的雜湊值必須小於或等於此目標。礦池也有一個特定於礦池的共享難度,設置共享的下限(pdiff通常為 1)。

計算

是如何bdiff計算的?

bdiff是基於已知散列的近似值,其中前 32 位為零,其餘為 1。

難度 = 難度_1_target / current_target

(目標是 256 位數字)

難度_1_target 對於衡量難度的各種方式可能有所不同。傳統上,它表示一個散列,其中前 32 位為 0,其餘為 1(這稱為“池難度”或“pdiff”)。比特幣協議將目標表示為精度有限的自定義浮點類型;結果,比特幣客戶通常以此為​​基礎來估算難度(這被稱為“bdiff”)。

該值如何儲存?

每個塊為其實際的十六進制目標儲存一個打包表示[…]。目標可以通過預定義的公式從中得出。例如,如果塊中的打包目標是0x1b0404cb,則十六進制目標是

0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000

請注意,該0x0404cb值是這種格式的有符號值。該欄位的最大合法值是0x7fffff,而最小的是0x008000。要獲得更大的值,您必須將其向下移動一個完整字節的正有效值。

如何計算(估計)bdiff

假設您的值為 1 ( 0x1d00ffff)

0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

那將是

0x00000000FFFF00000000000000000000000000000000000000000000000000000 /
0x00000000000404CB0000000000000000000000000000000000000000000000000
= 16307.420938523983

資源


萊特幣

困難

因為萊特幣是基於比特幣ldiff計算的bdiff。它是相對於已知散列(256 位數字,其中前 32 位為零,其餘為 1)的近似值。

計算

ldiff以同樣的方式計算bdiff是。

它們都具有最大值(基本上)和最小值 1/4096

因為萊特幣植根於比特幣,這也意味著ldiff它是一個近似值,而不是一個精確值。

資源


游泳池

困難

pdiff是相對於所討論的加密貨幣而言的。在比特幣和萊特幣礦池的情況下,它代表的是同一件事;但是,例如,在 Namecoin 池中,難度可能不是 1,或者可能會以不同的方式計算。這令人困惑,因為有問題的 256 位數字是0x1d00ffff. 該號碼最初沒有被稱為任何東西。但是,一旦開始聯合挖礦,它就通俗地稱為pdiff. 但它在聯合採礦之前就已經存在了。池子正好把它作為他們的目標難度,因為bdiff已經是一個東西,所以名字pdiff被換成了數字0x1d00ffff

請注意,礦池通常使用非截斷目標,並且通常使用 1 的難度。這意味著即使在相同的加密貨幣中,實際上也沒有明確的定義pdiff;但是,我知道沒有與這些規則相矛盾的池/池軟體,因為它們是可取的。請記住,任何人都可以讓他的游泳池做任何他想做的事。

pdiff是相對的。

計算

假設這是一個標準池,計算與 基本相同bdiff,但有一個例外:

假設目標值仍然是0x1d00ffff維基說池通常使用“非截斷目標”所以,而不是

0x00000000FFFF00000000000000000000000000000000000000000000000000000

我們得到

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

其中,當計算時,產生

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /
0x00000000000404CB0000000000000000000000000000000000000000000000000
= 16307.669773817162

資源

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