极客时间第二期
21天打卡行动 9/21
<<深入浅出区块链11>>共识算法与分布式一致性算法
回答老师问题
区块链行业有哪些公司使用了如 PBFT、Paxos 这样的经典共识算法呢?
PBFT实用性拜占庭容错:联盟链,公链,
PAXOS是一种基于消息传递且具有高度容错特性的一致性算法:阿里巴巴 X-Paxos
[来源:https://developer.51cto.com/art/201708/547380.htm,https://www.jinse.com/bitcoin/273820.html]
今日所学:
1,分布式系统面临了几个问题:一致性问题,可终止性问题、合法性问题。可终止性可以理解为系统必须在有限的时间内给出一致性结果,合法性是指提案必须是系统内的节点提出。当然其中面对的最重要也是最基础的问题,就是我们常说的一致性问题。一致性是指在某个分布式系统中,任意节点的提案能够在约定的协议下被其他所有节点所认可。
2,一致性也分严格一致性、最终一致性
3,遇到问题:非人为恶意的意外投票过程,人为恶意篡改投票过程;
4,有关分布式系统的定理:第一个是 FLP 不可能性,简单来说是:即使网络通信完全可靠,只要产生了拜占庭错误,就不存在一个确定性的共识算法能够为异步分布式系统提供一致性。换句话来说就是,不存在一个通用的共识算法可以解决所有的拜占庭错误。第二个是 CAP 定理,CAP 定理是分布式系统领域最重要的定理之一,这个我们在“理解区块链的常见误区”一文中稍微讲到过。也就是在设计分布式系统的过程中,“一致性”“可用性”“分区容忍性”三者中,我们只能选择两个作为主要强化的点,另外一个必然会被弱化。
5,最终一致性不要求严格的短时间内达到一致。为了其他两个指标,我们相当于让一致性在时间上做了妥协。区块链满足了最终一致性,而且处理过程时间比较长。
6,从软件架构上也经历了基于 ESB 的模块化 SOA 模式,到无状态的微服务架构。从工程的角度来看,根据业务需求达到 4 个 9、6 个 9 就足够了,只是肯定比不了区块链近乎 100% 的可用性。
7,分区容忍性在企业内部极少出现,尤其是中心化的服务性应用,所以很少考虑。然而区块链的 P2P 网络环境十分复杂,所以必须要保证很高的分区容忍性;
8,经典分布式一致性算法有 Raft 协议,Raft 协议是一种强 Leader 的一致性算法,它的吞吐量基本就是 Leader 的吞吐量,它无法抵御节点恶意篡改数据的攻击。
9,Paxos 协议,Paxos 能提供不同场合不同种类的一致性算法,所以 Paxos 有很多变种,经典 Paxos 是 Leaderless 的,有变种是强 Leader 型的,叫做 Fast Paxos,
10,PBFT 全称实用性拜占庭容错系统(Practical Byzantine Fault Tolerance, PBFT),PBFT 是一种状态机,要求所有节点共同维护一个状态,所有节点采取的行动一致,PBFT 非常适合联盟链等对性能具有较高要求的场合,超级账本项目中的 Fabric 框架默认采用的就是 PBFT 的修改版本;
11,区块链中的共识算法目前具有工业成熟度的是 PoW,另外两种比较成熟的是 PoS 和 DPoS,其次还有一些变种和单一币种使用的共识算法,例如 Ripple 共识、PoC 共识(概念性证明)、PoE 共识(存在性证明),
12,在使用 PoW 共识算法的情况下,容错阈值是 50%,而 PBFT 及其变种的容错阈值是 33% 左右,这里的百分比是指作弊节点占全网节点的比例。
13,PoX 类的算法其实都延续了 PoW 的设计理念,相比较经典分布式一致性算法,PoX 类算法通过概率选择记账者降低了潜在的提案者,另外是延长了达成最终一致性的时间
展开