挖礦過程

基本原理

瞭解比特幣,最應該知道的一個概念就是“挖礦”。挖礦是參與維護比特幣網絡的節點,通過協助生成新區塊來獲取一定量新增的比特幣的過程。

當用戶向比特幣網絡中發佈交易後,需要有人將交易進行確認,形成新的區塊,串聯到區塊鏈中。在一個互相不信任的分佈式系統中,該由誰來完成這件事情呢?比特幣網絡採用了“挖礦”的方式來解決這個問題。

目前,每 10 分鐘左右生成一個不超過 1 MB 大小的區塊(記錄了這 10 分鐘內發生的驗證過的交易內容),串聯到最長的鏈尾部,每個區塊的成功提交者可以得到系統 12.5 個比特幣的獎勵(該獎勵作為區塊內的第一個交易,一定區塊數後才能使用),以及用戶附加到交易上的支付服務費用。即便沒有任何用戶交易,礦工也可以自行產生合法的區塊並獲得獎勵。

每個區塊的獎勵最初是 50 個比特幣,每隔 21 萬個區塊自動減半,即 4 年時間,最終比特幣總量穩定在 2100 萬個。因此,比特幣是一種通縮的貨幣。

挖礦過程

挖礦的具體過程為:參與者綜合上一個區塊的 Hash 值,上一個區塊生成之後的新的驗證過的交易內容,再加上自己猜測的一個隨機數 X,一起打包到一個候選新區塊,讓新區塊的 Hash 值小於比特幣網絡中給定的一個數。這是一道面向全體礦工的“計算題”,這個數越小,計算出來就越難。

系統每隔兩週(即經過 2016 個區塊)會根據上一週期的挖礦時間來調整挖礦難度(通過調整限制數的大小),來調節生成區塊的時間穩定在 10 分鐘左右。為了避免震盪,每次調整的最大幅度為 4 倍。歷史上最快的出塊時間小於 10s,最慢的出塊時間超過 1 個小時。

為了挖到礦,參與處理區塊的用戶端往往需要付出大量的時間和計算力。算力一般以每秒進行多少次 Hash 計算為單位,記為 h/s。目前,比特幣網絡算力峰值已經達到了每秒數百億億次。

匯豐銀行分析師 Anton Tonev 和 Davy Jose 曾表示,比特幣區塊鏈(通過挖礦)提供了一個局部的、迄今為止最優的解決方案:如何在分散的系統中驗證信任。這就意味著,區塊鏈本質上解決了傳統依賴於第三方的問題,因為這個協議不只滿足了中心化機構追蹤交易的需求,還使得陌生人之間產生信任。區塊鏈的技術和安全的過程使得陌生人之間在沒有被信任的第三方時產生信任。

如何看待挖礦

2010 年以前,挖礦還是一個非常熱門的盈利行業。

但是隨著相關技術和設備的發展,現在個人進行挖礦的收益已經降得很低。從概率上說,由於當前參與挖礦的計算力實在過於龐大(已經超出了大部分的超算中心),一般的算力已經不可能挖到比特幣。特別那些想著利用虛擬機來挖礦的想法,意義確實不大了。

從普通的 CPU(2009 年)、到後來的 GPU(2010 年) 和 FPGA(2011 年末)、到後來的 ASIC 礦機(2013 年年初,目前單片算力已達每秒數百億次 Hash 計算)、再到現在眾多礦機聯合組成礦池(知名礦池包括 F2Pool、BitFury、BTCC 等)。短短數年間,比特幣礦機的技術走完了過去幾十年的集成電路技術進化歷程,並且還頗有創新之處。確實是哪裡有利益,哪裡的技術就飛速發展!目前,礦機主要集中在中國大陸(超過一半的算力)和歐美,大家比拼的是一定計算性能情況下低電壓和低功耗的電路設計。全網的算力已超過每秒 10^18 次 Hash 計算。

很自然地,讀者可能會想到,如果有人掌握了強大的計算力,計算出所有的新區塊,並且拒不承認他人的交易內容,那是不是就能破壞掉比特幣網絡。確實如此,基本上個體達到 1/3 的計算力,比特幣網絡就存在被破壞的風險了;達到 1/2 的算力,從概率上就掌控整個網絡了。但是要實現這麼大的算力,將需要付出巨大的經濟成本。

那麼有沒有辦法防護呢?除了儘量避免計算力放到同一個組織手裡,沒太好的辦法,這是目前 PoW 機制自身造成的。

也有人認為為了共識區塊的生成,大部分計算力(特別是最終未能算出區塊的算力)其實都浪費了。有人提出用 PoS(Proof of Stake)和 DPoS 等協議,利用權益證明(例如持有貨幣的幣齡)作為衡量指標進行投票,相對 PoW 可以節約大量的能耗。PoS 可能會帶來囤積貨幣的問題。除此之外,還有活躍度證明(Proof of Activity,PoA)、消耗證明(Proof of Burn,PoB)、能力證明(Proof of Capacity, PoC)、消逝時間證明(Proof of Elapsed Time)、股權速率證明(Proof of Stake Velocity,PoSV)等,採用了不同的衡量指標。

當然,無論哪種機制,都無法解決所有問題。一種可能的優化思路是引入隨機代理人制度,通過算法在某段時間內確保只讓部分節點參加共識的提案,並且要發放一部分“獎勵”給所有在線貢獻的節點。

Last updated