blockchain区块链研习社区块链技术研究

共识机制大阅兵

2018-03-13  本文已影响89人  BlockGeeks

简单讲两句

最近熊市漫漫,看盘的心情反正是没了 :cry: ,正好趁这个大好时间好好学习下区块链底层算法,毕竟现在又到了需要充值信仰的年代。那么说到区块链,共识机制一定是绕不开的话题。区块链解决了在不可信环境下传输可信数据的难题,实现了价值传输,而共识机制解决了分布式网络的一致性问题,也就是网络中所有节点就某个提案(Proposal)或某一状态达成一致共识。区块链能在众多不稳定节点中达到某一平衡状态,没有一个可靠的共识机制是难以想象的,从技术角度来看,密码学和共识算法是区块链项目的两大技术基础。

定义

在分布式系统中,互不信任的节点一起工作,根据某种规则达成信任关系并保障系统整体一致性和持续性,这种规则可以抽象成共识过程。具体到区块链,共识机制是区块链节点就区块信息达成全网一致共识的机制,即就如何选择记账人达成共识。

L5RP2.md.jpg

回顾过去

分布式系统中如何保证集群中所有节点中的数据完全相同并且能够对某个提案达成一致是分布式系统正常工作的核心问题。一个理想的分布式系统一致性应满足以下三点:

根据20世纪末发布的几个分布式系统重要定理:

我们应该客观的认识到,在现实情况中网络延迟一定存在,没有办法在分布式系统中做到强一致性的同时保证可用性,不过可以降低对一致性的要求,在与可用性之间做出权衡,目前主流的分布式系统都选择最终一致性。那么何为最终一致性,即允许多个节点的状态出现冲突,但所有能沟通的节点能在有限时间内解决冲突恢复到一支状态。这里有2个重要条件:节点之间可以正常通信;冲突需要在有限时间内解决。只有这两个条件满足,才能达到最终一致性。

传统的分布式系统面临的问题:节点数量的增加和减少,以及节点失效故障宕机等问题;节点之间网络通信可能存在干扰甚至阻断,运行速度也存在差异。针对这些问题,目前已经有了 Paxos 和 Raft 等共识算法能够很好的解决传统分布式系统领域一致性问题。当我们应到意识到,在区块链网络中,例如比特币网络,节点不仅存在失效问题,还存在作恶的可能,即节点可能会故意发送错误数据。这里我们就要引入拜占庭容将军问题,拜占庭将军模型则是分布式领域中最复杂严格的容错模型,它允许节点作恶,即节点可以选择不响应甚至故意发送错误数据。在过去一直没有人能很好的解决这一问题,直到中本聪发明了比特币,巧妙地引入经济学激励机制从非计算机的角度天才般地给出了全新的解决方案,自此区块链系统中的共识算法机制开始引起了大众的关注,下面小编整理了目前常见的共识算法一一介绍。

L9sXB.md.png

分类

总结

共识算法的发展和演化其实非常类似人类社会的不同阶段,研究共识算法,不仅需要计算机背景,更依赖深刻理解经济学,社会学,博弈论等多元化知识。人类社会制度尚不存在完美的方案,共识算法的完善之路更加漫漫。


更多优质项目敬请关注公众号 BlockGeeks

mark
上一篇下一篇

猜你喜欢

热点阅读