區塊鏈技術挖礦是什麼意思?礦工都做了什麼?

這篇文章從本質上講解了礦工挖礦是什麼意思,需要讀者具備以下基礎知識:

  • 比特幣是如何轉賬的?
  • 比特幣的分佈式賬本和去中心網絡
  • UTXO(未使用的交易輸出)
  • 比特幣區塊鏈的數據結構
  • 工作量證明共識機制


挖礦節點計算機在挖礦時要做兩個任務:

  • 第一個任務是把比特幣網絡中未確認的交易按梅克爾樹組裝成候選區塊,未被納入的交易則往下順延。
  • 在創建候選區塊時,除了普通的交易之外,礦工在其中增加一個特殊的交易:幣基交易(coinbase transaction)。如果挖礦成功,則幣基交易會憑空轉出新區塊的獎勵比特幣到礦工的錢包地址中,從而發行這些比特幣出來。這個特殊交易也被叫作“創幣交易”,新的比特幣是在這一交易中被創造出來的。


挖礦節點計算機的第二個任務是真正的挖礦,即進行加密哈希計算,解決一個計算難題,進行算力競爭。在眾多爭奪記賬權的節點中,誰最先完成這個計算,它打包的區塊就被加到了區塊鏈的最後,成為最新的區塊。率先完成計算的礦工會贏得新區塊的挖礦獎勵。最初,成功挖出一個區塊,礦工可以獲得 50 個比特幣的獎勵,按規則,這個挖礦獎勵每四年減半一次,分別為 25 個、12.5 個,以此類推。


我們再討論兩個問題,以深入瞭解比特幣的工作量證明共識機制與它的挖礦機制。

第一,先向內看,比特幣礦工挖礦是在做什麼?

在候選區塊的頭部有一個 32 位的隨機數區域,礦工需要反覆調整隨機數並計算,目標是讓整個區塊的哈希值小於一個“目標值”。如果試過所有的 32 位隨機數可能性後,計算仍未能成功,那麼就要改變幣基(coinbase)的一個隨機數,接著進行反覆計算。
這個計算是加密哈希計算(對比特幣來說是 SHA-256),除了反覆計算別無他法。這個計算量非常大,比如在 2015 年年底,在大約 2 的 68 次方個隨機數中,只有一個可以成功,這個數字比全球總人口的平方還要大。
有意思的是,這種挖礦計算是非對稱的,你挖礦需要經過 2 的 68 次方個哈希計算,而我要驗證你的確找到有效的隨機數,只需要一次就可以。
第一個完成這個計算難題的節點所打包的區塊就成為有效區塊,它向全網廣播告知自己已經完成,由其他節點確認後(即有別的挖礦節點在這個區塊的基礎上進行下一個區塊的挖礦,生成新的區塊)。在等待 6 個區塊後,該挖礦節點就可以獲得這次比特幣獎勵。


比特幣的去中心網絡能夠長期運行下來,現在有 1 萬多個全節點,正是因為有這樣的挖礦獎勵機制。出於對自己的利益考慮的礦工運維著這個不屬於任何人、完全去中心化的網絡。

第二,再向外看,比特幣的挖礦機制在加入挖礦的計算機的算力不斷增加的情況下,這個挖礦機制是如何保持穩定的?

比特幣挖礦的芯片已經經過幾輪演變,其計算能力越來越強:從 CPU 演變到 GPU(顯卡),再到現場可編程門陣列(FPGA),再到現在的專用集成電路技術(ASIC),即只能進行比特幣挖礦所需的哈希計算的專用芯片中。並且隨著礦機的升級迭代和數量增多,接入比特幣區塊鏈網絡、參與挖礦競爭的計算算力越來越大。
相應地,比特幣系統有這樣一個對應的機制設計:隨著算力的增長,調整目標值的難度使得挖出一個區塊的時間始終是 10 分鐘左右。
這形成了一種動態的平衡,維持區塊鏈網絡經濟激勵的有效與穩定。這個決定難度的公式非常簡單明瞭,每挖出 2016 個區塊,也就是經過約兩個星期,挖礦難度會進行一次調整,該公式是:

