Hash

鑑於找到一個塊的機率和所花費的時間,我可以推斷出雜湊率嗎?

  • March 11, 2016

我試圖僅根據我分配的任意定義的目標從外部計算給定礦工的雜湊率,然後計算找到它的機率。一旦計算出這個機率,我想估計(平均)需要多長時間才能找到一個塊。

這是一件可行的事情嗎?

確定雜湊率所需的數學是什麼?

範例:假設目標為 1,礦工在 10 分鐘內送出了區塊。

據我了解你的問題有兩個部分。一個是如何從外部計算某人的雜湊率的近似值,例如從可以看到他們的探勘結果但看不到他們的實際雜湊過程或雜湊率的伺服器或代理。另一部分是如何計算在給定的工作量或給定的時間和雜湊率後找到塊的機率。

我將把公式寫成 javascript 程式碼,X 的 Y 次方寫成 Math.pow(X, Y)。您可以通過在地址欄中鍵入它們來在瀏覽器中執行它們,例如javascript:alert((Math.pow(2, 32) * 27939) / 600)

雜湊率的近似值:

對於任意目標,在難度 X 中計算一個份額與在難度 1 中計算 X 個份額相同。這就是礦池處理可變難度的方式。

hashrate = (Math.pow(2, 32) * share ) / seconds-elapsed

對於每個 Math.pow(2,32) 散列,平均找到一份(難度為 1)。這只是一個平均值,這就是為什麼在礦池網站上顯示的雜湊率只是近似值。

塊解機率:

從給定數量的共享中生成一個或多個塊的機率(工作證明):

prob = 1 - Math.pow(1 - 1.0 /難度,分享)

那是從 0 到 1。如果需要百分比,請乘以 100。

假設難度為 4367876,有人以 200 Ghps 的算力挖礦了 10 分鐘。即每秒 200 * Math.pow(10, 9) 散列,持續 600 秒,平均每個 Math.pow(2,32) 散列找到一份(難度為 1)。這給了我們以下資訊:

份額 = (200 * Math.pow(10, 9) * 600) / Math.pow(2,32) = 27939 股

prob = 1 - Math.pow(1 - 1.0 / 難度,份額) = 1 - Math.pow(1 - 1.0 / 4367876, 27939) = 0.00637…

換句話說,某人在 10 分鐘內以給定的雜湊率和難度製作一個或多個區塊的機會約為 0.64%

注意:如果您看到他們發送了多少份額(工作證明),當然您不會首先計算他們的雜湊率,只是為了將其計算回份額數量。只需將其插入公式即可。

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