比特幣挖礦,到底是在挖什麼?

買賣虛擬貨幣

比特幣挖礦,到底是在挖什麼?比特幣挖礦其實就是製造新區塊的過程,製造新區塊就是把最近收到的帳單打包在剛製造的區塊裡。這個打包的過程即製作的過程,只有極其稀少的機率被製造成功。一旦製造成功,你就把新的區塊廣播出去。 因為是p2p網路,可能有許多人都在同時製造新的區塊,但有一個排序機制保證只有最優的那個新區塊被網路群體接受,掛在全域性的區塊鏈上。重複一次,整個比特幣網路只有一個全域性帳單表,每個節點都完整的儲存有一份。

節點向網路廣播交易,這些廣播出來的交易需要礦工的驗證,礦工們會用自己的工作量證明來確認,確認後的交易會被打包到區塊中,區塊會串聯起來形成區塊鏈。而在這個過程中要計算一個關鍵的資料項即區塊頭裡面的Nonce隨機數,當一個礦工找到符合要求的解,那麼它就會向全網廣播自己的結果。其他節點可以檢驗其是否符合規則。只要其他節點透過計算hash值發現其確實滿足要求,那麼該資料塊就是有效的,其他節點就會接受該資料塊,並將其附加在自己的鏈之後,從而來延續比特幣的區塊鏈。

比特幣有一個全域性的區塊難度,難度每產生2016個塊就會改變一次,挖礦所求解的Nonce隨機數必須小於給定的目標hash值。而目標hash值是可以透過程式裡預先定義的公式計算出來。之前說過難度每經過2016個區塊就會改變一次,這是因為比特幣網路要保證大約每10分鐘產生一個塊的出塊速率,再結合每4年減半這樣就可以保證在2140年產生總量2100萬的比特幣。注意,這裡是大約是每10分鐘出一個塊,所以大家在Blockchain遊覽比特幣區塊時可以發現有的時候不到10分鐘就出了一個塊,有的時候出一個塊用了遠遠不止10分鐘。比特幣程式會再每經過2016個塊後檢查一次,所花的時間是否為2周,如果大於兩週則難度值會調低,小於兩週難度值會調高。最終保證大約10分鐘出一個塊。

“挖礦”只是戲稱,實際上礦工在爭取“打包權”

比特幣基於區塊鏈技術。比特幣的區塊鏈網路每十分鐘就產生一個區塊。這個區塊的內容就是在之前的區塊的內容之上加上過去十分鐘整個區塊鏈網路的全部交易。完成這個工作被稱為打包。完成這個工作的人被稱為礦工,這個工作的過程被稱為了“挖礦”。那麼打包有什麼好處呢?獲得打包權並且完成打包之後,這個礦工就會獲得12.5個比特幣(比特幣的數量會慢慢遞減的)。按照現在的比特幣價格,每十分鐘就有人獲得12.5w美元的呢,獲利豐厚。

“挖礦”的實質就是爭奪打包權

礦工不止一個,到底怎麼決定給那個礦工呢?中本聰在設計比特幣的區塊鏈網路中,使用一種方法叫工作量證明(Proof Of Work,簡稱POW)來決定“打包權”,工作量證明,簡單理解就是一份證明,用來確認你做過一定量的工作。監測工作的整個過程通常是極為低效的,而透過對工作的結果進行認證來證明完成了相應的工作量,則是一種非常高效的方式。

舉個栗子:

舉一個例子,我們去往企業進行應聘的時候,那麼招聘方就會要求我們亮出相應的證據:畢業證、學位證、作品等。這些證據都有有一個特點,那就是招聘方很容易驗證的,但是你需要付出大量的努力才能獲取這種技能和證書。這就是工作量證明的一個簡單的例子,爭奪比特幣打包權的需要拿出一個雜湊碼。這個雜湊碼運算最好的方法就是窮舉法。最快獲得這個雜湊碼的礦工就獲得打包權。

那麼,用什麼運算是最好的呢?沒錯就是顯示卡。顯示卡天生就適應大規模的並行運算。如果CPU是幾個博士,那麼顯示卡一大群小學生。博士雖然厲害,但是雜湊碼運算對與他們來說就是小學生的四則運算,顯示卡足夠應付。小學生勝在數量多,所以雜湊碼運算就比CPU快。所以大家都用顯示卡挖礦(礦機的本質就是一臺電腦。不過插入很多顯示卡,並行運算能力最大化。

記賬權是什麼?

比特幣的背後是一個公共賬本,這個賬本每十分鐘需要重新記錄一遍,而成功記賬者會獲得一定數量比特幣的獎勵。在比特幣誕生之初,這個獎勵是50個比特幣,這一數字大約每4年減半,目前比特幣的增長速度是每10分鐘12.5個比特幣。按現在比特幣的市價,這個獎勵價值12.5個*1.2萬美元*6.54人民幣/美元=100萬人民幣。可想而知,誰不想去記這個賬呢?畢竟成功記賬可以獲得一百萬的獎勵呢。那怎麼決定誰來記賬呢?答案就是挖礦。誰先挖出來歸誰。

為什麼要讓大家爭奪記賬權呢?

在具體解釋記賬權怎麼爭奪之前,我想先稍微解釋一下為什麼需要存在一個記賬權的爭奪。從比特幣設計上來說,因為賬本需要常常更新,所以要有人記賬。但是不發工資又怎麼會有人給你記賬呢?所以比特幣就設定了獎勵機制,給成功記賬者一定量的比特幣獎勵。既然有獎勵,就會有人爭奪獎勵咯。

記賬權怎麼爭奪呢?

其實很簡單,就是算數:找一個數,使得它經過一次雜湊對映之後足夠小。因為雜湊對映對於輸入值很敏感,所以尋找合適的答案的唯一方法是暴力破解——一個一個數試。這裡沒有更聰明的辦法,算得更快的礦工就更有機會獲得記賬權。多說一句。根據前面的描述,好像每次的問題都是一樣的,那為什麼需要每十分鐘爭奪一次記賬權呢,直接用之前的答案不就好了麼?其實,這裡能被接受的答案,除了雜湊值要足夠小以外,還需要滿足別的特定條件。答案的某個部分必須和上一次記賬的部分資訊一致。因為這部分資訊只能在上一次記賬結束時才能獲得,所以新一輪的爭奪是同時開始的:大家在上一次的記賬結束後,依照約束,尋找新的答案。

要理解挖礦,先得理解分散式記賬

假設有5個人,為了記錄相互之間的資金往來,設立了一個賬本,這個賬本由張三管理並及時更新記錄。這種形式就是“中心記賬”。這種方式存在問題:張三可能會做假。例如給自己的賬戶上多加點,給別人的少加點。

如果每個人都有張三那樣的賬本,每次資金往來需要在每個人的賬本上都進行記錄,那麼誰都無法做假了。這種方式就叫“分散式記賬”。

比特幣中的挖礦,其實就是參與比特幣體系的分散式記賬。系統每隔10分鐘會產生一定數量的比特幣,參與記賬的工作量越大,獲得系統新產生的比特幣的機會就越大。因為參與記賬有可能獲得比特幣,所以俗稱“挖礦”。

區塊鏈本身解決的問題是人為創造出來了,難度會隨著礦工工作效率的提高而變難,本身的運算過程沒有任何實際意義,比特幣只是產於運算的一組資料。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;