BFT等5種主流區塊鏈共識的開源實現

共識算法是實現自主產權區塊鏈的必不可少的關鍵環節,本文列出社區中相對成熟的區塊鏈共識算法開源實現,包括BFT共識、Raft共識、Paxos共識、PoW共識等,可供但願開發自主產權區塊鏈的團隊參考學習。java

相關推薦:區塊鏈開發系列教程git

一、BFT共識開發庫

BFT共識算法能夠應對分佈式系統中的拜占庭故障(Byzantine failures),也就是能夠在集羣中部分節點存在惡意行爲時依然保證整個系統的正常工做。github

1.1 Tendermint Core

Tendermint Core 是一個拜占庭容錯的中間件,能夠安全的將任何語言開發的狀態機複製到集羣中的其餘機器上。Tendermint Core已經被用於Cosmos、幣安鏈等多種公鏈環境中。算法

在這裏插入圖片描述

Tendermint Core的協議詳情能夠參考這裏,開發教程訪問這裏:tendermint開發詳解數據庫

1.2 BFT-SMaRt

BFT-SMaRt是一個拜占庭容錯的狀態機複製實現,採用Java開發,目前由里斯本大學的LsSIGE研究組負責維護。BFT-SMaRt要求JRE 1.8+。安全

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XSxQXxoY-1577276336782)(blockchain-consensus-libs/bft-smart.png)]

BFT-SMaRt是最知名的Java版BFT實現,京東的區塊鏈就是採用這個庫解決共識問題。網絡

1.3 BABBLE

Babble是用於分佈式應用的拜占庭共識平臺,它可讓一組計算機表現的如同單一計算機。Babble它使用P2P網絡和BFT共識算法來保證一組彼此互聯的計算機能夠一樣的順序處理一樣的命令,也就是一般說的狀態機複製。Babble可讓整個系統安全的應對部分節點的故障或惡意行爲。異步

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oXvgqXEn-1577276336782)(blockchain-consensus-libs/babble.png)]

Babble主要採用Go語言開發,可是其設計目標是能夠集成進任何語言開發的應用,如上圖所示。分佈式

1.4 Concord-BFT

concord-bft是vmware開源的一個通用的狀態機複製庫,能夠應對集羣中的惡意行爲(拜占庭故障)。 concord-bft被設計用於分部署數據倉庫複製的核心構建模塊,特別適合做爲許可制區塊鏈系統的基礎。學習

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4Hu894u7-1577276336783)(blockchain-consensus-libs/concord.png)]

concord-bft的實現基於這片論文中的算法:SBFT: a Scalable Decentralized Trust Infrastructure for Blockchains

1.5 HBBFT

HBBFT是論文Honey Badger of BFT Protocols提出的蜜獾BFT共識算法的Rust實現。HBBFT要求Rust 1.36+以及cargo,下面展現了其中的一個仿真示例:

$ cargo run --example simulation --release

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-iGf4KJm6-1577276336783)(blockchain-consensus-libs/hbbft.png)]

蜜獾(Honey Badger)共識算法可讓分佈式異步環境中的節點交易達成一致,該算法不須要主導節點,能夠應對惡意節點的攻擊,適合於去中心化數據庫和區塊鏈應用。

1.6 libbft

libbft是一個輕量級的拜占庭容錯庫,用於neo區塊鏈,採用C++開發,由neo研究院維護,計劃移植到Python、go等多種語言。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wcEmPICG-1577276336783)(blockchain-consensus-libs/libbft.png)]

二、Raft共識開發庫

Raft共識能夠處理集羣中部分節點的崩潰故障,但不能處理惡意節點行爲,所以一般用於節點身份已知的環境中,例如許可制區塊鏈 Hyperledger Fabric 就使用了基於Raft共識的排序服務。

Raft官網列出了數十種各類語言開發的Raft共識算法實現,能夠訪問這裏獲取詳細清單:https://raft.github.io/

三、Paxos共識

Paxos共識算法是比較早期的分佈式系統共識算法,特色是比較複雜,目前用的已經很少。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QkEWlopn-1577276336784)(blockchain-consensus-libs/paxos.jpg)]

3.1 Paxos-consensus

Paxos-consensus是一個Python實現的Paxos共識協議庫,支持Python 2.6+。

3.2 Pluggable Paxos

Pulggable Paxos是一個採用go語言實現的paxos共識協議庫,採用可插拔設計。

3.3 Go Paxos

Go Paxos是另外一個採用go語言實現的paxos共識協議庫。

3.4 Java Paxos

Java Paxos是一個基本的Paxos共識協議庫,採用java實現。

四、PoW共識 - Proof of Work

PoW,即工做量證實,其核心設計思路是提出求一個複雜度計算值的運算過程。用戶經過進行必定的運算和消耗必定的時間來計算一個滿意值並提供給服務方快速作驗證,以防止服務被攻擊,數據資源被濫用,確保數據交易的公平和安全。這一律念最先在1993年由Cynthia Dwork和Moni Naor的學術論文中提出,並在1999年由Markus Jakobsson與Ari Juels 對工做量證實這一詞的進行了發表。到了2008年這工做量證實技術被運用在比特幣區塊鏈系統上,到目前爲此PoW技術在區塊鏈中起着相當重要的做用,它也成爲了加密貨幣中主流的共識機制之一,像比特幣,以太坊等都有使用。

4.1 proof-of-work

Proof-of-Work是一個JS實現的PoW共識庫,使用SHA256和布隆過濾器。下圖顯示了目標難度與解析時間的關係:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YGGPjWC7-1577276336784)(blockchain-consensus-libs/pow-chart.png)]

4.2 pow.py

pow.py是PoW共識的Python實現。

4.3 go-pow

go-pow是PoW共識的go語言版本的簡單實現。

4.4 ProgPow

ProgPow實現了一種能夠對抗ASIC的PoW算法。

五、PoS共識 - Proof of Stake

5.1 ValidateProofOfStake

ValidateProofOfStake是一個純粹的權益證實共識協議,它使用區塊 驗證人和鑄幣人懲罰機制,無需鎖定狀態。


原文連接:區塊鏈共識算法開源代碼大全 - 匯智網

相關文章
相關標籤/搜索