实用拜占庭容错PBFT算法详细介绍
本文主要讲述实用拜占庭容错算法(PBFT)的算法部分。
0 摘要
OSDI99这篇论文描述了一种副本复制(replication)算法解决拜占庭容错问题。作者认为拜占庭容错算法将会变得更加重要,因为恶意攻击和软件错误的发生将会越来越多,并且导致失效的节点产生任意行为。(拜占庭节点的任意行为有可能误导其他副本节点产生更大的危害,而不仅仅是宕机失去响应。)而早期的拜占庭容错算法或者基于同步系统的假设,或者由于性能太低而不能在实际系统中运作。这篇论文中描述的算法是实用的,因为该算法可以工作在异步环境中,并且通过优化在早期算法的基础上把响应性能提升了一个数量级以上。作者使用这个算法实现了拜占庭容错的网络文件系统(NFS),性能测试证明了该系统仅比无副本复制的标准NFS慢了3%。
1 概要介绍
网络时代的到来,恶意攻击和软件出错问题越来越常见,很容易出现拜占庭错误。本文提供一种实用拜占庭容错算法(Practical Byzantine-Fault Tolerance),在异步系统下,只要保证错误节点 f ⩽ ⌊ ( n − 1 ) 3 ⌋ f\leqslant\lfloor\frac{(n-1)}{3}\rfloor f⩽⌊3(n−1)⌋其中 f f f为错误副本节点数, n n n为系统总节点数,系统就能在容错前提下,保证安全性和活力(safety & liveness)。
该论文提出一种状态机副本复制的算法(一种允许对执行给定是确定性的 任意计算的服务进行复制的状态机复制的形式,也就是说,当它们处理相同的操作序列时,复制必须产生相同结果的序列。),可以在异步环境下安全运行。之前有些解决拜占庭问题的方法,但是要么就只是理论性,要么就是依赖同步来保证安全性,在恶意攻击下极为脆弱,直到系统自行排除错误节点,要是误认非错误节点就凉了。咱们这算法可厉害,减少通信开销还能在恶意攻击下保证安全性。最后这个算法还落地了