什么是共識?
我們所說的共識,是指達成了廣泛的一致。 比如,一群人去吃晚飯, 如果他們對于提議“吃某火鍋”沒有任何異議,那么就可以說共識達成了。 如果存在異議,那么他們就必須通過某種方法決定吃什么。 在極端情況下,這群人就會分開。
什么是共識機制?
區塊鏈要成為一個難以攻破的、公開的、不可篡改數據記錄的去中心化誠實可信系統,需要在盡可能短的時間內做到分布式數據記錄的安全、明確及不可逆,提供一個最堅實且去中心化的系統。共識機制在區塊鏈中成為了重要的因素之一。
區塊鏈分布式記賬的方式使得每個人手上都有一本完整的賬本,全網共有。但是隨著節點的不斷增多,數據越多,賬本也越安全,難以摧毀。除此之外,任意一個或者部分節點的賬本被篡改,都不可能被全網認同,除非你能控制51%的節點,即51%攻擊,但是這耗能巨大,幾乎是不可能的。同時隨著節點不斷增加,誰來記賬,如何選擇合適的人來記賬成為一個問題,而制定一個記賬人的選擇方式以及規定,讓大家來遵守這個規定,達成共識,這就是區塊鏈里面的共識機制。
共識機制是區塊鏈節點就區塊信息達成全網一致共識的機制,說得更直白一些就是要解決所謂去中心化的信任問題,因為每個節點之間默認是不認識且不可靠的,同時每個節點都不能知道其他節點是否宕機或者背叛的情況下,盡可能的保證記錄信息的準確性以及安全性。同時節點越分散,效率越低,網絡對于信息的滿意度越高,越安全。
共識機制的目標
區塊鏈作為一種按時間順序存儲數據的數據結構,可支持不同的共識機制。共識機制是區塊鏈技術的重要組件。區塊鏈共識機制的目標是使所有的誠實節點保存一致的區塊鏈視圖,同時滿足兩個性質:
1)一致性:所有誠實節點保存的區塊鏈的前綴部分完全相同。
2)有效性:由某誠實節點發布的信息終將被其他所有誠實節點記錄在自己的區塊鏈中。
為什么需要共識機制?
在分布式系統中,各個不同的主機通過異步通信方式組成網絡集群。為了保證每個主機達成一致的狀態共識,就需要在主機之間進行狀態復制。異步系統中,可能會出現各樣的問題,例如主機出現故障無法通信,或者性能下降,而網絡也可能發生擁堵延遲,類似的種種故障有可能會發生錯誤信息在系統內傳播。因此需要在默認不可靠的異步網絡中定義容錯協議,以確保各主機達成安全可靠的狀態共識。所以,利用區塊鏈構造基于互聯網的去中心化賬本,需要解決的首要問題是如何實現不同賬本節點上的賬本數據的一致性和正確性。
這就需要借鑒已有的在分布式系統中實現狀態共識的算法,確定網絡中選擇記賬節點的機制,以及如何保障賬本數據在全網中形成正確、一致的共識。
如何評價一個共識機制的優劣:
-
安全性:能否有效防止二次支付,私自挖礦
-
擴展性:當系統成員和待確認交易數量增加時,所帶來的系統負載和網絡通信量的變化,通常以網絡吞吐量來衡量
-
性能效率:每秒可以處理的交易數量
-
資源消耗:達成共識過程中,所要消耗的CPU、內存等計算資源
共識機制分類
沒有一種共識機制是完美無缺的,各共識機制都有其優缺點,有些共識機制是為解決一些特定的問題而生。
BTC作為區塊鏈的第一個應用,它的共識機制PoW共識機制曾經一枝獨秀,但是隨著區塊鏈技術的不斷發展,各類不同的共識機制開始不斷涌現,各有千秋,各有擁躉。
常見的共識就機制包括:POW(工作量證明機制)、POS(權益證明機制)、POW+POS(混合共識機制)、DPOS(股份授權證明)等等,另外還有Pool驗證池、Ripple瑞波共識協議、PBFT(使用拜占庭容錯算法)等等
PoW( Proof of Work)工作量證明:多勞多得
最早(也是第一個)被應用的共識機制,最先被BTC采用并且獲取了巨大成功,它支撐了BTC系統長達 10 多年無重大故障使其平穩運行。而且 PoW 構想也符合創始人中本聰最初的設想:人人皆可挖礦、按勞分配、公平公正。
PoW 屬于按勞分配,多勞多得,就如同大家在BTC系統中一起進行數學運算,最先運算出的才能獲得獎勵。是一種衡量計算機工作量的共識機制。BTC使用的就是工作量證明機制。
工作量證明主要通過哈希計算找出合理數據的步驟來完成:將區塊頭數據帶入哈希函數計算公式,不斷調整區塊頭數據中的隨機數,直到計算出滿足特定標準的哈希值,工作量證明就會完成。
簡單來說就是多勞多得,誰的算力強,計算得就更快,獲得記賬權的概率就越高,算力競爭的勝者將獲得相應區塊記賬權和BTC獎勵。 因此,礦機芯片的算力越高,挖礦的時間更長,就可以獲得更多的數字貨幣。進行運算獲得獎勵的過程稱之為挖礦,參與挖礦的人們稱之為礦工。這種證明方式決定了其驗證過程需要大量的數據計算,而其他節點卻很容易驗證計算結果是否正確,因此 區塊鏈系統無法被惡意節點所欺騙。但是這種證明方式需要消耗大量能源(電力及計算硬件損耗),很不 環保。并且在理論上,如果集合了全網51%的算力即可對區塊鏈網絡進行有效攻擊,因此許多基于比特幣 代碼產生的、市值較小的山寨幣很容易遭受攻擊。
代表token:BTC、BCH、LTC等。
優點
-
公平公正:去中心化程度高,人人都可以參與獲得記賬權;
-
安全系數高:全網算力越高,其安全程度也越高,如破壞該系統需要投入巨大成本;
-
算法簡單,容易實現
缺點
-
資源浪費:因每一筆交易都需要通過多數礦工的確認,在這些礦工進行運算的過程中消耗大量的電力資源等。
-
效率低下:區塊的確認時間難以縮短;容易產生分叉,需要等待多個確認。
-
算力集中:根據往年數據顯示,在資本大量進入的情況下,過去一年礦池算力份額排名前五位的礦池占據了BTC總算力份額的 65%,馬太效應逐漸顯現,而算力過度集中還存在著 51% 攻擊的風險。
-
永遠沒有最終性,需要檢查點機制來彌補最終性。
PoS(Proof of Stake)股權證明算法:持有越多,獲得越多
因 PoW 存在的問題,PoS 在主流算法一路暢通的“殺了出來”,成為了最具有挑戰者。近幾年,基于 PoS共識打造的區塊鏈項目越來越多,如目前市值保持第二的ETH也加入了 PoS。“Staking經濟”在 2019年成為了熱門詞語,同時也被交易所和錢包大力追捧。
POS機制采用類似股權證明與投票的機制,選出記帳人,由它來創建區塊。持有股權愈多則有較大的特權,且需負擔更多的責任來產生區塊,同時也獲得更多收益的權力。 POS 機制中一般用幣齡來計算記賬權,每個幣持有一天算一個幣齡,比如 持有 100 個幣,總共持有了 30 天,那么此時的幣齡就為 3000。在 POS機制下,如果記賬人發現一個 POS 區塊, 他的幣齡就會被清空為 0,每被清空 365 幣齡,將會從區塊中獲得 0.05 個幣的利息(可理解為年利率 5%)。
PoS權益證明同樣需要通過計算找出合理的哈希值來完成。 但不同的是權益證明機制通過節點持有加密貨幣的時間和數量來判斷節點的權益大小。根據權益大小不同,用戶之間看到的計算目標值也不同。權益大的節點,獲得目標值更加簡單,更容易獲得下一個區塊的記賬權。 這種方式不需要每個節點都進行大量的運算,節省了電力能源。同時全網51%的算力攻擊在權益證明機制下是無效的,因為發起這種攻擊反而會損害自身的利益。但是可能會出現幣種持有數量大的節點權力過 大,對區塊鏈記賬享有絕對支配權的情況,容易引發信任問題。
在 PoS 機制中,是不需要消耗電力來進行運算,而是通過抵押 token 來獲得打包區塊的權利。當一筆交易發生時,系統會對打包區塊和驗證區塊的節點來進行獎勵,獎勵則是增發或者解鎖的 token。
代表token:ADA、ONT、ATOM等。
優點
-
不浪費資源、效率高:因其不需要拼算力挖礦,同時縮短了共識達成的時間,轉賬效率提高了;
-
弱化了中心礦池規模經濟的需求:算力集中壟斷的情形也得到了緩解,個體競爭力差別相對減小;
缺點
-
被動形成中心化:因去中心化程度,容易出現強者恒強的情況,會導致富者越富,資源越來越集中的情況。
-
安全隱患:PoS機制實現較為復雜,容易產生安全漏洞。
-
無權益問題(Nothing at Stake):用戶在PoS中可以同時在兩個分叉上面下注;無論哪一個分叉后面被公認為主鏈,該用戶都可以獲得獎勵而沒有機會成本的損失。這樣也在事實上會干擾共識的形成。
-
還是需要挖礦,本質上沒有解決商業應用的痛點。
DPOS(Delegated Proof-of-Stake)股份授權證明
DPoS 機制是在 PoS 的基礎上進行了改良,舉例來說就是大家公認的投出選票,選舉出一定數量的代表,讓這些代表進行驗證和記賬等,可以理解為PoS 的升級版。與PoS的主要區別在于持幣者投出一定數量的節點,代理他們進行驗證和記賬。其合規監管、性能、資源消耗和容錯性與PoS相似。
DPoS的工作原理為:每個股東按其持股比例擁有影響力,51%股東投票的結果將是不可逆且有約束力的。其挑戰是通過及時而高效的方法達到51%批準。為達到這個目標,每個股東可以將其投票權授予一名代表。獲票數最多的前100位代表按既定時間表輪流產生區塊。每名代表分配到一個時間段來生產區塊。所有的代表將收到等同于一個平均水平的區塊所含交易費的10%作為報酬。如果一個平均水平的區塊含有100股作為交易費,一名代表將獲得1股作為報酬。DPoS的投票模式可以每30秒產生一個新區塊。
簡單點說:DPoS 委托權益證明通過由持幣人投票選舉出一定數量的代表來達成共識。 每個持幣人的投票所占的比重 與他持有的幣種數量有關,持有的越多,所占的比重越大。被選出的代表可擁有記賬權,輪流進行記賬;未能很好履行職責的代表還會被投票除名。這一任期結束后,新的代表會再次通過投票產生。
代表token:EOS、TRX等。
優點
-
比 PoS 機制擁有更高的效率和性能:相比于 PoS 機制,DPoS 大幅縮小了參與驗證和記賬的節點數量,可以達到秒級的共識驗證。
缺點
-
整個共識機制還是依賴于token,很多商業應用是不需要代幣存在的。
-
去中心化程度低:相比較于只能說是弱中心化;
-
安全問題嚴重:類 PoS 機制的通病,相信大家都看到過報道,如被黑客攻擊等等。
PoC(Proof of Capacity)容量證明機制
PoC 機制早在 2014年存在了,但只是一直處于“落魄階段”,簡單說就是沒火,無人問津。2019年隨著POC一大公鏈Yottachain的崛起,越來越多的礦工加入了POC硬盤挖礦這個行業大軍了。它是POW共識機制的一種,以硬盤作為共識參與者,它的特點是犧牲性能獲得安全可信,相對POW減少了非常多的安全和信任成本,更低成本解決了全局信任和安全,幾乎不耗電力資源,并且可共享和復用的信任生態。
PoC 機制是通過普通硬盤挖礦的共識機制。簡單來說就是利用計算機硬盤中的閑置空間來進行存儲進行挖礦獲取收益,硬盤空間越大,存儲的內容越多獲得的收益就越大。 它更多地關注內存而不是處理能力。 從某種意義上說,這是對PoW的改進,即使在挖掘開始之前,容量證明也要求節點將預先計算的哈希值存儲在其硬盤驅動器和其他內存單元上,這個過程稱為繪圖,繪圖使容量證明成為比工作證明更快的機制。這種方法的另一個優點是它可以節省大量能源,這與工作量證明機制不同。更不用說,硬盤存儲更多哈希值的任何技術改進也將為不在區塊鏈中的人改進技術,這與許多制造商制造的專用芯片不同,后者除了采礦之外什么都不做。
IPFS 也類似,但不同的是 IPFS 衍生的區塊鏈項目(激勵層Filecoin)是一種去中心化存儲服務的 Marketplace(撮合交易的市場),它的重點在于如何在系統參與者互不信任的條件下,實現存儲和檢索工作的量化;PoC 是一種底層共識機制,與 PoW、PoS一樣都是去中心化網絡達成一致性狀態的算法。由此來看,兩者是完全不同的概念,唯一的共同點就是都可以使用硬盤向網絡貢獻價值來換取收益。
代表token:BTT、BHD等。
優點
-
挖礦門檻較低:只要有硬盤就可以進行挖礦,大大降低了挖礦門檻;PoC的礦機耗電量低、噪音小、成本低,適合家庭挖礦和人人挖礦。
-
去中心化程度較高:抵押機制提高了算力集中化的門檻,即便有超級礦工出現,普通散戶也可以繼續獲得收益。
-
能源消耗低,節能:相比于PoW,POC挖礦將算力替換成硬盤空間,在很大程度的杜絕了POW挖礦造成的資源浪費以及對環境不友好等問題,同時降低了挖礦成本,讓礦工從挖礦中賺取更多的利潤。
-
反壟斷:用硬盤容量替代了算力,天然具有抗ASIC的屬性
缺點
-
未來發展的局限性可能較大
-
可能會有政策性風險
-
PoC并沒有實現真正的平等
DAG(Directed acyclic graph)有向無環圖:無區塊鏈概念
有向無環圖是計算機科學中眾所周知的數據結構。事實上,區塊鏈也是DAG的一個例子,因為它有一個明確的方向,沒有任何循環,并且是一個圖。1OTA使用的Tangle也是DAG共識機制的一種形式。在這種機制中,每個塊必須有兩個父塊。所以,為了通過DAG共識機制完成一筆交易,用戶需要驗證自己之前的兩筆交易。這種機制的最大優勢是它可以減少延遲和交易費用。然而,這種共識模型對提高可擴展性幾乎沒有任何作用,而且極易受到攻擊,因為任何攻擊只需要34%的哈希算力就可以破壞系統。
DAG最初出現就是為了解決區塊鏈的效率問題。其通過改變區塊的鏈式存儲結構,通過DAG的拓撲結構來存儲區塊。在區塊打包時間不變的情況下,網絡中可以并行的打包N個區塊,網絡中的交易就可以容納N倍。
之后DAG發展成為脫離區塊鏈,提出了blockless無區塊的概念。新交易發起時,只需要選擇網絡中已經存在的并且比較新的交易作為鏈接確認,這一做法解決了網絡寬度問題,大大加快了交易速度。
代表token:IOTA、byteball等。
前段時間國內首個基于DAG的物聯網區塊鏈項目ITC萬物鏈也取得了不小的漲幅。
優點
缺點
-
網絡規模不大,導致極易成為中心化;
-
安全性低于PoW機制
PBFT(Practical Byzantine Fault Tolerance)實用拜占庭容錯:分布式一致性算法
實用拜占庭容錯在保證活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容錯性。
在分布式計算上,不同的計算機透過訊息交換,嘗試達成共識;但有時候,系統上協調計算機(Coordinator / Commander)或成員計算機 (Member /Lieutanent)可能因系統錯誤并交換錯的訊息,導致影響最終的系統一致性。拜占庭將軍問題就根據錯誤計算機的數量,尋找可能的解決辦法,這無法找到一個絕對的答案,但只可以用來驗證一個機制的有效程度。而拜占庭問題的可能解決方法為:在 N ≥ 3F + 1 的情況下一致性是可能解決。其中,N為計算機總數,F為有問題計算機總數。信息在計算機間互相交換后,各計算機列出所有得到的信息,以大多數的結果作為解決辦法。
優點
-
系統運轉可以脫離幣的存在,pbft算法共識各節點由業務的參與方或者監管方組成,安全性與穩定性由業務相關方保證。
-
共識的時延大約在2~5秒鐘,基本達到商用實時處理的要求。
-
共識效率高,可滿足高頻交易量的需求。
缺點
-
當有1/3或以上記賬人停止工作后,系統將無法提供服務;
-
當有1/3或以上記賬人聯合作惡,且其它所有的記賬人被恰好分割為兩個網絡孤島時,惡意記賬人可以使系統出現分叉,但是會留下密碼學證據
實用拜占庭容錯主要應用于央行的數字貨幣以及布萌區塊鏈。
dBFT(delegated BFT)授權拜占庭容錯算法
小蟻采用的dBFT機制,是由權益來選出記賬人,然后記賬人之間通過拜占庭容錯算法來達成共識。dBFT和PBFT的關系類似于PoS和DPoS的關系。
dBFT在PBFT基礎上進行了以下改進:
-
將C/S架構的請求響應模式,改進為適合P2P網絡的對等節點模式;
-
將靜態的共識參與節點改進為可動態進入、退出的動態共識參與節點;
-
為共識參與節點的產生設計了一套基于持有權益比例的投票機制,通過投票決定共識參與節點(記賬節點);
-
在區塊鏈中引入數字證書,解決了投票中對記賬節點真實身份的認證問題。
優點
-
專業化的記賬人;
-
可以容忍任何類型的錯誤;
-
記賬由多人協同完成,每一個區塊都有最終性,不會分叉;
-
算法的可靠性有嚴格的數學證明;
缺點
-
當有1/3或以上記賬人停止工作后,系統將無法提供服務;
-
當有1/3或以上記賬人聯合作惡,且其它所有的記賬人被恰好分割為兩個網絡孤島時,惡意記賬人可以使系統出現分叉,但是會留下密碼學證據;
以上總結來說,dBFT機制最核心的一點,就是最大限度地確保系統的最終性,使區塊鏈能夠適用于真正的金融應用場景。
Pool驗證池——私有鏈專用
基于傳統的分布式一致性技術,加上數據驗證機制;之前曾是行業鏈大范圍在使用的共識機制,但是隨著私有鏈項目的逐漸減少漸漸開始勢微。
優點
不需要token也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基礎上,實現秒級共識驗證。
缺點
去中心化程度不如bictoin;更適合多方參與的多中心商業模式。
參考
拜占庭將軍問題
拜占庭將軍問題是一個協議問題,拜占庭帝國軍隊的將軍們必須全體一致的決定是否攻擊某一支敵軍。問題是這些將軍在地理上是分隔開來的,并且將軍中存在叛徒。叛徒可以任意行動以達到以下目標:欺騙某些將軍采取進攻行動;促成一個不是所有將軍都同意的決定,如當將軍們不希望進攻時促成進攻行動;或者迷惑某些將軍,使他們無法做出決定。如果叛徒達到了這些目的之一,則任何攻擊行動的結果都是注定要失敗的,只有完全達成一致的努力才能獲得勝利。
這一問題是一種對現實世界的模型化,尤指網絡當中由于軟硬件錯誤、網絡阻塞及惡意攻擊導致的各種未知行為。
顯然,在此處默認了將軍們在達成一致的過程中正確的傳遞出了自己的決定,也就是說叛徒只存在于將軍當中,不存在于傳令兵當中。故要讓拜占庭將軍問題有解,必須要具備一個重要前提,即信道必須是安全可靠的。關于信道可靠問題,會引出兩軍問題。兩軍問題的結論是,在一個不可靠的通信鏈路上試圖通過通信以達成一致是基本不可能或者十分困難的。
拜占庭容錯
拜占庭將軍問題提出后,有很多的算法被提出用于解決這個問題。這類算法統稱拜占庭容錯算法(BFT: Byzantine Fault Tolerance)。簡略來說,拜占庭容錯(BFT)不是某一個具體算法,而是能夠抵抗拜占庭將軍問題導致的一系列失利的系統特點。 這意味著即使某些節點出現缺點或惡意行為,拜占庭容錯系統也能夠繼續運轉。本質上來說,拜占庭容錯方案就是少數服從多數。
拜占庭將軍問題的原始論文給出了一些解決思路,但其更注重理論上的可行性。算法效率不高,算法復雜度為指數級,且文中明確指出時間成本及消息傳遞數量很大。因此不具備太大的實用價值。
拜占庭容錯系統需要達成如下兩個指標:
● 安全性:任何已經完成的請求都不會被更改,它可以在以后請求看到。在區塊鏈系統中,可以理解為,已經生成的賬本不可篡改,并且可以被節點隨時查看。
● 活性:可以接受并且執行非拜占庭客戶端的請求,不會被任何因素影響而導致非拜占庭客戶端的請求不能執行。在區塊鏈系統中,可以理解為,系統需要持續生成區塊,為用戶記賬,這主要靠挖礦的激勵機制來保證。
拜占庭系統目前普遍采用的假設條件包括:
● 拜占庭節點的行為可以是任意的,拜占庭節點之間可以共謀;
● 節點之間的錯誤是不相關的;
● 節點之間通過異步網絡連接,網絡中的消息可能丟失、亂序、延時到達;
● 服務器之間傳遞的信息,第三方可以知曉 ,但是不能竄改、偽造信息的內容和驗證信息的完整性;
科普 | 什么是共識機制?
詳解區塊鏈中常見的八大共識機制!
區塊鏈的幾大共識機制及優缺點
作者:彩云sky
來源:人人都是產品經理
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加藍小助,微信號:ben_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者.
免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( ssll180.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司