作者 | Samantha Ouyang

當我第一次了解比特幣挖礦的時候,我認為它很簡單,就像坐在家裡,做著我想做的事情,而我的電腦會投入工作,在我睡覺的時候賺錢。

但不完全是。事實證明,還有很多原因使得上述情況完全不可能發生。

但為了理解其中的原因,我們首先必須理解挖礦的整個概念,以及它在加密貨幣方面的意義。

挖礦是什麼?

從本質上講,挖礦就是創建新的區塊,用交易記錄填充它們,並將它們添加到區塊鏈中,讓每個人都能看到,並就特定的貨幣是如何使用的這件事達成一致。

然而,為了添加一個區塊,礦工必須解決一個“加密謎題”,或者用更專業的術語來說,他們必須得到一個有效的塊Hash。

我不會講太多的Hash函數相關的知識,但簡單地說,Hash是拿到區塊的所有信息,然後把它處理,直到它返回一個與此前內容沒有任何關係的隨機的字母和數字64位十六進制數。

如果你改變了區塊上的任何數據,隨機數將會有很大的不同,但如果什麼都沒有改變,它將總是返回相同的內容。

但是如何知道Hash值是否有效呢?這就是難度目標的由來。目標描述一個閾值,並且要使Hash有效,該值必須小於目標。

你可能會問,如果不能更改交易信息,如何獲得不同的Hash值呢?在創建Hash時,區塊中還有另一個因素要考慮進去——你可以修改它,它被稱為nonce。

資料來源:Khaled Salah

礦工們一直在為了這個數字努力,直到輸出的Hash值小於目標值。因為Hash值是隨機的,所以目標越低,就越難找到一個有效的Hash值。就像擲骰子一樣,擲一個小於3的數字比擲一個小於4的數字更難。

那麼你如何確定目標的價值呢?這個問題的答案就是我們今天要討論的話題:挖礦難度。

什麼是挖礦難度?

這是不言自明的,但是挖礦的難度僅僅是指為區塊找到一個有效的Hash值有多麼困難和耗時。一個更好的問題應該是,為什麼挖礦一開始就需要有難度?  

區塊鏈的全部意義在於在網絡中的多個個體之間建立共識,也就是說在一個真理上達成一致。它們是如何做到這一點的呢?它們取網絡中最長的有效鏈,這取決於向它投入了多少工作(計算Hash值所花費的時間),並接受它作為構建的主鏈。  

有了這個難度,就可以確保網絡的安全性,因為它可以防止欺詐。如果添加區塊很容易,那麼有人可能會發送欺詐性交易,然後向網絡發送垃圾郵件,以創建他們自己的最長鏈。然而,由於挖礦困難,為了防止垃圾信息,添加塊的過程變慢,平均需要10分鐘來挖掘一個塊。  

這裡的棘手之處在於,攻擊者可以通過尋找增加計算能力的方法輕鬆繞過這一困難。幸運的是,我們提前想好了,想出了一種方法讓系統控制困難。  

挖礦難度如何確定?

定期調整難度,以確保總是平均需要10分鐘來挖掘一個區塊。在每添加2016個區塊後,系統會查看創建這些2016個區塊所花的時間。正常情況下,需要2週左右,或20160分鐘。如果超過兩週,難度就會降低,如果不到兩週,難度就會增加。難度可以如下確定。

推導出新難度的公式 

正如你可以從反比函數中看到的,如果花費的時間超過2週,分數將小於1,新難度將會減少。如果花的時間超過2週,分數就會大於1,新的難度就會增加。  

如果難度降低,目標值就會增加,從而更容易找到有效的散列,反之亦然。最大目標值為1,由此可見難度也與目標值成反比。

難度與目標的關係

為了防止突然的變化,難度的增加或減少不能在一次調整中超過4倍。  

但回到我們如何想出目標的問題上,我們需要探索影響挖掘區塊所需時間的不同因素。  

有兩件事可能會影響這段時間:  計算能力、網絡中個體的數量 

計算能力 

在比特幣的早期,你可能已經能夠成功地進行挖礦,就像我過去認為的人們所做的那樣——用他們的個人電腦。然而,礦工很快被迫升級。

由於挖礦本質上是一場競賽,人們競相首先找到Hash值並獲得獎勵,那些擁有更強大計算機的人將能夠在同一時間內做出更多計算結果,因此獲勝的機會也會更高。  

升級一開始只是簡單的從CPU到顯卡的轉換,但近年來,升級的幅度要大得多,現在所謂的ASIC(特定應用集成電路)--一種專門為挖礦而設計的器件--已經是能夠參與競爭所需的最低限度。  

但即便如此,你也不太可能賺到任何東西。目前,你可能需要40年才可以開採一個區塊。如果你想賺錢,你可能必須加入一個礦池——礦工們聯合起來增加他們獲勝的可能性。  

考慮到所有這些進步和計算機不斷變得越來越快的事實,為了跟上它們並保持10分鐘的平均速度,挖礦難度必須補償這一點。  

網絡的規模等等,但我們並不是每兩週就有更快的電腦,對吧?雖然計算機的不斷改進是需要調整機制的主要原因,但該系統也對網絡中的個體數量進行了補償。

礦工越多,找到一個有效Hash值所花的時間就越少,因為在相同的時間內會進行更多的計算結果。因此,當有更多礦工在場時,困難增加,當礦工更少時,困難減少。  

總結

所以回到我們一開始的地方--在今天這個時代,用你的PC挖比特幣幾乎是不可能的,原因是由於設備升級和網絡規模增大所做的補償,導致挖礦難度不斷增加。你的PC根本沒有計算能力再跟上其他人的腳步,所以你能夠成功挖出一個區塊的機率非常非常低。  

即使系統的設計是為了降低難度,但很少會這樣做。更快、更強大的設備不斷被開發出來,同時越來越多的人加入了比特幣網絡。事實上,自2009年1月比特幣誕生到2020年11月,已經有250次難度增加,只有53次難度降低。