1. 程式人生 > >有志者事竟成-程式設計師也可以創造優雅的藝術

有志者事竟成-程式設計師也可以創造優雅的藝術

一、概述:

1.工作量證明(Proof of Work):   通過所有節點的工作量競爭來達成一致。競爭的是運算力。

2.權益證明(Proof of Stake):   通過節點擁有代幣數量的多少和時間,確定下一區塊的創造者。競爭的是擁有代幣的數量和時間。

3.委任權益證明(DPOS):   通過一定演算法選取固定數量的代表投票來達成一致。如果某代表不能履行投票職責,會被除名,重新選擇代表加入。

4.實用拜占庭容錯共識(PBFT):   PBFT是一種基於嚴格數學證明的演算法,需要經過三個階段的資訊互動和區域性共識來達成最終的一致輸出。

二、工作量證明(Proof of Work)

區塊鏈共識演算法中最常見的是比特幣的工作量證明機制,它主要有兩個功能:一是保證區塊鏈的下一區塊是唯一正確的塊,二是防止強大的敵手干擾區塊鏈系統從而導致區塊鏈分叉。

工作量證明中,礦工通過競爭解決密碼學難題來完成下一個塊的增加和區塊鏈的擴充套件,如圖1所示為比特幣工作量證明的簡圖;參與挖礦的礦工競爭將前一區塊的hash與一個隨機的位元串一起來計算出一個hash值,若輸出的hash值滿足前若干位元為0,即為解出了該難題。第一個解出難題的人獲得擴充套件一個塊的機會,並且能夠獲得一定量新挖出的比特幣以及一小筆交易費作為其工作量的獎勵。

儘管比特幣的工作量證明機制是個非常傑出的共識設計,但並不是完美的。最常見的對工作量證明的質疑有兩點:一是消耗算力巨大,不適合大規模系統,並且交易的確認時間需要10-16分鐘,不能滿足實時性需求;二是大多數挖礦活動集中在電力成本較低的區域,形成了區域性中心化的趨勢。

比特幣的創造者Satoshi Nakamoto讓人們初步認識到區塊鏈改變未來世界的巨大潛力,但落實到具體應用,仍需要進一步探索更快速的、更加去中心化以及資源效率更高的共識演算法。為此,許多網際網路、電腦科學、金融、工業等行業的學者和業界人士進行了不斷的探索,並提出了若干代替性的區塊鏈共識方案,其中最有影響力的是權益證明(Proof of Stake)共識演算法。

三、權益證明(Proof of Stake)

權益證明共識是代替工作量證明的共識機制中最完善和受到最多關注的,其共識的達成不需要參與者投入昂貴的計算機裝置來參與挖礦競爭。相對於以比特幣為代表的工作量證明共識系統中的礦工而言,基於權益證明共識的區塊鏈系統中,參與者的角色是驗證者Validator,他們只需要投資系統的代幣並在特定時間內驗證自己是否為下一區塊創造者,即可完成下一區塊的建立。如圖2所示為權益證明的簡要示意圖。下一區塊創造者是以某種確定的方式來選擇,被選中的驗證者將合適的交易打包成塊併發布到區塊鏈上。驗證者被選中為下一區塊創造者的概率與其所擁有的系統中代幣的數量成正比例,簡單來說即擁有300個代幣的驗證者被選中為下一區塊創造者的概率是即擁有100個代幣驗證者的3倍。

由於權益證明中創造區塊不需要算力資源等高成本,區塊創造者不會獲得區塊獎勵,但可以獲得一定數額的交易打包費用。用權益證明共識產生區塊和擴充套件區塊鏈的方式也比比特幣中用工作量證明的共識效率提高上千倍,並且大大節約了資源。

權益證明共識中一旦驗證者建立了一個塊,該塊也需要提交到區塊鏈上。不同的權益證明系統對提交過程的處理方式不同。

