區(qū)塊鏈中的共識機制

區(qū)塊鏈解決了在不可信信道上傳輸可信信息、價值轉移的問題,而共識機制解決了區(qū)塊鏈如何在分布式場景下達成一致性的問題。所以區(qū)塊鏈的偉大之處就是它的共識機制在去中心化的思想上解決了節(jié)點間互相信任的問題。區(qū)塊鏈能在眾多節(jié)點達到一種較為平衡的狀態(tài)也是因為共識機制。盡管密碼學占據了區(qū)塊鏈的半壁江山,但是共識機制是保障區(qū)塊鏈系統(tǒng)不斷運行下去的關鍵。

其實當分布式的思想被提出來時,人們就開始根據FLP定理和CAP定理設計共識算法。

規(guī)范的說,理想的分布式系統(tǒng)的一致性應該滿足以下三點:
1.可終止性(Termination):一致性的結果可在有限時間內完成。
2.共識性(Consensus):不同節(jié)點最終完成決策的結果應該相同。
3.合法性(Validity):決策的結果必須是其他進程提出的提案。

但是在實際的計算機集群中,可能會存在以下問題:

1.節(jié)點處理事務的能力不同,網絡節(jié)點數據的吞吐量有差異
2.節(jié)點間通訊的信道可能不安全
3.可能會有作惡節(jié)點出現
4.當異步處理能力達到高度一致時,系統(tǒng)的可擴展性就會變差(容不下新節(jié)點的加入)。

科學家認為,在分布式場景下達成完全一致性是不可能的。但是工程學家可以犧牲一部分代價來換取分布式場景的一致性,上述的兩大定理也是這種思想,所以基于區(qū)塊鏈設計的各種公式機制都可以看作犧牲那一部分代價來換取多適合的一致性,我的想法是可以在這種思想上進行一個靈活的變換,即在適當的時間空間犧牲一部分代價換取適應于當時場景的一致性,可以實現靈活的區(qū)塊鏈系統(tǒng),即可插拔式的區(qū)塊鏈系統(tǒng)。今天就介紹一下我對各種共識機制的看法和分析,分布式系統(tǒng)中有無作惡節(jié)點分為拜占庭容錯和非拜占庭容錯機制。下面先介紹拜占庭容錯的共識算法:

POW:比特幣萊特幣等貨幣型區(qū)塊鏈(公有鏈)(proof of work)

在比特幣等貨幣型區(qū)塊鏈中讓各節(jié)點達成一致性的共識機制為工作量證明,也是我們說的挖礦。
工作量證明是礦工在處理交易數據(對數據也是進行哈希)的同時不斷的進行哈希計算,求得一位前23位為0的哈希值,這個值成為nonce黃金數。當全網有一位礦工哈希出nonce時,他就會把自己打包的區(qū)塊公布出去,其他節(jié)點收到區(qū)塊驗證區(qū)塊后就會一致性認為這個區(qū)塊接到了區(qū)塊鏈上,就繼續(xù)進行下一個區(qū)塊的打包和哈希計算。在這個過程中,中本聰大神是通過算力的比拼犧牲了一部分最終一致性(因為會有分叉的產生)并且需要等待多個確認,但是這種簡單暴力的方法卻保證了整個區(qū)塊鏈系統(tǒng)的合法性,而且把區(qū)塊鏈系統(tǒng)的健壯性提升到極致,就算全網只剩下一個節(jié)點運行,這個區(qū)塊鏈系統(tǒng)還是會繼續(xù)運行下去。最后POW也充分提高了區(qū)塊鏈系統(tǒng)的安全性,依靠51%攻擊理論去破壞區(qū)塊鏈系統(tǒng)是只有政府或者瘋子才會采取的方法。

優(yōu)點:
完全去中心化節(jié)點自由進出,容易實現。破壞系統(tǒng)花費的成本巨大

缺點:對節(jié)點的性能網絡環(huán)境要求高無法達成最終一致性最關鍵的,浪費能源!

POS:Bitshares和qutm等合約型區(qū)塊鏈(proof of stake)

如果簡單的把POW當作比力量大小的話,POS就是比耐力多少。

POS是根據錢包里面貨幣的多少以及貨幣在錢包里存在的天數來合成一個單位(幣天)。它根據幣天的關系對計算機進行哈希計算降低了難度,降低了計算機的門檻,但是對計算機還是有一定要求的,它把錢包和區(qū)塊鏈系統(tǒng)的一致性綁定在一起。誰的錢包里的幣天數越大誰擁有記賬權的概率就越大。但是它和POW機制一樣解決問題的思想也導致了它與POW擁有一樣的缺點,也是犧牲了一部分的共識(同樣分叉),而且需要等待多個確認。

優(yōu)點:對節(jié)點性能要求低,達成共識時間短(網絡環(huán)境好的話可實現毫秒級)

缺點:沒有最終一致性

DPOS

是基于POS衍生出的更專業(yè)的解決方案,他是類似于董事會的投票機制,選舉出n個記賬節(jié)點,在節(jié)點中提案者提交的提案被這些記賬節(jié)點投票決定誰是正確的。

優(yōu)點:減少記賬節(jié)點規(guī)模,屬于弱中心化,效率提高。

