微眾銀行BCOS平臺共識演算法PBFT和RAFT
文章選自BCOS白皮書
共識機制不但是計算機之間的演算法和資料共識,也是合作伙伴之間進行協作的共識,共識機制使區塊鏈的參與者通過約定的方式進行共同記賬,確保合作者之間的記賬正確性、一致性、持續性,避免少數出現故障的節點影響網路執行,並防禦少數故意作惡者的破壞。公有鏈如比特幣、以太坊等使用的共識演算法通常為工作量證明或權益證明等,可以根據投入權益和記賬的行為,對記賬者制定獎勵和懲罰制度。公有鏈上的共識演算法一般確認時間較長,或需要較多的算力投入。
聯盟鏈共識機制的設計目標和公有鏈有所不同, BCOS 平臺不會根據記賬的計算量對記賬者進行經濟獎勵,而是鼓勵參與者在共同維護聯盟鏈、 促進生態系統發展、推進商業合作的過程中獲得價值或收益。在此過程中產生的糾紛或非法行為,將採用監管審計和法律仲裁結合的方式解決。 BCOS 平臺共識機制的實現符合聯盟鏈場景需求,可避免算力浪費、防分叉和提升執行穩定性。
BCOS 平臺採用高效的 PBFT、 RAFT 共識演算法,採用外掛化設計實現,通過修改系統配置,即可以在一個聯盟鏈裡使用不同的共識機制,參與到這個聯盟鏈的所有節點必須採用同一種共識配置。
BCOS 平臺所使用的 PBFT 共識演算法的特性包括:
1.共識節點輪流出塊,具有同等的記賬權,體現了參與者的對等性,且防止個別記賬者作惡
2.秒級出塊,可配置為 1 秒到幾秒出塊,滿足交易短時間內響應的需求;
3. 支援 1/3 容錯,整個系統中少於等於 1/3 數量的節點出現故障或作惡,均不影響共識進行;
4. 在區塊同步的過程中嚴格校驗簽名,保證資料的安全性。
PBFT 共識具有高一致性、 高可用性, 抗欺詐能力較強,是聯盟鏈裡較為實用的一種共識演算法,經過流程優化,也具有較高的效率。
BCOS 平臺所使用的 RAFT 共識演算法特性包括:
共識節點達到出塊條件,即把當前塊作為候選區塊發起選舉,所有共識節點具有同等選票權重,體現了參與者的對等性;
候選區塊超過半數贊成票才提交到區塊鏈中,保證高一致性;
如果超時沒有收集超過半數的回覆票,則重新發起選舉,保證系統的容錯恢復能力;
秒級出塊,可以配置為 1 秒或多秒出塊;
支援 1/2 節點容錯,整個系統中少於 1/2 數量的節點出現故障,均不影響共識進行;
在選舉過程和區塊同步過程中嚴格校驗簽名,保證資料的安全性。
RAFT 共識具有較高的效率、 高一致性和高可用性。與 PBFT 共識的拜占庭容錯特性對比, RAFT 共識並不嚴格保證抗欺詐性,適用於互信程度較高的聯盟鏈。
聯盟鏈的共識演算法在節點總數不多、 網路規模不太大時,可以提供較高的交易併發處理能力。但隨著節點數量增多,比如達到幾百個共識節點的規模時,由於需要共識節點之間交換較多的資訊,會出現明顯的效能下降。所以在聯盟鏈中一般會通過協商,在保證公平公開的前提下,控制參與者共識的節點數量,以保證共識演算法的效率。
BCOS 平臺的共識演算法根據聯盟鏈要求的身份對等性、 交易響應時間、併發能力、 以及伺服器計算能力和網路頻寬等進行深入優化,可提高計算效率,減少重複工作,降低頻寬消耗。 在保證高併發的同時, 可保證交易在短時間內能得到確認,且一旦確認後,在聯盟鏈裡即達成共識且不可篡改。