轉自:區塊鏈大師
1. 傳統分布式一致性算法和區塊鏈共識過程的異同點
相同點:
-
Append only(只能增加)
-
強調序列化
-
少數服從多數原則
-
分離覆蓋的問題:即長鏈覆蓋短鏈區塊,多節點覆蓋少數節點日志
不同點:
-
傳統分布式一致性算法大多不考慮拜占庭容錯(Byzanetine Paxos除外),即假設所有節點只發生宕機、網絡故障等非人為問題,並不考慮惡意節點篡改數據的問題;
-
傳統分布式一致性算法是面向日志(數據庫)的,即更通用的情況,而區塊鏈共識模型面向交易的,所以嚴格來說,傳統分布式一致性算法應該處於區塊鏈共識模型的下面一層。
2. 區塊鏈共識模型與傳統一致性算法的關系
考慮上面的不同點,結合私有鏈和行業鏈的性質,我們有:
-
私有鏈:封閉生態的存儲網絡,所有節點都是可信任的,如某大型集團內部多數公司。
-
行業鏈:半封閉生態的交易網絡,存在對等的不信任節點,如房地產行業A、B、C、D公司。
-
公有鏈:開放生態的交易網絡,這層主要是為行業鏈和私有鏈提供全球交易網絡。
由於私有鏈是封閉生態的存儲網絡,也就是說使用傳統分布式一致性模型應該是最優的;
由於聯盟行業鏈其半封閉半開放特性,使用Delegated Proof of XXX 是最優的,可以考慮以傳統一致性算法作為基礎加入拜占庭容錯/安全防護機制進行改進。
公有鏈PoW應該仍然是最優的選擇。
傳統分布式一致性算法介紹
本文主要討論主流的Paxos算法家族和Raft算法,這里拋磚引玉,網絡上有關兩者的資料非常豐富,大家可自行搜索查閱。
1. Paxos 算法家族
1998年Lamport提出Paxos算法,后續又增添多個改進版本的Paxos形成Paxos協議家族,且Paxos都有共同點是不容易工程實現。
-
Classic Paxos :LeaderLess,又名Basic Paxos,以下均為Paxos的變種,基於CAP定律,側重了不同方向。
-
Cheap Paxos
-
Egalitarian Paxos : conflicts rare
-
Fast Paxos : Leader only when needed ,conflicts common
-
Multi-Paxos :Leader driven
-
Byzanetine Paxos
"Byzantine Paxos adds an extra message (Verify) which acts to distribute knowledge and verify the actions of the other processors".Lamport 在2011年的論文《Leaderless Byzanetine Paxos》中表示不清楚實踐中是否有效,考慮Paxos本身實現的難度,此方案工程角度不是最優,但是系統角度應該是最好的。
本小節Ref:
Wikipedia_Paxos
Leaderless Byzanetine Paxos
2 Raft 算法
這是一個非常友好的算法,容易理解、實現,不過它是Strong Leadership的,也就是說,
任意包含Leader的時刻,Leader擁有完全記賬權,如果此Leader節點是惡意的,后果不堪設想。
且leadership的一致性算法都有個通病,吞吐量受單個節點的限制,這點在Raft身上體現尤甚。
Raft算法簡介:https://raft.github.io/
Raft算法動態演示:http://thesecretlivesofdata.com/raft/
3. 其他
VRR(Viewstamped Replication Revisited)
這也是一個基於leadership的一致性算法,相比上述其他算法,它的優點是延遲最小。
三、常見區塊鏈共識模型介紹
轉載自這里:https://bitsharestalk.org/index.php?topic=4031.0
這是DPoS的白皮書,主要介紹了DPos,但也囊括了其他共識模型的介紹。