比特幣如何挖礦(挖礦原理)-工作量證明

最新內容會更新在主站深入淺出區塊鏈社區
原文鏈接:比特幣如何挖礦(挖礦原理)-工作量證明

區塊鏈記賬原理 一篇,我們了解到記賬是把交易記錄、交易時間、賬本序號、上一個Hash值等信息計算Hash打包的過程。
我們知道所有的計算和存貯是需要消耗計算機資源的,既然要付出成本,那節點為什么還要參與記賬呢?在中本聰(比特幣之父)的設計里,完成記賬的節點可以獲得系統給與的一定數量的比特幣獎勵,這個獎勵的過程也就是比特幣的發行過程,因此大家形象的把記賬稱為“挖礦”,本文將詳細討論這個過程。

記賬工作

由于記賬是有獎勵的,每次記賬都可以給自己憑空增加一定數量的個比特幣(當前是12.5比特幣,博文寫作時每個比特幣是4萬人民幣以上,大家可以算算多少錢),因此就出現大家爭相記賬,大家一起記賬就會引起問題:出現記賬不一致的問題,比特幣系統引入工作量證明來解決這個問題,規則如下:

  • 一段時間內(10分鐘左右,具體時間會與密碼學難題難度相互影響)只有一人可以記賬成功
  • 通過解決密碼學難題(即工作量證明)競爭獲得唯一記賬權
  • 其他節點復制記賬結果

不過在進行工作量證明之前,記賬節點會做進行如下準備工作:

  • 收集廣播中還沒有被記錄賬本的原始交易信息
  • 檢查每個交易信息中付款地址有沒有足夠的余額
  • 驗證交易是否有正確的簽名
  • 把驗證通過的交易信息進行打包記錄
  • 添加一個獎勵交易:給自己的地址增加12.5比特幣

如果節點爭奪記賬權成功的話,就可以得到12.5比特幣的獎勵。

工作量證明

{% post_link whatbc 區塊鏈記賬原理 %}我們了解到,每次記賬的時候回把上一個塊的Hash值和當前的賬頁信息一起作為原始信息進行Hash。
如果僅僅是這樣,顯然每個人都可以很輕松的完成記賬。
為了保證10分鐘左右只有一個人可以記賬,就必須要提高記賬的難度,使得Hash的結果必須以若干個0開頭。同是為了滿足這個條件,在進行Hash時引入一個隨機數變量。

用偽代碼表示一下:

# 沒有難度時為:Hash(上一個Hash值,交易記錄集) = 456635BCD
Hash(上一個Hash值,交易記錄集,隨機數) = 0000aFD635BCD

我們知道改變Hash的原始信息的任何一部分,Hash值也會隨之不斷的變化,因此在運算Hash時,不斷的改變隨機數的值,總可以找的一個隨機數使的Hash的結果以若干個0開頭(下文把這個過程稱為猜謎),率先找到隨機數的節點就獲得此次記賬的唯一記賬權。

計算量分析

(這部分可選閱讀)我們簡單分析下記賬難度有多大,
Hash值是由數字和大小寫字母構成的字符串,每一位有62種可能性(可能為26個大寫字母、26個小寫字母,10個數字中任一個),假設任何一個字符出現的概率是均等的,那么第一位為0的概率是1/62(其他位出現什么字符先不管),理論上需要嘗試62次Hash運算才會出現一次第一位為0的情況,如果前兩2位為0,就得嘗試62的平方次Hash運算,以n個0開頭就需要嘗試62的n次方次運算。我們結合當前實際區塊#493050信息來看看:

區塊#493050

注:數據來源于https://blockchain.info
我們可以看到Hash值以18個0開頭,理論上需要嘗試62的18次方次,這個數是非常非常巨大的,我已經算不清楚了,應該是億億級別以上了。如此大的計算量需要投入大量的計算設備、電力等,
目前應該沒有單礦工獨立參與挖礦了,基本都是由礦工聯合起來組成礦池進行挖礦(礦池里的礦工按算力百分比來分收益)。

從經濟的角度講,只有挖礦還有收益(比特幣價格不斷上漲也讓收益變大),就會有新的礦工加入,從而加劇競爭,提高算力難度,挖礦就需要耗費更多的運算和電力,相互作用引起最終成本會接近收益。

題外話:國內由于電力成本較低,相對收益更高,中國的算力占整個網絡的一半以上

驗證

在節點成功找到滿足的Hash值之后,會馬上對全網進行廣播打包區塊,網絡的節點收到廣播打包區塊,會立刻對其進行驗證。

如果驗證通過,則表明已經有節點成功解迷,自己就不再競爭當前區塊打包,而是選擇接受這個區塊,記錄到自己的賬本中,然后進行下一個區塊的競爭猜謎。
網絡中只有最快解謎的區塊,才會添加的賬本中,其他的節點進行復制,這樣就保證了整個賬本的唯一性。

假如節點有任何的作弊行為,都會導致網絡的節點驗證不通過,直接丟棄其打包的區塊,這個區塊就無法記錄到總賬本中,作弊的節點耗費的成本就白費了,因此在巨大的挖礦成本下,也使得礦工自覺自愿的遵守比特幣系統的共識協議,也就確保了整個系統的安全。

進階閱讀比特幣區塊結構Merkle樹及簡單支付驗證分析,可以詳細了解區塊結構如何驗證交易。

說明

礦工的收益其實不僅僅包含新發行的12.5比特幣獎勵,同時還有交易費收益(本文忽略一些細節是為了讓主干更清晰)。

有興趣的同學可以看看圖中區塊都包含了那些信息,紅箭頭標示出的是本文涉及的信息。

本文中有提到共識協議,比特幣共識協議主要是由工作量證明和最長鏈機制 兩部分組成,之后會有博文詳細講解。

深入淺出區塊鏈 - 系統學習區塊鏈,打造最好的區塊鏈技術博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容