缺點:犧牲了去中心化的概念,不適合公有鏈。
以太坊前三個階段即Frontier(前沿)、Homestead(家園)、Metropolis(大都會)。第四個階段,即Serenity(寧靜),將采用PoS機制。Casper:以太坊前三個階段采用的是POW共識機制,第四個階段將采用自己創(chuàng)建的POS機制,名為投注共識。這種機制增加了懲罰機制,并基于POS的思想在記賬節(jié)點中選取驗證人。詳情見以太坊紫皮書。

dBFT:小蟻區(qū)塊鏈(delegated BFT,授權拜占庭容錯機制)

用權益來選出記賬人,然后記賬人之間通過拜占庭容錯算法 達成共識。

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

缺點:當三分之一或以上記賬人停止工作后,系統(tǒng)將無法提供服務當三分之一或以上記賬人聯合作惡,且其他所有的記賬人恰好分割為兩個網絡孤島時,惡意記賬人可以使系統(tǒng)出現分叉,但是會留下密碼學證據

PBFT:Fabric使用的經典算法(拜占庭容錯)

這是一種基于消息傳遞的一致性算法,算法經過三個階段達成一致性,這些階段可能因為失敗而重復進行。
假設節(jié)點總數為3f+1,f為拜占庭錯誤節(jié)點:

當節(jié)點發(fā)現leader作惡時,通過算法選舉其他的replica為leader。
leader通過pre-prepare (第一個協議階段)消息把它選擇的 value廣播給其他replica節(jié)點,其他的replica節(jié)點如果接受則發(fā)送 prepare(第二個協議階段),如果失敗則不發(fā)送。
一旦2f個節(jié)點接受prepare消息,則節(jié)點發(fā)送commit(第三個協議階段)消息。
當2f+1個節(jié)點接受commit消息后,代表該value值被確定 如下圖表示了4個節(jié)點,0為leader,同時節(jié)點3為fault節(jié)點,該節(jié)點不響應和發(fā)出任何消息。最終節(jié)點狀態(tài)達到commited時,表示該輪共識成功達成。 注:預準備階段(pre-prepare): 主節(jié)點分配一個序列號n給收到的請求,然后向所有備份節(jié)點群發(fā)預準備消息,預準備消息的格式為<<PRE-PREPARE,v,n,d>,m>,這里v是視圖編號,m是客戶端發(fā)送的請求消息,d是請求消息m的摘要。 準備階段(prepare): 如果備份節(jié)點i接受了預準備消息<<PRE-PREPARE,v,n,d>,m>,則進入準備階段。在準備階段的同時,該節(jié)點向所有副本節(jié)點發(fā)送準備消息<PREPARE,v,n,d,i>,并且將預準備消息和準備消息寫入自己的消息日志。如果看預準備消息不順眼,就什么都不做。 確認階段(commit): 當(m,v,n,i)條件為真的時候,副本i將<COMMIT,v,n,D(m),i>向其他副本節(jié)點廣播,于是就進入了確認階段。

優(yōu)點:上述其他算法都脫離不了幣的存在,幣的存在及它的獎勵機制會讓區(qū)塊鏈這一單一的世界窮者更窮,富者更富。共識效率高,可實現高頻交易。

缺點:當系統(tǒng)只剩下33%的節(jié)點運行時,系統(tǒng)會停止運行。

非拜占庭容錯的共識機制即不考慮有惡意節(jié)點的情況,人們考慮到1990 年由 Leslie Lamport 提出的 Paxos 共識算法,在工程角度實現了一種最大化保障分布式系統(tǒng)一致性(存在極小的概率無法實現一致)的機制。

Paxos

Paxos被用于分布式系統(tǒng)中典型的例子就是Zookeeper,他是第一個被證明的共識算法,其原理基于兩階段提交并擴展。
Paxos算法中將節(jié)點分為三種類型:proposer:提出一個提案,等待大家批準為結案。往往是客戶端擔任該角色acceptor:負責對提案進行投票。往往是服務端擔任該角色learner:被告知結案結果,并與之統(tǒng)一,不參與投票過程??赡転榭蛻舳嘶蚍斩嘶具^程包括 proposer 提出提案,先爭取大多數 acceptor 的支持,超過一半支持時,則發(fā)送結案結果給所有人進行確認。一個潛在的問題是 proposer 在此過程中出現故障,可以通過超時機制來解決。極為湊巧的情況下,每次新的一輪提案的 proposer 都恰好故障,系統(tǒng)則永遠無法達成一致(概率很小)。Paxos 能保證在超過50%的正常節(jié)點存在時,系統(tǒng)能達成共識。

Paft

Raft算法是對Paxos算法的一種簡單實現。
它包括三種角色:leader、candiate 和 follower,其基本過程為:Leader 選舉:每個 candidate 隨機經過一定時間都會提出選舉方案,最近階段中得票最多者被選為 leader同步 log:leader 會找到系統(tǒng)中 log 最新的記錄,并強制所有的 follower 來刷新到這個記錄,這里的log指的是各種事件的發(fā)生記錄

Pool驗證池:布比區(qū)塊鏈

基于傳統(tǒng)的分布式一致性技術,加上數據驗證機制。
優(yōu)點:不需要代幣也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基礎上,實現秒級共識驗證。缺點:去中心化程度不如bictoin;更適合多方參與的多中心商業(yè)模式。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容