比特幣如何挖礦(挖礦原理)-工做量證實

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

區塊鏈記帳原理 一篇,咱們瞭解到記帳是把交易記錄、交易時間、帳本序號、上一個Hash值等信息計算Hash打包的過程。
咱們知道全部的計算和存貯是須要消耗計算機資源的,既然要付出成本,那節點爲何還要參與記帳呢?在中本聰(比特幣之父)的設計裏,完成記帳的節點能夠得到系統給與的必定數量的比特幣獎勵,這個獎勵的過程也就是比特幣的發行過程,所以你們形象的把記帳稱爲「挖礦」,本文將詳細討論這個過程。安全

記帳工做

因爲記帳是有獎勵的,每次記帳均可以給本身憑空增長必定數量的個比特幣(當前是12.5比特幣,博文寫做時每一個比特幣是4萬人民幣以上,你們能夠算算多少錢),所以就出現你們爭相記帳,你們一塊兒記帳就會引發問題:出現記帳不一致的問題,比特幣系統引入工做量證實來解決這個問題,規則以下:網絡

  • 一段時間內(10分鐘左右,具體時間會與密碼學難題難度相互影響)只有一人能夠記帳成功
  • 經過解決密碼學難題(即工做量證實)競爭得到惟一記帳權
  • 其餘節點複製記帳結果

不過在進行工做量證實以前,記帳節點會作進行以下準備工做:學習

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

若是節點爭奪記帳權成功的話,就能夠獲得12.5比特幣的獎勵。區塊鏈

工做量證實

區塊鏈記帳原理咱們瞭解到,每次記帳的時候回把上一個塊的Hash值和當前的帳頁信息一塊兒做爲原始信息進行Hash。
若是僅僅是這樣,顯然每一個人均可以很輕鬆的完成記帳。
爲了保證10分鐘左右只有一我的能夠記帳,就必需要提升記帳的難度,使得Hash的結果必須以若干個0開頭。同是爲了知足這個條件,在進行Hash時引入一個隨機數變量。設計

用僞代碼表示一下:code

# 沒有難度時爲: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次方次,這個數是很是很是巨大的,我已經算不清楚了,應該是億億級別以上了。如此大的計算量須要投入大量的計算設備、電力等,
目前應該沒有單礦工獨立參與挖礦了,基本都是由礦工聯合起來組成礦池進行挖礦(礦池裏的礦工按算力百分比來分收益)。get

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

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

驗證

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

若是驗證經過,則代表已經有節點成功解迷,本身就再也不競爭當前區塊打包,而是選擇接受這個區塊,記錄到本身的帳本中,而後進行下一個區塊的競爭猜謎。
網絡中只有最快解謎的區塊,纔會添加的帳本中,其餘的節點進行復制,這樣就保證了整個帳本的惟一性。

假如節點有任何的做弊行爲,都會致使網絡的節點驗證不經過,直接丟棄其打包的區塊,這個區塊就沒法記錄到總帳本中,做弊的節點耗費的成本就白費了,所以在巨大的挖礦成本下,也使得礦工自覺自願的遵照比特幣系統的共識協議,也就確保了整個系統的安全。

說明

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

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

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

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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息