Mining-Pools

我如何使用雜湊率分佈來推斷特定池何時會找到一個塊?

  • April 26, 2020

礦工隨機發現區塊,但也與礦工的雜湊率成比例。我如何才能最好地預測和表達每個礦池的這種“機會”?

例如,如果 F2Pool 在過去一周擁有 10% 的總挖礦算力,那麼說他們可能會找到 10% 的區塊向前推進是否有意義?

表達這個概念的最佳方式是什麼?我希望能夠這樣說:

“F2Pool 有 10% 的機會在接下來的 10 分鐘內找到下一個區塊,而這在 10 個區塊之後接近 100%。即 F2Pool 在接下來的 100 分鐘內很有可能找到至少一個區塊。”

顯然,在接下來的 x 個塊中找到一個塊的機會永遠不會是 100%,那麼給出一個數字的公認方式是什麼,同時也帶有“或者可能永遠不會”的意思?

是否有 API 或庫可以用來計算/了解每個礦池隨時間推移的這些“機會”值?

例如,如果 F2Pool 在過去一周擁有 10% 的總挖礦算力,那麼說他們可能會找到 10% 的區塊向前推進是否有意義?

假設很多礦工不切換,是的。

“F2Pool 有 10% 的機會在接下來的 10 分鐘內找到下一個區塊,而這在 10 個區塊之後接近 100%。即 F2Pool 在接下來的 100 分鐘內很有可能找到至少一個區塊。”

你在這裡問了兩個微妙不同的問題。

  1. 我會找到下一個街區嗎?
  2. 我會在接下來的十分鐘內找到一個街區嗎?

你可以在十一分鐘後找到下一個街區。你可以在五分鐘內找到一個街區,建立在四分鐘前發現的街區之上。

我會找到下一個街區嗎?

這很簡單。如果你有 10% 的算力,你找到它的機率是 0.1。如果你有 p 比例的算力,(1-(1-p)^n)你就有可能在接下來的 n 個區塊中找到一個區塊。對於 10% 的雜湊率和 10 個區塊,這是 65% 的機會。遠非確定無疑。

p = 0.1
Blocks  Probability of you getting a block
0       0.00000
1       0.10000
5       0.40951
10      0.65132
30      0.95761
50      0.99485
100     0.99997

我們找到一個區塊的機率圖

我會在接下來的十分鐘內找到一個街區嗎?

塊發現遵循Poisson分佈。Poisson分佈代表一堆獨立的事件,其中一個事件的發生對其未來發生沒有影響。

我們想知道任何人在十分鐘內發現 k 個區塊的機率,平均每十分鐘有 1 個區塊。維基百科已經為我們準備了一張表格

k   P(k)
0   0.368
1   0.368
2   0.184
3   0.061
4   0.015
5   0.003
6   0.0005

但這並不是我們所需要的——如果找到十個塊,那麼其中一個是我們的比找到一個塊的可能性要大得多。乘以上面的表達式,用 k 代替 n,用 0.1(我們的算力比例)代替 p。

k   P(k)    P(k)*(1-(1-0.1)^k)
0   0.368   0.0000
1   0.368   0.0368
2   0.184   0.0350
3   0.061   0.0165
4   0.015   0.0052
5   0.003   0.0012
6   0.0005  0.0002
   Sum:    0.0949

總結最後一欄。我們有 9.49% 的機會,即如果您擁有 10% 的雜湊率,您將在接下來的十分鐘內獲得至少一個區塊的機會。但是,這並不意味著有 95% 的機會在 10 分鐘內以 100% 的雜湊率獲得區塊。它不是線性的。如果你有 100% 的雜湊率:

k   P(k)    P(k)*(1-(1-1.0)^k)
0   0.368   0.0000
1   0.368   0.3680
2   0.184   0.1840
3   0.061   0.0610
4   0.015   0.0150
5   0.003   0.0030
6   0.0005  0.0005
   Sum:    0.6315

…如果你擁有所有的算力,那麼你有 63.2% 的機會在接下來的 10 分鐘內出塊。

(我們的計算低了大約百分之二十分之一,因為我們沒有考慮像 k=7 這樣的情況。但我認為這是一個很好的近似值。)

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