Blockchain

隨著時間的推移,比特幣挖礦的數學問題如何變得越來越難?

  • September 19, 2020

隨著時間的推移,礦工提取比特幣的難度如何(不包括電腦能力的提高和礦工之間的競爭)?是否與在該時間戳可以提取的比特幣數量有關?

比特幣區塊鏈有一個屬性叫做“難度”或“目標”,用一個 32 字節的數字表示。對於一個有效的新塊(在許多其他事情中),它的雜湊值(另一個 32 字節數)必須在算術上小於目標。該目標值在每 2,016 個區塊週期後通過網路上所有完整節點執行的確定性算法進行調整。

想像一下,如果我讓你擲硬幣,如果你連續獲得 3 個“正面”,你就贏了。你需要多少次嘗試才能獲勝?一旦你贏了,我就改變難度:現在你必須連續獲得 4 個“正面”……這對你來說更難,需要更多的“計算”(嘗試)。

在比特幣中,難度調整算法會查看 2,016 個區塊週期開始和結束時區塊的時間戳。如果該時間大於兩週,則新的難度目標變得“更容易”。如果塊被開採得太快,難度會變得“更難”。

進一步閱讀:“一比一”難度錯誤到底在哪裡?

我能想到的最簡單的解釋方法是給你一個骰子(骰子)並說“如果你擲出的點數少於 6,我會給你 100 美元”。拿錢應該很容易吧?你輸的唯一方法就是擲出 6

現在,如果我將游戲更改為“擲出小於 2”,那麼您第一次就更難(不太可能)得到它,因為您必須擲出 1。

所以假設我的目標是讓你每分鐘贏得 100 美元,而你的速度足以每分鐘滾動 3 次。你開始滾動,我注意到難度設置為 5,你贏的頻率比每分鐘一次要多得多,所以我把難度數字調低(讓它變得更難)。假設我們達到了一個難度設置為“低於 3”的點,您平均每分鐘贏一次。然後,您的運氣確實很差,您需要 4 分鐘才能擲出少於 3 的點數——您只是在前 3 分鐘內不斷擲出 6 點。我想我會對你放輕鬆,我會再次提高難度數字,因為你的連勝紀錄很糟糕,所以我會讓你更容易獲勝。然後你開始做得很好,所以我開始再次減少數字。

定期,我會回顧你贏得最近比賽的平均時間,並決定是否調整難度,並上下調整以試圖讓你每分鐘贏一次。如果你滾得更快,我會讓遊戲變得更難。如果你讓你的朋友和你一起滾,我會讓它變得更難。如果你把骰子放一天然後擲出勝利,它會極大地影響平均獲勝時間,我可能會調整它,讓它更容易。


這使用 6 面骰子;參與比特幣的數量要高得多了 - 在寫作的難度時間大約為15,000,000,000,000和雜湊可以^ 224(約270,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000)0和2之間,但前提仍然是相同的 - 這是一個骰子27000 vigintillion邊和你必須滾動少於約 15 萬億。您可以購買每秒可滾動多達 16 萬億次的設備。有了豐厚的回報,您可以購買大量這些設備並用它們填滿倉庫,如果您負擔得起電費,則增加成為獲勝者的機率

擲骰子是為礦工決定打包到一個塊中的交易生成雜湊碼。

本質上,礦工用交易打包一個塊,計算雜湊,它大於難度,他們改變塊頭中的一個數字(而不是去打包另一個交易塊 - 這樣做的計算成本要高得多,但是將具有更改雜湊碼的預期效果,這是總體目標)稱為隨機數。所以我們改變nonce,重新做hash,是不是比難度小?不。更改隨機數,重做雜湊。檢查難度/更改隨機數/雜湊/檢查/更改/雜湊/檢查/更改..

最終會發生一些事情:

  • 我們找到了一個小於目前難度的雜湊值——快!將其發佈到網路並讓世界驗證工作,接受它,我們將獲得獎勵
  • 其他人發現一個雜湊值小於難度的交易塊,他們得到獎勵,他們打包的所有交易都完成/支付 - 我們需要從一個新的交易塊重新開始
  • 我們用完了隨機數(只有 40 億個),因為我們的散列速度非常快(事務塊的時間戳會增加,這也會改變雜湊碼,但即便如此,再加上 40 億個隨機數意味著如果我們散列的速度比 > 4gash/second 我們將在時間增加一秒之前用完隨機數,所以我們然後稍微修改一個事務,或者將其換成另一個事務)——即使是一個有效的單字節也需要任何東西塊中的更改將產生不同的雜湊碼,因此我們進行更改並繼續(可能使用隨機數更改方法返回)

那麼誰是難度應該是什麼的權威呢?與比特幣的其他任何東西一樣 - 每個人。網路決定難度,因為所有(或大多數)網路都是好演員,所以你不能作弊,你不能編寫一個用一些雜湊值聲稱獲勝的程序,因為其他人都會檢查工作和如果您欺騙了雜湊碼,或者謊稱低於難度,他們不會接受。就像賭場裡的其他人都看著你擲骰子,如果你擲出 6 卻大喊“我擲出 1!” 他們不理你

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