區塊鏈共識機制 – POW 工作量證明 Proof Of Work

 

優勢:安全可靠。
劣勢:浪费算力,且會被擁有全網超過 50% 算力的節點進行區塊改寫的惡意攻擊 (所謂的 51% 攻擊)。

 

比特幣與工作量證明 Proof Of Work

POW 工作量證明 Proof Of Work,顧名思義就是用工作成果來證明完成的工作量。在區塊鏈採用 POW 工作量證明的共識機制中,比特幣 Bitcoin 是其中最具有代表性的,其共識協議則主要是由工作量證明最長鏈機制兩部分組成。

在比特幣區塊鏈上,每隔 10 – 15 分鐘就會把這期間的所有交易訊息打包成一個區塊並加到最長的區塊鏈上,幫助成功驗證新區塊鏈的節點會被區塊鏈上的獎勵機制給予幫助新區塊生成的營運獎勵金,這整串打包區塊紀錄帳本與獲得獎勵的過程即俗稱挖礦 mining,而所有參與寫入帳本競爭的節點則稱為礦工 miner。

比特幣區塊鏈上的節點,需付出工作量證明來獲得記帳權。意味在比特幣區塊鏈上的所有節點,只要提出工作量證明都可以參與寫帳本打包新區塊的競爭。優先勝出的節點會將新區塊的帳本訊息廣播至比特幣全網路上,其餘的節點驗證後即從競爭改為接受新的區塊並同步新區塊的帳本訊息,大家全部完成後再一同參與新的交易訊息區塊打包。

 

比特幣挖礦運算與競爭難度

比特幣挖礦競爭的實際行為,是所有的參與節點使用電腦算力來執行數學運算,其第一個運算結果滿足下列算式的節點有權利寫入帳本並獲得獎勵。

SHA256 ( Block data + Nonce) < Difficulty

比特幣設計的挖礦難度會在維持 10-15 分鐘區塊生成速率的前提下,依據整個網路算力大小來動態調整難度值 Difficulty (難度值為使用雜湊函數 Hash Algorithm 算出的無法預測數值),全網越多人挖礦算力月高而難度越高。

難度值 Difficulty 的調整是在每個完整節點中獨立自動發生,每 2016 個區塊,所有節點都會按統一的公式自動調整難度值,這個公式是由最新 2016 個區塊的花費時長與期望時長(期望時長為 20160 分鐘即 2周,是按每10分鐘一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整,其公式如下:

新難度值 = 當前(舊)難度值 * [實際 2016 個區塊生成花費時間 / 理論上 2016 個區塊生成花費時間 (2周)]

比特幣採用的 SHA256 生成的 Hash 值都為 256 位元,每一位有62種可能性 (大小寫字母與數字的組合)。Block data 為上一筆交易資料,比特幣的演算即是結合上一筆交易資料與一個隨機值 nonce 並 hash 出一個位數並不長的值,當此值符合難度值 Difficulty 時即為成功挖到礦,若不符合難度值時便不斷更改隨機值直到符合為止。所謂挖到礦就是猜到一個 Nonce 值讓該區塊的摘要值小於一個會根據難度而調整的難度值。

 

比特幣經濟與獎勵

中本聰所開發的比特幣為了避免貨幣發行太多或太快,有設計出一套抑制通貨膨脹的機制並最終只會發行 2,100 萬個比特幣。為鼓勵節點幫忙驗證營運,設計了挖掘新區塊的獎勵,區塊獎勵從 2009 年開始每個區塊可獲得 50 個比特幣的獎勵,但此一獎勵區塊回報每產出 21 萬個區塊減半一次,即每 4 年減半,2013 年到 2016 年 月則是 25 個比特幣,2016 年 月 9 日區塊獎勵再度折半到 12.5 個比特幣,估計到 2021 年時會再度折半到 6.25個,在 2022 年中就會挖出超過 90%,因為比特幣最小單位是 0.00000001,所以 2140 年之後區塊獎勵就會小於最小單位,即不會再生成比特幣產生。

 

總結

POW 工作量證明共識機制是一個隨機選擇下一個區塊上傳者的機制,隨機機制是根據計算能力。POW 工作量證明已接受了市場實戰的檢驗,目前為公有鏈最主流的演算法,即便是 POW/POS 混合型態的公有鏈一開始也是以 POW 來設計來兼顧資訊驗證安全性與公平性獎勵機制。

 

延伸閱讀

區塊鏈共識機制 – POW 工作量證明 Proof Of Work
區塊鏈共識機制 – POS 權益證明 Proof Of Stake
區塊鏈共識機制 – DPOS 委託權益證明 Delegated Proof Of Stake
物聯網共識機制 – DAG 有向無環圖 Directed Acyclic Graph