中本聰在 2008 年發表的論文,讓外界了解到區塊鏈和加密貨幣的概念,並開始慢慢研究當中的奧妙。其中讓區塊鏈運作的共識機制(Consensus mechanisms),也成為了其中一個研究重點。
共識機制由最初的「工作量證明」(Proof of Work, PoW),發展至後來的「權益證明」(Proof of Stake, PoS)、「權益委託證明」(Delegate Proof of Stake, DPoS),甚至有「授權證明」(Proof of Authority, PoA),「空間證明」(Proof of Space, PoSpace)等,局面早已不再單一。但到底不同共識機制之間,有著怎樣的分別和特性?「新手專題」將會在今後 3 篇文章,分別介紹 PoW、PoS 和 DPoS 這 3 個較為流行的共識機制,而首篇會介紹 PoW。
在本篇新手專題文章當中,你將能夠掌握:
- 工作量證明的歷史
- 工作量證明的基本運作原理
- 工作量證明的優點
- 工作量證明的缺點
工作量證明的歷史
工作量證明的概念,是早在 1993 年由美國電腦科學家 Cynthia Dwork,和以色列電腦科學家 Moni Naor 提出,當時他們提出的概念是用於應對垃圾電郵。到了 1999 年,“Proof of Work” 一詞就正式被電腦保安研究者 Markus Jakobsson 和 Ari Juels 記載,以及寫成論文。
如果大家有印象之前的新手專題文章,都會記得中本聰曾經在他的論文提過 Adam Back 的 “Hashcash”(「雜涵現金」)概念,當時 Adam Back 研究 Hashcash 同樣是為了應對垃圾電郵。在互聯網進入大眾應用的 1990 年代,電郵已經是一個相當重要的網上功能。但是由於當時的互聯網科技,包括攔截無用訊息的技術都不成熟,令電郵郵箱容易充斥著大量垃圾電郵。
工作量證明技術的引入的重要作用,就是要辨認垃圾電郵發訊者,並且提高發訊者一次過送出大量垃圾電郵的代價,甚至是要阻止這種行為。相反,由於正常發訊者一般來說都不會一次過發出大量同樣內容的電郵,他們自然不會受到 PoW 影響。
工作量證明的基本運作原理
雖然 PoW 不是區塊鏈和加密貨幣領域的專用技術,但是為了讓大家以較快的速度理解,以下的內容將主要針對區塊鏈和加密貨幣的應用場景敘述。
工作量證明顧名思義,其實就是節點以自身工作成果,去證明工作量的機制。在這樣的情況下,到底甚麼才叫做節點的「自身工作成果」呢?我們在這裡先採用比特幣(Bitcoin, BTC)區塊鏈的例子說明:
如果大家還記得新手專題第一篇文章的內容,都會留意到每個節點都需要收集新的交易至一個區塊當中,之後節點就要為區塊找出「一個足夠困難的工作量證明」。根據中本聰的論文,一個區塊當中,除了包括區塊所屬的多宗交易外,還需要包括之前一個區塊的雜湊函數(Hash),以及一個「亂數」(“nonce”)。
來到這裡,大家可以先理解一點:節點們其實都在參與一個鬥快的有獎問答遊戲 - 眾多節點需要盡快找出一個「目標雜湊函數值」(target hash value)。根據機制,這個「目標雜湊函數值」無論如何都不會大於當前的挖礦難度值,最多只會相等。那麼節點又如何找出這個目標數值呢?方法就是依靠區塊裡面的數據,以及計算機隨機抽出的亂數去找出答案了。
由於區塊裡面的數據可以被視為一個定額數值,所以「亂數」就成為了工作量的關鍵。如果節點很快就抽到「合適」的亂數,它當然可以廣播給所有節點,通知自己已經「獲勝」;但如果抽不到的話,它就要不停抽到「合適」為止。
節點背後的計算機之所以要窮舉其擁有的算力去運算,目的就是要成為首個能夠「變出」切合目標數值之亂數的節點,這樣才可以取得驗證區塊的權利,從而獲得區塊獎勵,而以上的行為就是大家常言的「挖礦」(“Mining”)了。比特幣最初的區塊獎勵是 50 BTC,但根據遞減機制,現時的區塊獎勵已經減少至 12.5 BTC。到了下一輪的遞減程序,獎勵又會砍半至 6.25 BTC,如此類推。
以比特幣為例,根據它的 PoW 機制,區塊的產出速率是每個 10 分鐘。當區塊鏈累積夠 2016 個區塊的時候,節點們就會按統一的公式調整當前的挖礦難度值。將 10 分鐘乘以 2016,就是 20160 分鐘,也即是剛好 14 天的時間,故此比特幣大約每 14 天就會調整挖礦難度一次。雖然偶有調低難度的時候,但是按照過往的紀錄,比特幣的挖礦難度都是整體呈上升趨勢。
工作量證明的優點
在理論層面,PoW 確實是具備「公平」的優點。因為,假設所有的節點擁有者都是拿著一樣的電腦硬件挖礦,他們在挖礦比賽能夠「跑出」成為區塊驗證者的機會應該是均等的,這令到所有節點都能透過挖礦,獲得合理期望的機會去取得獎勵,從而實現財富增值。這不只是一種公平的實踐,也是一種去中心化的實踐。然而理論歸理論,過往至今的經驗已經告訴大家,上述優點在現實層面是無法發生的,原因將在下面的缺點部份再述。
除此之外,PoW 的運作機制和架構相對上是簡單直接的,這對於一些資源較少的區塊鏈和加密貨幣項目,可能會是一個好消息。另外,PoW 亦具備「難被攻克」的優點:經過驗證後的區塊,仍然需要獲得多數節點承認,以「簡單過半」為最低門檻。如果惡意節點或者攻擊者,期望透過「51% 攻擊」去篡改交易紀錄,他要付出的硬件資源和算力最低門檻,就是要掌握全網過半算力-這是代價極為高昂的任務,而且較難實現。當然,「51% 攻擊」也非不可能的事,原因將在下面的缺點部份再述。
工作量證明的缺點
正如 PoW 具備簡單直接的運作架構,PoW 同樣擁有一個相當直觀和容易被發現的缺點,就是浪費能源。只要節點數目、交易持續增加,而且區塊獎勵即相關的加密貨幣具備市場價值,可以說礦工是不可能放棄挖礦這一門事業,這將令挖礦難度持續上升。由於挖礦難度愈高,意味著答案的「搜索範圍」愈大,節點自然需要用更長久的時間,即投入更多的能源去隨機抽出正確答案,這正是挖礦耗電的主因。
以 BTC 為例,在 2017 年關於 BTC 挖礦的能源消耗已經達 3000 萬兆瓦時(30 TeraWatt-hour, TWh),已等於愛爾蘭全國一年的電力消耗。到了 2018 年底,數字已經增加至 6000 萬兆瓦時。多年以來,比特幣挖礦,以至 PoW 浪費能源的缺點,可說已經令部分對區塊鏈和加密貨幣不熟悉的人士,建立出「挖掘加密貨幣 = 浪費能源」的刻板印象,這個亦相信是業界一直希望努力發展其他共識機制的原因之一。
PoW 還有另一個缺點,就是會出現「富者愈富」的現象,上述 PoW 帶來公平的現象,其實只是紙上談兵。大家可以想像,PoW 實際上是一個充滿資本主義特色的「軍備競賽」:既然區塊獎勵即加密貨幣具備了如此大的市場價值,人們當然會擴充自己的電腦硬件組合,以坐擁更多的算力,令自己有更大機會「中獎」。這裡當然不是說算力少的節點沒有機會中獎,畢竟找出合適的亂數也是一個隨機步驟,但機會確實是微乎其微,這一點也是不容否認。
不過,現時大部分 PoW 加密貨幣生態圈其實都存在「礦池」(“mining pool”)制度,礦池就是聚沙成塔的概念,透過集合算力,將獲得區塊獎勵的機會推至最高。假如真的中獎,礦池管理者就按照各個算力貢獻者貢獻的算力,按比例分發獎勵。
但是,礦池制度其實又會引伸出另一個問題,就是大幅提升出現「51% 攻擊」的機會。礦池將算力積少成多的特色,成功吸引了很多個人礦工加入礦池,這會令到礦池掌握的算力,能夠達到全網算力的 10%,甚至是 20%、30%:可能只要兩、三個礦池合併,他們的算力就會過半,出現「51% 攻擊」的危機。當然,為了維護區塊鏈、制度健康甚至是加密貨幣本身的價值,合併礦池達成「51% 攻擊」的機會仍然偏低。
總結
雖然 PoW 技術的加持令區塊鏈和比特幣得以踏出第一步的發展,但即使是現在回看,我們都會明白到比特幣與其背後的技術有著一些限制。如果要促進產業發展,各種方面的完善就變得迫切,於是就有後來的「權益證明」共識機制出現。關於它的概況,下一篇新手專題文章將會向大家講解。
以上內容由《幣訊》與 9up.io 共同協作撰寫。
【若你喜歡幣訊的內容,請輕按以下拍手鍵(可以按幾次)支持我們。】