区块链------共识层

在这里插入图片描述

分布式一致性问题
分布式系统要正常工作就必须保持一致性
所谓一致性,是指系统中的多个节点,给定一系列操作,在协议结束后,对系统出入的处理结果达成某种程度的一致。
系统的一致性需要依赖于共识算法。
FLP不可能定理
在网络可靠、存在节点失效的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性算法。
CAP定理
一个分布式系统中最多只能同时满足一致性(Consistency)、可用性(availability)、分区容错性(Partition tolerance)三项中的两项。
BASE理论
Basically Available:基本可用性。
Soft State :柔性状态。
Eventual Consistency :最终一致性,即要求停止往系统中写入数据后,过一段时间,所有节点拥有同一份数据副本。
拜占庭将军问题
著名的分布式对等网络通信容错问题。
区块链的DSS猜想
DSS猜想是指,去中心化(decentralization)、安全性(Security)、和可扩展性(Scalability),在区块链系统中最多只能三选二。
image
共识算法概述
共识算法
能使网络中各非错误节点对于交易的顺序达成共识,并能在规定时间内对外提供输出的算法。并且要求共识算法能保持在系统在不存在全球统一的时钟,各节点可能独立出错以及网络中传送的消息并不总是可靠这三个条件下,依然正常、可靠地工作。
理想的共识算法应满足的条件包括:
可终止性:一致的结果在有限时间内能完成。
共时性:不同节点最终完成决策的结果应该相同。
合法性:决策的结果必然是其他进程提出的提案。
拜占庭错误
计算机出现故障节点表现出前后不一致的情况,如信道不稳定、导致节点发送给其他节点的消息发生了错误或者消息损坏等,上述分布式系统故障被称为拜占庭错误。
出现故障和错误的节点被称为拜占庭节点。
非拜占庭错误
当分布式系统中仅出现消息丢失或者重复但是不会出现内容损坏的情况时,被称为非占庭错误。
接收正确信息同时正确传送信息的节点称为非拜占庭节点。
共识算法
CFT类共识算法
只保证分布式系统中节点发生宕机时整个分布式系统的可靠性。
Paxos算法
Raft算法
BFT类共识算法
系统中的节点发生任意类型的错误,只要发生错误的节点少于一定比例,整个系统的可靠性就可以保证。
处理拜占庭错误的算法的两种思路
提高作恶节点的成本以降低作恶节点出现的概率,如工作量证明、权益证明。
允许一定的作恶节点出现的前提下,依然使得各节点之间达成一致性。
CFT类算法
Paxos算法
Paxos是基于消息传递的具有高度容错性的分布式一致性算法。
Raft算法
Raft算法是一个用于日志复制、同步的一致性算法。
BFT类算法
BFT类算法是允许拜占庭错误的一致性算法
概率一致性算法
PoW
PoW算法是一种防止分布式服务资源被滥用、拒绝服务攻击的机制。
PoS
DPoS
绝对一致性算法
PBFT
PBFT算法解决了拜占庭将军问题。
PBFT算法的共识过程如下:客户端(Client)发起消息请求(request),并广播转发至每一个副本节点(Replica),由其中一个主节点(Leader)发起提案消息pre-prepare,并广播。其他节点获取原始消息,在校验完成后发送prepare消息。每个节点收到2f+1个prepare消息,即认为已经准备完毕,并发送commit消息。当节点收到2f+1个commit消息时,我们就认为该消息已经被确认完成(reply)。
image
新型区块链共识算法
PoW存在消耗大量计算资源及性能低下的问题。POS、DPOS存在囤币、“富豪统治”的问题,而PBFT面临广播带来的网络开销过大的问题。
融合了多种算法的创新共识算法
Algorand算法
DAG共识
基于可信硬件的共识算法
目前共识机制存在的问题
安全性证明不完备
安全性假设不可靠
扩展性差
一致性不稳定

猜你喜欢

转载自blog.csdn.net/qq_43182466/article/details/127159214