最早的區塊鏈如比特幣以及以太坊都是採用 PoW 共識機制保障區塊鏈帳本的一致性與交易的最終性。PoW 的全名是 Proof of Work ,中文為工作量證明。
PoW:何謂工作量證明
網路上的節點可以簡單地透過工作量證明,快速驗證彼此是否擁有記帳權。就像是我們求學時期所發的畢業證書,大學四年熬夜苦讀、鑿壁偷光就是為了獲得那張畢業證書,求職時,面試官透過那張畢業證書,快速驗證你大學的成果。上述例子中,你的畢業證書就是你的「工作量證明」。
PoW,以比特幣為例介紹
每 10~15 分鐘比特幣網路上全體礦工會互相競爭,運用大量的運算能力去解一道複雜的數學題的答案,這個答案是一個隨機數,可以想像題目大概長這樣:
Hash{(前一個區塊的 Hash 值),(當前區塊的交易資訊),(隨機數)}=當前區塊的 Hash 值
礦工必須找出一串數字,代入上述公式,讓當前區塊的 Hash 值開頭為 18 個 0 ,例如:
0000000000000000001583447dd74c13c09280a9218827244089adadaba8c8c9
解答的過程沒有軌跡可循,礦工只能不斷代入隨機數,透過暴力的解法找出答案。
PoW 挖礦難度
最先解開的人就能獲得下一個區塊的記帳權並獲得比特幣作為獎勵。比特幣固定 10~15 分鐘出塊一次,但是如果節點越來越多、全網算力增加,會縮短算出答案的時間。因此,比特幣協議每 2016 個區塊會調整一次挖礦難度,大約兩個禮拜調整一次。挖礦難度提高時,就必須找出有更多個 0 的當前區塊 Hash 值,例如從原先的 18 個 0 增加到 19 個 0,難度降低時則相反。
PoW 算力低的礦機沒機會得到記帳權?
必須強調的是,挖礦的過程其實像是擲一顆 20 面的骰子,誰先骰到 < 2 的數字誰就能獲得計帳權,換句話說,礦機的硬體運算能力再強大,也只能提高獲得計帳權的機率(骰骰子手速比較快),算力差的礦工不代表沒有機會。
很多人都認為,如果以後超級電腦普及,工作量證明不就沒用了嗎? 其實工作量證明數學題的難度相當高,因此取得記帳權的機會就像抽獎一樣,即便某人擁有超級電腦,也只能夠提高機率。這就像在湖裡丟一枚硬幣,讓一萬個人去找這枚硬幣,就算你是奧運游泳選手,也未必能第一個找到這枚硬幣,只能提高找到的機率。
PoW 優點
- 容易實現,節點可自由進入,去中心化程度高。
- 破壞系統需要投入極大的成本,安全性極高。
PoW 缺點
- 為了保證去中心化程度,區塊的確認時間難以縮短。
- 透過礦工的計算能力以及硬體成本確保礦工立意良善,挖礦過程中過多的能源消耗,使得這個機制非常不環保