区块链算法

1.共识算法:
分别解决非拜占庭的普通错误和解决拜占庭错误,相应算法分为crash fault tolerance(CFT)和byzantine fault tolerance(BFT).
对于CFT的算法有:Paxos,Raft及其变种。特点:性能好,处理快,容忍不超过一半的故障节点。
对于BFT的算法有:PBFT(practical byzantine fault tolerance)确定性算法
PoW(proof of work)为代表的概率算法。
对于确定性算法,一旦达成某个共识就不可逆转,即共识是最终结果;
而对于概率类算法,共识结果则是临时的,随着时间推移或某种强化,共识结果被推翻的概率越来越小,成为事实上的最终结果。
拜占庭类容错算法往往性能较差,容忍不超过1/3的故障节点。
XFT(cross fault tolerance)改进算法可以提供类似CFT的处理响应速度,并能在多数节点正常工作时提供BFT保障。
2.FLP不可能原理
定义:在网络可靠,但允许节点失败(即便只有一个)的最小化异步模型系统中,不可能存在一个可以解决一致性问题的确定性公式算法。
理解:
同步:指系统中的各个节点的时钟存在上限;并且消息传递必须在一定时间内完成,否则认为是失败的;同时各个节点完成处理消息的时间是一定的。
异步:指系统中各个节点可能存在较大的时钟误差,同时消息传输时间是任意长的,各个节点对消息进行处理的时间也是任意长的。
3.CAP原理
定义:分布式计算系统不可能同时确保以下三个特性:一致性,可用性、分区容忍性性(可靠性,稳定性)。
一致性:任何操作都应该是原子的,发生在后面的事件能看到前面事件发生导致的结果。这里说的是强一致性。
可用性:在有限时间内,任何非失败节点都能应答请求;
分区容忍性:网络可能发生在分区,即节点之间的通信不可保障。
应用场景:
(1)弱化可用性
(2)弱化可用性
(3)弱化分区容忍性
4.ACID原则
定义:Actomicity(原子性) Consistency(一致性) Isolation(隔离性) Durability(持久性)
该原则描述了分布式数据库需要满足的一致性要求,同时允许付出可用性的代价。
与该原则相对立的是BASE原则。该原则牺牲掉对一致性的约束,来换取一定的可用性。

原文地址:https://www.cnblogs.com/feifei123/p/9146604.html