BFT等5种主流区块链共识的开源实现

Wesley13
• 阅读 1277

共识算法是实现自主产权区块链的必不可少的关键环节,本文列出社区中相对成熟的区块链共识算法开源实现,包括BFT共识、Raft共识、Paxos共识、PoW共识等,可供希望开发自主产权区块链的团队参考学习。

相关推荐:区块链开发系列教程

1、BFT共识开发库

BFT共识算法可以应对分布式系统中的拜占庭故障(Byzantine failures),也就是可以在集群中部分节点存在恶意行为时依然保证整个系统的正常工作。

1.1 Tendermint Core

Tendermint Core 是一个拜占庭容错的中间件,可以安全的将任何语言开发的状态机复制到集群中的其他机器上。Tendermint Core已经被用于Cosmos、币安链等多种公链环境中。

BFT等5种主流区块链共识的开源实现

Tendermint Core的协议详情可以参考这里,开发教程访问这里:tendermint开发详解

1.2 BFT-SMaRt

BFT-SMaRt是一个拜占庭容错的状态机复制实现,采用Java开发,目前由里斯本大学的LsSIGE研究组负责维护。BFT-SMaRt要求JRE 1.8+。

BFT等5种主流区块链共识的开源实现

BFT-SMaRt是最知名的Java版BFT实现,京东的区块链就是采用这个库解决共识问题。

1.3 BABBLE

Babble是用于分布式应用的拜占庭共识平台,它可以让一组计算机表现的如同单一计算机。Babble它使用P2P网络和BFT共识算法来保证一组彼此互联的计算机可以同样的顺序处理同样的命令,也就是通常说的状态机复制。Babble可以让整个系统安全的应对部分节点的故障或恶意行为。

BFT等5种主流区块链共识的开源实现

Babble主要采用Go语言开发,但是其设计目标是可以集成进任何语言开发的应用,如上图所示。

1.4 Concord-BFT

concord-bft是vmware开源的一个通用的状态机复制库,可以应对集群中的恶意行为(拜占庭故障)。 concord-bft被设计用于分部署数据仓库复制的核心构建模块,特别适合作为许可制区块链系统的基础。

BFT等5种主流区块链共识的开源实现

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

BFT等5种主流区块链共识的开源实现

蜜獾(Honey Badger)共识算法可以让分布式异步环境中的节点交易达成一致,该算法不需要主导节点,可以应对恶意节点的攻击,适合于去中心化数据库和区块链应用。

1.6 libbft

libbft是一个轻量级的拜占庭容错库,用于neo区块链,采用C++开发,由neo研究院维护,计划移植到Python、go等多种语言。

BFT等5种主流区块链共识的开源实现

2、Raft共识开发库

Raft共识可以处理集群中部分节点的崩溃故障,但不能处理恶意节点行为,因此通常用于节点身份已知的环境中,例如许可制区块链 Hyperledger Fabric 就使用了基于Raft共识的排序服务。

Raft官网列出了数十种各种语言开发的Raft共识算法实现,可以访问这里获取详细清单:https://raft.github.io/

3、Paxos共识

Paxos共识算法是比较早期的分布式系统共识算法,特点是比较复杂,目前用的已经不多。

BFT等5种主流区块链共识的开源实现

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实现。

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和布隆过滤器。下图显示了目标难度与解析时间的关系:

BFT等5种主流区块链共识的开源实现

4.2 pow.py

pow.py是PoW共识的Python实现。

4.3 go-pow

go-pow是PoW共识的go语言版本的简单实现。

4.4 ProgPow

ProgPow实现了一种可以对抗ASIC的PoW算法。

5、PoS共识 - Proof of Stake

5.1 ValidateProofOfStake

ValidateProofOfStake是一个纯粹的权益证明共识协议,它使用区块 验证人和铸币人惩罚机制,无需锁定状态。


