HyperLedger Fabric共识算法

当前在联盟链的应用场景中,使用的共识算法有3种:SOLO、Kafka和PBFT(拜占庭容错)。

Solo模式

在Hyperledger Fabric中的solo模式的共识算法,是最简单的一种共识算法,只有一个排序节点(order)接收客户端peer节点消息,并完成排序,按照order节点的排序结果进行生成区块和上链处理。此种模式只能在测试环境中使用,不适合生产环境大规模使用。

Kafka模式

由一组orderer节点组成排序服务节点,与Kafka集群进行对接,利用Kafka完成消息的共识功能。
客户端peer节点向Orderer节点集群发送消息后,经过Orderer节点组的背书后,封装成Kafka消息格式,然后发往Kafka集群,完成交易信息的统一排序。如果联盟链中有多个channel,在Kafka中实现就是按照每个channel一个topic的设定,每个channel都有一条链。

拜占庭容错(PBFT)

此部分内容介绍摘自:共识算法:PBFT、RAFT
PBFT算法的提出主要是为了解决拜占庭将军问题。什么是拜占庭将军问题呢?拜占庭位于如今的土耳其的伊斯坦布尔,是古代东罗马帝国的首都。拜占庭罗马帝国国土辽阔,为了达到防御目的,每块封地都驻扎一支由将军统领的军队,每个军队都分隔很远,将军与将军之间只能靠信差传递消息。 在战争的时候,拜占庭军队内所有将军必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定影响将军们达成一致共识。在已知有将军是叛徒的情况下,其余忠诚的将军如何达成一致协议的问题,这就是拜占庭将军问题。
要让这个问题有解,有一个十分重要的前提,那就是信道必须是可靠的。如果信道不能保证可靠,那么拜占庭问题无解。关于信道可靠问题,会引出两军问题。两军问题的结论是,在一个不可靠的通信链路上试图通过通信以达成一致是基本不可能或者十分困难的。
在联盟链的场景下,默认信道都是可靠的。
拜占庭将军问题最早是由Leslie Lamport与另外两人在1982年发表的论文《The Byzantine Generals Problem 》提出的, 他证明了在将军总数大于3f ,背叛者为f 或者更少时,忠诚的将军可以达成命令上的一致,即3f+1<=n。算法复杂度为o(n(f+1))。而Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年发表的论文《Practical Byzantine Fault Tolerance》中首次提出PBFT算法,该算法容错数量也满足3*f&#

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值