下一個難度 = 上一個難度 × 2016 × 10分鐘 / 產生2016個區塊所需的時間


如果算力突然大幅度上升,產生上一組 2016 個區塊所需的時間變短,那麼難度就會上升。在某些特殊情況下,如果產生上一組 2016 個區塊所需的時間變長,那麼難度也會下降,但這樣的情況並不多見。
因此,比特幣礦工節點的挖礦是它在運行分佈式賬本與去中心網絡。同樣重要的是,它也是比特幣的發行機制和整個社區的激勵機制。
比特幣的挖礦是比特幣的唯一發行機制,從中本聰挖出第一個區塊獲得 50 枚比特幣開始,比特幣這個加密數字貨幣就以這樣的去中心化方式不斷地發行了出來。
比特幣區塊鏈網絡是由眾多節點組成的去中心網絡,而這些計算機節點加入這個網絡,維護分佈式賬本,是因為中本聰在設計系統時巧妙地加入了經濟激勵:眾多比特幣礦工(即挖礦節點)在競爭獲得記賬的權利,礦工每增加一個新的區塊能獲得對應的記賬獎勵。
比特幣的經濟系統是以“競爭-記賬-獎勵”循環為核心的(見圖1),其中“競爭”非常重要,即挖礦節點進行的算力競爭。在比特幣系統這樣一個去中心網絡中,節點參與是出於獲得經濟獎勵的自利動機,而記賬權利和對應的獎勵需要通過競爭來獲得。


在區塊鏈的相關探討中,有把“挖礦”一詞的含義擴大的傾向,在這裡我們認為,只有生成區塊的計算行為,即運維分佈式賬本與去中心網絡的行為,才是真正意義上的挖礦。簡單地說,只有生產區塊,才是挖礦。即便放寬要求,不再強求只有計算機節點生產區塊才是挖礦,我們也仍想強調,競爭獲得對應的權利和獎勵,仍是必須的。沒有競爭的獎勵,是很難真實有效的。

區塊鏈技術挖礦是什麼意思?礦工都做了什麼?


圖1:比特幣的“競爭-記賬-獎勵”循環


通過討論比特幣區塊鏈的五個技術性細節,我們再一次看到,比特幣系統在發行和交易層面都實現了完全的去中心化:

  • 一個交易的確認,被寫入分佈式賬本記錄下來,是由去中心網絡中互不信任的節點為了自己的利益相互以算力進行競爭而確認的。
  • 在競爭挖礦的過程中,比特幣的發行是“憑空發行貨幣”,它的貨幣發行也是靠這個去中心網絡的算力競爭來完成的,是去中心化的。


比特幣作為區塊鏈 1.0 的典型,完成了價值表示和價值轉移的概念驗證(見圖2)。
比特幣區塊鏈是非常精妙的設計,它無須任何人的居中協調與領導就能持續發展。比特幣可能是迄今為止最成功的加密數字貨幣,比特幣區塊鏈在加密數字貨幣的應用上堪稱完美。
比特幣區塊鏈即“區塊鏈1.0”是專為去中心化的電子現金設計的,而要在各個領域中廣泛應用,我們需要有更通用、性能更好的區塊鏈系統。


區塊鏈技術挖礦是什麼意思?礦工都做了什麼?


圖2:比特幣作為區塊鏈1.0的典型,完成了價值表示和價值轉移的概念驗證


在比特幣系統之後出現了常被認為是“區塊鏈 2.0”代表的以太坊。現在,更多項目在競爭成為“區塊鏈 3.0”,我們在後續章節中會分別討論它們。

內容參考:http://c.biancheng.net/view/1898.html


分享到:


相關文章: