區塊鏈的共識機制,已有無數的文章分析過了,本文的目的,不在于對各種共識機制的原理做多么深入的解讀,而是主要從時間線角度,梳理比特幣第一個十年間,共識機制的發展歷程。
一、為何需要共識機制:維護一致性
區塊鏈作為一個分布式賬本,即意味著每一個節點都能夠驗證交易,而面對的對象當然應該是具有一致性的賬本,才不會導致相互間的沖突,共識機制就是為了解決這個“一致性”的問題。
在區塊鏈中,各節點發生的交易都將被記入這個賬本,形式則是把新賬記錄打包成一個區塊,該區塊加上了時間戳,經過了加密,將被附加在最新的區塊之后,以此形成一個鏈式數據結構。
這么一個數據賬本,本身不提供去中心化,只有加入了去中心化的共識機制,這個系統才能做到去中心化。簡單來說,就是在這個賬本中,誰來記賬就成為了一個問題,記賬權的分配應該是去中心化的。共識機制就是為了解決這個記賬權的問題而出現的。
說白了,共識機制就是一個群體決策的問題:一群人要如何做出對所有人都最有利的決定,而且這個決定要對所有人都公平。
可以拿選舉、投票來作類比。比如英國脫歐,當時是采用了全民公投的方式進行,當同意脫歐的人數達到了一定比例,那么就選擇脫歐。而在英國的議會,議員們代表著把自身選上來的選民的意志,他們作為代理人在議院行使表決權,做出對整個國家(整個社區)最有利的決定。區塊鏈中,PoW機制即類似全民公投,DPoS就有點像代議制。
每種共識機制,都要設計好程序,使之能夠把這套規則在區塊鏈中運行下去。而作為一種設計,自然會有其優缺點,某個區塊鏈采用哪種共識機制,是按照自己的理念,適應自身需要,在一開始就決定的。當然,一種共識機制,在最初可能難以預見后續會出現什么問題,其優缺點需要在時間中得到檢驗。例如比特幣采用的PoW共識機制就具有耗能高與礦池導致算力中心化的缺陷,目前以太坊正打算從PoW共識機制換到PoS共識機制上來。
二、現在已提出的一些共識機制
目前為止,區塊鏈共識機制已經發展多年,有了很多不同的種類,下面是一個對區塊鏈很感興趣的geek(極客)Hasib Anwar制作的現有的一些共識機制圖表:
所有共識機制列表
Proof-of-Work 工作量證明
Proof-of-Stake 權益證明
Delegated Proof-of-Stake 委托權益證明
Leased Proof-Of-Stake 租用權益證明
Proof of Elapsed Time 過去時間證明
Practical Byzantine Fault Tolerance 實用拜占庭容錯
Simplified Byzantine Fault Tolerance 簡單拜占庭容錯
Delegated Byzantine Fault Tolerance 委托拜占庭容錯
Directed Acyclic Graphs 有向非循環圖
Proof-of-Activity 活動量證明
Proof-of-Importance 重要性證明
Proof-of-Capacity 容量證明
Proof-of-Burn 燃燒證明
Proof-of-Weight 重量證明
(以上圖表見Hasib Anwar的文章“Consensus Algorithms: The Root Of The Blockchain Technology”,智能比特翻譯)
其中,工作量證明(PoW)是第一個區塊鏈共識機制,比特幣以及目前的以太坊都是采用了這一共識機制;權益證明(PoS)在2012年第一次被提出,并被應用在點點幣、未來幣等項目上;委托權益證明(DPoS)最著名的代表則是比特股(Bitshare)、EOS,這三者是目前公鏈應用最多的三種共識機制。在聯盟鏈領域,Hyperledger Fabric 在 0.6 版中應用了PBFT,而在 1.0 版中放棄了PBFT,轉而采用效率更高的Kafka,支持單點和集群兩種方式,由 Kafka直接給交易排序和出塊;中國的FISCO BCOS則支持并行計算的PBFT和標準RAFT兩種方式。
除了Hasib Anwar圖表中歸納的這些,還有一些也被視為共識機制,例如瑞波幣的Ripple算法、基于交易的股權證明機制(TaPOS)等。還有一些,例如艾歐塔(IOTA),采用的是的DAG(有向無環圖)數據結構,通過纏結(Tangle)的方式加入區塊鏈,與區塊鏈的鏈式數據結構是不同的,這也可以被當作一種共識機制。
共識機制可以被當作是一套算法,分布式系統都需要這樣一套算法來保持一致性,區塊鏈作為分布式系統的一個子集,也借用了分布式系統的一些用于達成共識的協議。比如Lamport設計的保持分布式系統一致性的協議Paxos,還有Stanford提出的RAFT協議,上面提到的聯盟鏈FISCO BCOS 就采用了RAFT協議,此外微軟主導的聯盟鏈Coco 支持Paxos和 Caesar兩種協議。
三、共識機制的發展之PoW-PoS-DPoS
2008年,中本聰在《比特幣:一種點對點的電子現金系統》這篇論文中提出了比特幣與區塊鏈,其中PoW被應用于比特幣上,來解決誰是大多數的問題。但是人們很快發現這種共識機制的問題,即消耗能源大,以及被大礦池把持算力之后,仍然會導致中心化的問題。
2011年,一個名為Quantum Mechanic的數字貨幣愛好者在Bitcointalk論壇提出Proof-of-Stake(POS)證明機制,該機制被充分討論之后證明具有可行性。POW是比拼算力,而POS簡單來說就是比拼誰手里的幣多,手里幣越多,獲得記賬資格的概率就越高。
2012年8月,密碼貨幣極客Sunny King 發布Peercoin(點點幣,PPC),它的挖礦方式采用了POW和POS結合的方式。點點幣之后,又有新星幣(Novacoin,NVC)、黑幣(blackcoin,BLK)等采用POS。在這些幣當中,黑幣對點點幣做了一些優化,發布了POS2.0白皮書,其中最重要的一點就是用余額(也就是該礦工手里有多少幣)代替幣齡。
2013年9月,一個名為BCNext的用戶在Bitcointalk論壇發起一個帖子,宣布將發行一種全新的純POS幣種,后來取名為Nextcoin,簡稱NXT,即未來幣。
2013年8月,BM的比特股(Bitshares)項目啟動,并帶來了一種新的共識機制:Delegated Proof-Of-Stake(DPoS),即股份授權股權證明。它有點像現代國家的代議制,但不是每個選區分配了多少代表席位,而是將持有一定數量代幣的節點作為候選人,再由所有節點投票競選,取得票數前101的當選為代表,由這些代表負責產生區塊。代表們輪流產生區塊,收益(交易手續費)平分。如果有代表不老實生產區塊,很容易被其他代表和股東發現,他將立即被踢出“董事會”,空缺位置由票數排名102的代表自動填補。后來,BM的另一個項目EOS也采用了DPoS的共識機制,不過將原來的101個記賬節點減少到了21個。
從POW到POS再到DPOS,可以說是公鏈共識機制發展的一條主線。這三種共識機制各有優劣,比如POW具有完整的數學證明,理論上來說最安全、實現相對簡單,但它在能源消耗、出塊時間、交易容量都有很大不足,而POS則有安全風險更大、選舉節點時候網絡流量壓力很大以及“富者愈富,貧者愈貧”等問題,而DPOS縮小了選舉節點數量減少了網絡壓力,但其去中心化程度值得懷疑。
從09年初開始算起,區塊鏈與數字貨幣的第一個十年馬上就要到來,在這個過程中,共識機制扮演的角色,幾乎可以說是區塊鏈的靈魂。而從上面粗略的整理來看,從事著區塊鏈行業的人具有著無窮的創造力。共識機制已經出現了多次迭代,而其未來會走到哪一步,現在根本沒有定論