原文链接:区块链共识算法开源代码大全 - 汇智网

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
可莉 可莉
2年前
10个开源的Python区块链项目
Python不是主流的区块链底层平台开发语言,但是在DApp开发、区块链仿真与数据分析、智能合约安全分析等领域,Python依然是不错的选择。本文介绍了10个最流行的Python区块链项并提供了相应的源代码下载地址。<!more区块链开发教程链接:以太坊(https://www.oschina.net/action/GoToLink
Stella981 Stella981
2年前
Hyperledger Explorer官方安装文档中文版
HyperledgerExplorer是一个简单易用的开源工具,可以用于监视区块链网络中的活动。HyperledgerExplorer支持Fabric、Iroha等多种区块链,可以运行在MocOS和Ubuntu下。HyperledgerFabric区块链开发教程:Fabric区块链Node.js开发详解(https://
Stella981 Stella981
2年前
Go语言Tendermint Core开发指南
TendermintCore是一个用Go语言开发的支持拜占庭容错/BFT的区块链中间件,用于在一组节点之间安全地复制状态机/FSM。TendermintCore的出色之处在于它是第一个实现BFT的区块链共识引擎,并且始终保持这一清晰的定位。这个指南将介绍如何使用Go语言开发一个基于TendermintCore的区块链应用。TendermintCo
Wesley13 Wesley13
2年前
NEO从源码分析看UTXO交易
_0x00前言_社区大佬:“交易是操作区块链的唯一方式。”_0x01交易类型_在NEO中,几乎除了共识之外的所有的对区块链的操作都是一种“交易”,甚至在“交易”面前,合约都只是一个小弟。交易类型的定义在Core中的TransactionType中:源码位置:neo/Core/TransactionType
Stella981 Stella981
2年前
Bystack跨链技术源码解读
Bystack是由比原链团队提出的一主多侧链架构的BaaS平台。其将区块链应用分为三层架构:底层账本层,侧链扩展层,业务适配层。底层账本层为Layer1,即为目前比较成熟的采用POW共识的Bytom公链。侧链扩展层为Layer2,为多侧链层,vapor侧链即处于Layer2。!(https://oscimg.oschina.net/oscnet/49
Wesley13 Wesley13
2年前
11个默克尔树开源项目
Merkle树是一种可以有效验证部分数据存在于指定数据集并且未被篡改的高效的哈希树结构,作为一种底层技术广泛应用在各种区块链的实现当中,对于商品溯源、知识产权确认、区块链公证等区块链应用起着重要的作用。本文介绍11个主流的merkle树开源实现,你可以在自己的项目中应用。区块链开发教程链接:以太坊(https://www.oschina.net/
Stella981 Stella981
2年前
Bytom侧链Vapor源码浅析
在这篇文章中,作者将从Vapor节点的创建开始,进而拓展讲解Vapor节点出块过程中所涉及的源码。做为Vapor源码解析系列的第一篇,本文首先对Vapor稍加介绍。Vapor是目前国内主流公链Bytom的高性能侧链,是从Bytom主链中发展出来的一条独立的高性能侧链。Vapor是平台最重要的区块链基础设施之一,目前采用DPoS的共识算法,具有高性能、高安
Wesley13 Wesley13
2年前
NEO从源码分析看网络通信
_0x00前言_NEO被称为中国版的Ethereum,支持C和java开发,并且在社区的努力下已经把SDK拓展到了js,python等编程环境,所以进行NEO开发的话是没有太大语言障碍的。比特币在解决拜占庭错误这个问题时除了引入了区块链这个重要的概念之外,还引入了工作量证明(PoW)这个机智的解决方案,通过数学意义上的难题来保证每个
hashgame776 hashgame776
1年前
哈希竞猜游戏算法原理及特性说明hashgame776
PoH作为一种新的共识算法近期受到了较大的关注,而PooI验证池和PBFT则是联盟链和私链中较为常见的共识算法。1、PoH:即历史时间证明算法,旨在通过将时间本身编码到区块链中来减轻处理块中网络节点的负载。PoH采用创新的分片式时钟,将时间和状态解耦。简单来说就是将全局的时间链和每个区块的时间链分开,状态的更新不再需要全局时间的同步。PoH通过引入一个名叫信