php 区块链算法_PoW/BFT等5种主流区块链共识算法的开源代码实现
共識算法是實現自主產權區塊鏈的必不可少的關鍵環節,本文列出社區中相對成熟的區塊鏈共識算法開源實現,包括BFT共識、Raft共識、Paxos共識、PoW共識等,可供希望開發自主產權區塊鏈的團隊參考學習。
相關推薦:區塊鏈開發系列教程
1、BFT共識開發庫
BFT共識算法可以應對分布式系統中的拜占庭故障(Byzantine failures),也就是可以在集群中部分節點存在惡意行為時依然保證整個系統的正常工作。
1.1 Tendermint Core
Tendermint Core 是一個拜占庭容錯的中間件,可以安全的將任何語言開發的狀態機復制到集群中的其他機器上。Tendermint Core已經被用于Cosmos、幣安鏈等多種公鏈環境中。
Tendermint Core的協議詳情可以參考這里,開發教程訪問這里:tendermint開發詳解。
- 開發語言:Go
- 下載地址:https://github.com/tendermint/tendermint
1.2 BFT-SMaRt
BFT-SMaRt是一個拜占庭容錯的狀態機復制實現,采用Java開發,目前由里斯本大學的LsSIGE研究組負責維護。BFT-SMaRt要求JRE 1.8+。
BFT-SMaRt是最知名的Java版BFT實現,京東的區塊鏈就是采用這個庫解決共識問題。
- 開發語言:Java
- 下載地址:https://github.com/bft-smart/library
1.3 BABBLE
Babble是用于分布式應用的拜占庭共識平臺,它可以讓一組計算機表現的如同單一計算機。Babble它使用P2P網絡和BFT共識算法來保證一組彼此互聯的計算機可以同樣的順序處理同樣的命令,也就是通常說的狀態機復制。Babble可以讓整個系統安全的應對部分節點的故障或惡意行為。
Babble主要采用Go語言開發,但是其設計目標是可以集成進任何語言開發的應用,如上圖所示。
- 開發語言:Go
- 下載地址:https://github.com/mosaicnetworks/babble
1.4 Concord-BFT
concord-bft是vmware開源的一個通用的狀態機復制庫,可以應對集群中的惡意行為(拜占庭故障)。 concord-bft被設計用于分部署數據倉庫復制的核心構建模塊,特別適合作為許可制區塊鏈系統的基礎。
concord-bft的實現基于這片論文中的算法:SBFT: a Scalable Decentralized Trust Infrastructure for Blockchains。
- 開發語言:Python
- 下載地址:https://github.com/vmware/concord-bft
1.5 HBBFT
HBBFT是論文Honey Badger of BFT Protocols提出的蜜獾BFT共識算法的Rust實現。HBBFT要求Rust 1.36+以及cargo,下面展示了其中的一個仿真示例:
$ cargo run --example simulation --release蜜獾(Honey Badger)共識算法可以讓分布式異步環境中的節點交易達成一致,該算法不需要主導節點,可以應對惡意節點的攻擊,適合于去中心化數據庫和區塊鏈應用。
- 開發語言:Rust
- 下載地址:https://github.com/poanetwork/hbbft
1.6 libbft
libbft是一個輕量級的拜占庭容錯庫,用于neo區塊鏈,采用C++開發,由neo研究院維護,計劃移植到Python、go等多種語言。
- 開發語言:C++
- 下載地址:https://github.com/NeoResearch/libbft
2、Raft共識開發庫
Raft共識可以處理集群中部分節點的崩潰故障,但不能處理惡意節點行為,因此通常用于節點身份已知的環境中,例如許可制區塊鏈 Hyperledger Fabric 就使用了基于Raft共識的排序服務。
Raft官網列出了數十種各種語言開發的Raft共識算法實現,可以訪問這里獲取詳細清單:https://raft.github.io/
3、Paxos共識
Paxos共識算法是比較早期的分布式系統共識算法,特點是比較復雜,目前用的已經不多。
3.1 Paxos-consensus
Paxos-consensus是一個Python實現的Paxos共識協議庫,支持Python 2.6+。
- 開發語言:Python
- 下載地址:https://github.com/rathodsachin20/paxos-consensus
3.2 Pluggable Paxos
Pulggable Paxos是一個采用go語言實現的paxos共識協議庫,采用可插拔設計。
- 開發語言:GO
- 下載地址:https://github.com/nvanbenschoten/paxos
3.3 Go Paxos
Go Paxos是另一個采用go語言實現的paxos共識協議庫。
- 開發語言:Go
- 下載地址:https://github.com/kkdai/paxos
3.4 Java Paxos
Java Paxos是一個基本的Paxos共識協議庫,采用java實現。
- 開發語言:Java
- 下載地址:https://github.com/mxm/paxos
4、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和布隆過濾器。下圖顯示了目標難度與解析時間的關系:
- 開發語言:JavaScript
- 下載地址:https://github.com/indutny/proof-of-work
4.2 pow.py
pow.py是PoW共識的Python實現。
- 開發語言:Python
- 下載地址:https://github.com/santisiri/proof-of-work
4.3 go-pow
go-pow是PoW共識的go語言版本的簡單實現。
- 開發語言:Go
- 下載地址:https://github.com/bwesterb/go-pow
4.4 ProgPow
ProgPow實現了一種可以對抗ASIC的PoW算法。
- 開發語言:C++
- 下載地址:https://github.com/ifdefelse/ProgPOW
5、PoS共識 - Proof of Stake
5.1 ValidateProofOfStake
ValidateProofOfStake是一個純粹的權益證明共識協議,它使用區塊 驗證人和鑄幣人懲罰機制,無需鎖定狀態。
- 開發語言:JavaScript
- 下載地址:https://github.com/fresheneesz/ValidatedProofOfStake
原文鏈接:區塊鏈共識算法開源代碼大全 - 匯智網
總結
以上是生活随笔為你收集整理的php 区块链算法_PoW/BFT等5种主流区块链共识算法的开源代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兴业银行信用卡循环利息怎么计算
- 下一篇: mysql查当前用户的的命令_mysql