一個典型的例子是Tendermint,其系統中的每個節點都必須在每一個塊上簽名(在此過程中的角色稱為“簽名者”),直至達成了大多數節點對區塊驗證和記錄到鏈上的共識;在其他一些系統中,選擇一組隨機的節點進行簽名即可達成共識。

權益證明有效率高、節約資源的優點,但同時也面臨著一些潛在的現實風險,業內研究者通常將其表述為nothing-at-stake問題,意即區塊創造者和區塊驗證者完成各自的工作所投入的成本都極低,因而違背系統協議作惡的損失也很小。基於理性人的自利假設,參與者難免會出現做惡的情況,例如區塊創造者同時創造2個塊並收取兩筆交易費,或者簽名者同時簽名2個塊以獲得2筆工作報酬。這些都與系統協議中同一時間段只能產生一個合法的區塊且簽名者不可對不合法的區塊簽名的規範相違背。

在新興的“加密經濟學”領域,區塊鏈工程師們正在探索解決這些問題的方法。其中一個解決方案是要求驗證者將其擁有的系統代幣鎖定在一種虛擬保險庫中。如果驗證者試圖對系統進行雙重簽名或同時產生多個塊進行分叉,那麼這些代幣就會被全部或部分罰沒。類似的改進機制也在不同的採用權益證明的區塊鏈系統被提出並進行了許多實踐。

Peercoin是第一個將權益證明實現的代幣,其次是blackcoin和NXT。此外,以太坊最早依賴於工作量證明共識,但正計劃在2018年初遷移到權益證明,提出Casper試圖解決工作量證明和權益證明中的問題。Decred採用的是工作量證明和權益證明的混合共識方案。

四、委任權益證明DPOS

DPOS是權益共識的一種改進版本,共識過程不再需要所有參與節點的大多數通過,而是委託部分代表來進行,這樣可以進一步提高共識效率,也能較好地處理系統節點不線上的問題。在位元股(Bitshare)系統中採用的DPOS共識的原理是讓每一個持有位元股的人進行投票,由此產生101位代表, 他們彼此的權利完全平等,可以將其理解為101個超級節點或者礦池。

從某種角度來看,DPOS與議會制度或人民代表大會制度有相似之處。如果代表不能履行他們的職責,例如當輪到他們產生區塊時沒能按時生成,他們會被除名,繼而網路會選出新的超級節點來將其取代。採用DPOS共識的系統通常都會採用經濟方面的獎勵和懲罰機制來達成更穩定的共識。

五、實用拜占庭容錯共識PBFT

PBFT是一種基於嚴格數學證明的演算法,需要經過三個階段的資訊互動和區域性共識來達成最終的一致輸出。可以證明,系統中只要有三分之二以上比例的正常節點,就能保證最終一定可以輸出一致的共識結果,儘管達成共識的時間不確定。

實用拜占庭容錯協議的缺點在於不適用於大規模的節點共識,因為隨著節點規模的增大,達成共識需要的時間大大增加,不符合效率需求。許多相關研究人員在探討改進拜占庭協議,以解決不同應用場景下的效率問題。

六、總結

共識演算法的效能直接影響著分散式系統的效能,例如安全性、魯棒性、共識成本和效率等。如何在兼顧安全性和魯棒性的基礎上提高效率是一個需要持續討論和研究的重點。目前關於區塊鏈共識的各種研究也在根據具體應用場景做出多方面的改進,除了技術方案的改進之外,還需要結合經濟和社會等因素尋找更加有針對性、更加完善的解決方案。

總的來說,對於區塊鏈共識方案的研究為分散式系統中的一致性問題提供了較好的解決方案,目前已經有一些演算法能較好地解決分散式系統中的共識等問題,在EUROCRYPT,ACM, Cryptology ePrint Archive等高水平會議、刊物上也有高質量的文章發表,對於上述問題進行了更深刻和前瞻性的探討,但該領域仍然由許多問題有待解決,仍有很大的研究價值和發展空間。