区块链知识分享——共识算法

什么是共识算法?

区块链架构是一种分布式的架构。其部署模式有公共链、联盟链、私有链三种,对应的是去中心化分布式系统、部分去中心化分布式系统和弱中心分布式系统。

分布式系统中,多个主机通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。然而,异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥塞,这些可能导致错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。

利用区块链构造基于互联网的去中心化账本,需要解决的首要问题是如何实现不同账本节点上的账本数据的一致性和正确性。这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定网络中选择记账节点的机制,以及如何保障账本数据在全网中形成正确、一致的共识。

在 20 世纪 80 年代出现的分布式系统共识算法,是区块链共识算法的基础。经典的拜占庭容错技术(Byzantine Fault Tolerance,BFT)是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。

于是,拜占庭将军问题的可以描述为:一个发送命令的将军要发送一个命令给其余 n-1 个将军,使得:

IC1.所有忠诚的接收命令的将军遵守相同的命令;

IC2.如果发送命令的将军是忠诚的,那么所有忠诚的接收命令的将军遵守所接收的命令。

Lamport 对拜占庭将军问题的研究表明,当 n>3m 时,即叛徒的个数 m 小于将军总数 n 的 1/3 时,通过口头同步通信(假设通信是可靠的),可以构造同时满足 IC1 和 IC2 的解决方案,即将军们可以达成一致的命令。但如果通信是可认证、防篡改伪造的(如采用 PKI认证,消息签名等),则在任意多的叛徒(至少得有两个忠诚将军)的情况下都可以找到解决方案。

而 在 异 步 通 信 情 况 下 , 情 况 就 没 有 这 么 乐 观 。

Fischer-Lynch-Paterson 定理证明了,只要有一个叛徒存在,拜占庭将军问题就无解。翻译成分布式计算语言,在一个多进程异步系统中,只要有一个进程不可靠,那么就不存在一个协议,此协议能保证有限时间内使所有进程达成一致。由此可见,拜占庭将军问题在一个分布式系统中,是一个非常有挑战性的问题。因为分布式系统不能依靠同步通信,否则性能和效率将非常低。因此寻找一种实用的解决拜占庭将军问题的算法一直是分布式计算领域中的一个重要问题。

猜你喜欢

转载自blog.csdn.net/weixin_39634961/article/details/79919588