共識機制,區塊鏈的靈魂

買賣虛擬貨幣

  如果用一句話概括什麼是區塊鏈?可以簡單地用“去中心化分散式分類賬”來解釋。在許多人的認知裡,區塊鏈和“去中心化”和“去信任”密不可分。那麼這些透過什麼手段來實現呢?這就是共識機制的使命。

  共識機制,是在談論區塊鏈專案時總是繞不開的核心問題。那麼,共識機制究竟是個什麼?

  我們不妨先透過一個例子簡單地理解一下。假如一個公司有100名員工,要透過投票選舉的方式評選優秀員工。如果100人都參與投票,那麼參與度是100%;如果這100人選出了10個代表去投票,參與度則只有10%。這兩種投票方式,哪一種投票更能代表民意呢?毫無疑問是前者,因為參與度更高;相反,後者選出了10位代表去投票,參與度低,選舉結查難免會出現不公。

  透過參與度我們對共識有個簡單的理解。共識是一切交易的基礎,達成共識越分散(參與度越高),其效率就越低,但滿意度越高,因此也越穩定;相反,達成共識越集中(參與度越低),效率越高,也越容易出現獨裁和腐敗現象。

  所謂“共識機制”,是透過特殊節點的投票,在很短的時間內完成對交易的驗證和確認;對一筆交易,如果利益不相干的若干個節點能夠達成共識,我們就可以認為全網對此也能夠達成共識。

  再通俗一點來講,如果中國一名微博大V、美國一名虛擬幣玩家、一名非洲留學生和一名歐洲旅行者互不相識,但他們都一致認為你是個好人,那麼基本上就可以斷定你這人還不壞。

  在區塊鏈上,每個人都會有一份記錄鏈上所有交易的賬本,鏈上產生一筆新的交易時,每個人接收到這個資訊的時間是不一樣的,有些想要幹壞事的人就有可能在這時釋出一些錯誤的資訊,這時就需要一個人把所有人接收到的資訊進行驗證,最後公佈最正確的資訊。

  在這個賬本中,是如何對在幾乎相同時間內的產生的事物前後排序的,就涉及到區塊鏈網路的共識機制。所以共識機制,就是在一個時間段內對事物的前後順序達成共識的一種演算法。

  共識機制就像一個國家的法律,維繫著區塊鏈世界的正常運轉。如果說共識是區塊鏈的基礎,那共識機制就是區塊鏈的靈魂。

  對於初入鏈圈的人來說,最常聽到的是POW,POS,DPOS這三種共識機制。其實共識機制可不僅僅是這三種,富有創造力的天才們設計出各種各樣的共識機制,空間靠譜不靠譜呢?我們先來全面地瞭解一個共識機制。只有瞭解了自己才能有判斷的本領。

 共識機制的種類

  PoW(工作量證明機制)

  誰在用:BTC和BTC的兒子們(BCH、BCD等等),早期的ETH,LTC。

  工作量證明機制(Proof of Work - PoW)是我們最熟知的一種共識機制。就如字面的解釋,PoW就是工作越多,收益越大。這裡的工作就是猜數字,誰能最快的猜出這個唯一的數字,誰就能做資訊公示人。

  顧名思義,工作量證明是證明你完全某項任務所花費的精力(包括時間、腦力、體力等),同時也證明你達到了某個水平。在生活中,它類似於畢業證、駕照,大學畢業證可以證明你讀完了學制四年的大學課程,並透過了所有課程的考試,達到了所學專業的某個水平;駕照可以證明你學完了所有學時,並透過了四個科目的考試,達到了開車上路的水平。

  在眾多的區塊鏈應用中,使用工作量證明作為共識演算法的典型案例就是比特幣,如果瞭解比特幣,對比特幣挖礦一定不會陌生(如果對挖礦不太瞭解,強烈建議先看看《區塊鏈學堂——比特幣挖礦(一)》),假設比特幣的世界裡有A、B、C、D四個人,現在這四個人都在爭搶記賬許可權(挖礦),到底用什麼方式在保證公開、公正、透明的情況下,快速決定把記賬許可權歸誰呢?

  科學家們腦洞大開,發明了工作量證明機制,即每一次要爭奪記賬許可權,都給A、B、C、D四個人出一道題,誰要是第一時間算出了這道題的正確答案,就可以獲得一個證書——工作量證明,憑這個證明,就可以獲得記賬許可權。

  優點:演算法簡單,容易實現,有一定安全保障。完全去中心化。

  缺點:挖礦造成了巨大的資源浪費(為了爭奪記賬許可權不停地輪詢計算,耗電量巨大),而且達成共識的週期過長,導致每秒僅僅只能做幾筆交易(比特幣每秒只能做7筆交易),不適合商業應用。如今算力越來越集中,中心化日益嚴重。 比特幣網路解決了”拜占庭將軍問題“,其中一個前提條件,那就是多數人是好人(超過51%的節點是好節點),否則就會出現51%攻擊。而現在,礦池BTC.COM、蟻池和微位元,一共控制了超過51%的算力。如果他們聯合起來,或者被駭客控制,那麼就可能會發生51%攻擊。

  PoS益證明機制

  誰在用:未來幣,2017年至今,ETH一直為從POW轉移到POS作準備。

  權益證明機制(Proof of Stake-PoS)也屬於一種共識證明,它類似股權憑證和投票系統,因此也叫“股權證明演算法”。由持有最多(token)的人來公示最終資訊。

  為了彌補工作量證明達成共識週期過長的缺點,科學家們發明權益證明共識演算法,權益證明就是用股權代替PoW中的挖礦算力,來模擬比特幣的挖礦過程。A、B、C、D四個人誰擁有的代幣(類似於比特幣等數字貨幣)數量多,誰就有機會獲得記賬許可權。

  優點:不需要拼算力挖礦,從而節省了大量算力和電費,同時大大縮減了達成共識的時間,效率提高。。

  缺點:錢多的的人(節點),獲得記賬權的機率更大,容易產生壟斷。這會使得共識成為少數有錢人的遊戲,從而失去公正性。其次,所有的確認都只是概率上的表達,存在其他攻擊的可能性。挖礦成本低,硬分叉十分容易。

  DPos 股份授權證明

  誰在用:BTS, EOS

  股份授權證明類似於董事會投票,假設某個區塊鏈系統的世界裡有10萬人,現在這10萬人投票選出了4位股東作為代表來行駛記賬權,這4位董事分別是A、B、C、D,在記賬過程中,按順序每位董事有兩秒鐘的時間來記賬,如果在規定的時間內記賬失敗,則直接把許可權交給下一位董事,這樣原本10萬人參與記賬競爭的遊戲,現在變成了4人。

  這樣做的優點是大幅縮減了參與驗證和記賬的數量,形成共識幾乎可以達到秒級,缺點是固定數量的董事作為記賬候選人,與去中心化的理念相違背,董事數量太少,參與度太低,也缺乏一定的代表性。

  對比這三種最常用的共識演算法,不難發現各有利弊,它們的誕生都圍繞著一個核心——如何更加公平、公正、透明、輕量(不過多消耗資源)、高效(更快)地達成共識,挑選出記賬的人(節點)。

  優點:相比POS,DPOS機制大幅縮小參與驗證和記賬的節點的數量,屬於弱中心化,大大提高了效率。可以達到秒級的共識驗證。

  缺點:整個共識機制然依賴代幣,目前很多商業應用不需要使用代幣。很大程度上,DPOS將權利賦予了每個社羣成員,即真正關心專案的人。

  PooI驗證池

  Pool驗證池基於傳統的分散式一致性技術建立,並輔之以資料驗證機制,是目前區塊鏈中廣泛使用的一種共識機制。

  Pool驗證池不需要依賴代幣就可以工作,在成熟的分散式一致性演算法(Pasox、Raft)基礎之上,可以實現秒級共識驗證,更適合有多方參與的多中心商業模式。不過,Pool驗證池也存在一些不足,例如該共識機制能夠實現的分散式程度不如PoW機制等。

  優點:不需要代幣也可以工作,在成熟的分散式一致性演算法(Pasox、Raft)基礎上,實現秒級共識驗證。

  缺點:去中心化程度不如bictoin;更適合多方參與的多中心商業模式。

  瑞波協議共識演算法

  誰在用:Ripple Protocol Consensus Algorithm,RPCA

  瑞波協議共識演算法使得一組節點能夠基於由特殊信任節點達成共識。在瑞波網路中,每個服務節點都會維護一個信任節點列表且認為信任列表中的節點不會聯合起來作弊。在共識過程中,各個需要共識的交易需要接受只接受來自信任節點列表中節點的投票,只有超過一定閾值後才能達成共識。瑞波協議共識演算法比較高效,但是同樣屬於弱中心化且防攻擊能力比較弱。

  PBFT實用拜占庭容錯演算法

  誰在用:Practical Byzantine Fault Tolerance

  拜占庭共識演算法(Practical Byzantine Fault Tolerance- PBFT)也是一種常見的共識證明。它與之前兩種都不相同,PBFT以計算為基礎,也沒有代幣獎勵。由鏈上所有人參與投票,少於(N-1)/3個節點反對時就獲得公示資訊的權利。

  實用拜占庭容錯演算法是一種基於訊息傳遞的一致性演算法。該演算法經過預準備(Pre-prepare)、準備(Prepare)和確認(Commit)三個階段達成一致性。這些階段可能因為失敗而重複進行。實用拜占庭容錯演算法資訊在節點之間互相交換後,各節點列出所有得到的資訊最後以大多數的結果作為解決方法。

  優點:該演算法透過投票達成共識可以很好得解決包括分叉的問題同時提升網路效率,在保證靈活性和安全性的前提下最大允許(n-1)/3故障節點的容錯性,但是可擴充套件性相對較差。

  缺點:當有1/3或以上記賬人停止工作後,系統將無法提供服務;當有1/3或以上記賬人聯合作惡,且其它所有的記賬人被恰好分割為兩個網路孤島時,惡意記賬人可以使系統出現分叉,但是會留下密碼學證據;

  dBFT: delegated BFT 授權拜占庭容錯演算法

  誰在用:小蟻採用的dBFT機制

  是由權益來選出記賬人,然後記賬人之間透過拜占庭容錯演算法來達成共識。此演算法在PBFT基礎上進行了以下改進:將C/S架構的請求響應模式,改進為適合P2P網路的對等節點模式;將靜態的共識參與節點改進為可動態進入、退出的動態共識參與節點;為共識參與節點的產生設計了一套基於持有權益比例的投票機制,透過投票決定共識參與節點(記賬節點);在區塊鏈中引入數字證書,解決了投票中對記賬節點真實身份的認證問題。

  優點:專業化的記賬人;可以容忍任何型別的錯誤;記賬由多人協同完成,每一個區塊都有最終性,不會分叉;演算法的可靠性有嚴格的數學證明;

  缺點:當有1/3或以上記賬人停止工作後,系統將無法提供服務;當有1/3或以上記賬人聯合作惡,且其它所有的記賬人被恰好分割為兩個網路孤島時,惡意記賬人可以使系統出現分叉,但是會留下密碼學證據;

  Paxos

  Paxos被用於分散式系統中典型的例子就是Zookeeper,他是第一個被證明的共識演算法,其原理基於兩階段提交併擴充套件。

  Paxos演算法中將節點分為三種型別:proposer:提出一個提案,等待大家批准為結案。往往是客戶端擔任該角色acceptor:負責對提案進行投票。往往是服務端擔任該角色learner:被告知結案結果,並與之統一,不參與投票過程。可能為客戶端或服務端基本過程包括 proposer 提出提案,先爭取大多數 acceptor 的支援,超過一半支援時,則傳送結案結果給所有人進行確認。一個潛在的問題是 proposer 在此過程中出現故障,可以透過超時機制來解決。極為湊巧的情況下,每次新的一輪提案的 proposer 都恰好故障,系統則永遠無法達成一致(概率很小)。Paxos 能保證在超過50%的正常節點存在時,系統能達成共識。

  Raft

  Raft演算法是對Paxos演算法的一種簡單實現。

  它包括三種角色:leader、candiate 和 follower,其基本過程為:Leader 選舉:每個 candidate 隨機經過一定時間都會提出選舉方案,最近階段中得票最多者被選為 leader同步 log:leader 會找到系統中 log 最新的記錄,並強制所有的 follower 來重新整理到這個記錄,這裡的log指的是各種事件的發生記錄

  共識機制存在的問題

  A、計算能力浪費

  在工作量證明機制POW中,猜數字最快的通常是電腦計算能力強的。超強的計算能級僅用來猜數字,實在是浪費。

  B、權益向頂層集中

  在權益證明機制POS中,token的餘額越多的人獲得公示資訊的概率越高,公示人會得到一定的token作為獎勵,如此持有token多的人會越來越多,少的人越來越少。

  C、作惡成本低下

  在靠算力與權益的的多少來獲得公示資訊的權利的模式當中,當算力和權益向少數人集中之後,這些少數人如果想要做一些違反規則的事情是輕而易舉的;在PBFT中,由所有人投票,如果一個沒有任何token餘額的人想要搗亂,那他幾乎是完全沒有利益損失。

  D、對於真正的去中心化構成威脅

  在工作量證明機制中,計算能力越強,獲得記錄權利的概率就越高。如果有人把很多人集中在一起來猜數字,把好多電腦的算力加在一起來用,那這些抱團的人就會更容易獲得公示資訊的權利,發展到最後可能公示權就直接掌握在這些人手裡。

  在權益證明機制POS中,權益越大的人獲得記錄權利的概率越高,而記錄的人就會有獎勵token ,這樣一來這些人就會越來越富有,貧富差距就會越來越大。持有token少的人幾乎都沒有話語權了。權利掌握在少數人手中,這有違區塊鏈去中心化理念。

  評判共識機制優劣的四個標準

  區塊鏈上採用不同的共識機制,在滿足一致性和有效性的同時會對系統整體效能產生不同影響。綜合考慮各個共識機制的特點,從以下4個維度評價各共識機制的技術水平:

  1)安全性。

  即是否可以防止二次支付、自私挖礦等攻擊,是否有良好的容錯能力。以金融交易為驅動的區塊鏈系統在實現一致性的過程中,最主要的安全問題就是如何防止和檢測二次支付行為。自私挖礦透過採用適當的策略釋出自己產生的區塊,獲得更高的相對收益,是一種威脅比特幣系統安全性和公平性的理論攻擊方法。此外,Eclipse攻擊控制目標物件的網路通訊,形成網路分割槽,阻隔交易傳播。Sybil攻擊透過生產大量無意義的節點影響系統安全性。

  2)擴充套件性。

  即是否支援網路節點擴充套件。擴充套件性是區塊鏈設計要考慮的關鍵因素之一。根據物件不同,擴充套件性又分為系統成員數量的增加和待確認交易數量的增加兩部先擴充套件性主要考慮當系統成員數量、待確認交易數量增加時,隨之帶來的系統負載和網路通訊量的變化,通常以網路吞吐量來衡量。

  3)效能效率。

  目隊交易達成共識被記錄在區塊鏈中至被最終確認的時間延遲,也可以理解為系統每秒可處理確認的交易數量。與傳統第三方支援的交易平臺不同,區塊鏈技術透過共識機制達成一致,因此其效能效率問題一直是研究的關注點。比特幣系統每秒最多處理7筆交易,遠遠無法支援現有的業務量。

  4)資源消耗。

  即在達成共識的過程中,系統所要耗費的計算資源大小,包括CPU、記憶體等。區塊鏈上的共識機制藉助計算資源或者網路通訊資源達成共識。以比特幣系統為例,基於工作量證明機制的共識需要消耗大量計算資源進行挖磯提供信任證明完成共識。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;