共识算法与共识安全.pdf

从早期的分布式一致性算法的缓慢发展到现如今区块链共识的百花齐放,共识算法的发展已经走过了四十年左右的时光。随着区块链技术的快速发展,共识算法也在不断演进和提高,不同的共识算法的侧重点不同,因此它们所面临的问题、环境也不一样。

共识算法,可以理解为是为了实现分布式一致性协议而产生的一系列流程与规则。当分布在不同地域的节点都按照这套规则进行协商交互之后,最终总能就某个问题得到一致的决策,从而实现分布式系统中不同节点的一致性。

《共识算法与共识安全》白皮书深入介绍了CFT类共识算法、经典拜占庭共识和开放BFT类共识等三大类共识算法,并延伸到了共识算法安全性分析和测试方法。报告旨在提供一份系统的关于共识算法安全的知识,从共识算法理论和实现两方面展开安全测试和分析,理论分析主要从算法本身展开分析,实现分析从算法的具体参数、代码实现、应用部署等都方面进行安全分析和测试。基于测试方法和标准,对共识算法安全的典型安全进行分析,并给出分析过程和结论。报告以超级账本和以太坊共识算法为例,探索这些项目在共识算法安全领域的实践经验。

共识问题是社会科学和计算机科学等领域的经典问题,计算机科学领域的早期共识研究一般聚焦于分布式一致性,即如何保证集群中所有节点中的数据完全相同并且能够对某个提案(Proposal)达成一致,主要解决的问题是因节点失效、节点间网络故障及分布式系统的运行速度的差异而带来的系统不一致问题。Fischer等在1985年提出了FLP不可能原理,即在网络可靠,但允许节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性共识算法【1】。Eric Brewer在1998年提出了CAP理论,指出在异步的网络模型中,所有的节点由于没有时钟,仅仅能根据接收到的消息作出判断,系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)这三项中的两项【2】。

FLP不可能性可以采用更弱的终止条件或者更强的网络假设解决,Ben-Or在1983年提出了完全异步模型下概率终止的共识算法【3】,Dwork等人在1988年提出了部分异步模型下的共识算法,保证在网络同步的时候算法能够确定性终止【4】,Leslie等在1982年提出了同步模型下的共识问题【5】

早期的共识算法一般也称为分布式一致性算法,与目前主流的区块链共识算法相比,分布式一致性算法主要面向分布式数据库操作、且大多不考虑拜占庭容错问题,即假设系统节点只发生宕机和网络故障等非人为问题(CFT,Crash Fault Tolerance),而不考虑恶意节点篡改数据等问题(BFT.Byzantine Fault Tolerance.拜占庭容错)。拜占庭容错问题是Leslie在1982年提出的分布式领域容错问题,它是分布式领域中最复杂、最严格的容错模型【5】。在该模型下,系统不会对集群中的节点做任何的限制,节点可以向其他节点发送随机数据、错误数据,也可以选择不响应其他节点的请求.这些无法预测的行为使得容错这一问题变得更加复杂。

本文来自知之小站

 

PDF报告已分享至知识星球,微信扫码加入查阅下载3万+精选资料,年享1万+精选更新

(星球内含更多未发布精选报告.其它事宜可联系zzxz_88@163.com)