首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

未来星球区块链课程体系5——共识机制

共识机制则解决了“区块链如何在分布式场景下达成一致性”这一问题。

在区块链系统中,由于点对点网络下存在较高的网络延迟性,使得各个节点所观察到交易事务的先后顺序出现一定差异;因此这类系统里需要一套机制,以在差不多时间内对发生事务的先后顺序达成共识。

通俗来说,共识机制在区块链网络内起到决定谁负责生成新区块以及维护区块链统一的作用。

目前区块链的共识机制大致可以分为PoW(工作量证明)、PoS(权益证明)、DPoS(股份授权证明)以及分布式一致性算法几类。

对于刚接触区块链不久的新人,很容易被那一堆PoW、PoS搅得头昏眼花。而且哪个项目对应哪种机制,更是捉摸不透。为什么需要这么复杂呢?

其实理解起来并不困难。在一个中心化的系统里,比如说一个公司吧,老板说什么就是什么,说往东大家就都往东。但在一个去中心化的系统里,没有老板这样的角色,比如一个临时组成的旅游团,有人想往东,有人想往西,这时候就需要有一个共识机制来决定最终的行动了。

举一个更加接近的例子好了。在传统的金融系统里,A向B转账了一笔钱,这个行为会被保存在银行数据库里,也就是交易数据的真实性由银行这样的传统机构保证,以他们的记录为准。但是在比特币系统中,可能有的节点记录了A向B转账的事情,有的节点没有记录,那到底有没有转账这回事呢?

于是通过一个合适的共识机制,让整个系统能做出统一的决定,就很重要了。

相信这时候有人就会提出,这不是很简单吗,让所有人投票,少数服从多数就好了啊?

可是世界毕竟没有那么单纯。1982年,莱斯利.兰伯特等在论文《拜占庭将军问题》中提出了这样一个问题:

设想在中世纪,拜占庭帝国的几位将军各自带兵共同围困一座城市。这座城市的防守非常坚固,只有他们一起进攻才能攻下来。也就是说,他们要么一起进攻,要么一起撤退,否则都是灾难性后果。但是因为各位将军分处城市不同方向,没法坐在一起讨论,只能通过信使告诉彼此自己投票进攻还是撤退。于是,每位将军都是根据得到的所有别的将军的投票,做出自己进攻还是撤退的决定。

如果所有将军都是忠诚的,当然没有问题,根据大多数将军投票结果就好了。但是问题在于,将军中可能有叛徒。假设9位将军投票,4人投进攻,4人投撤退,剩下1人是叛徒,他选择告诉进攻的4人他投进攻,告诉撤退的4人他投撤退,那么结果就悲惨了。

所以需要有一种算法,以保证即使将军中有叛徒,忠诚的将军们依然能通过多数决来做出决定,也就是拜占庭容错。这并不容易。

直到1999年,米格尔.卡斯特罗和芭芭拉.丽斯科夫提出了实用拜占庭容错算法(PBFT),能够实现只要叛徒不超过三分之一,忠诚的将军们就一定能达成一致结果。这已经是非常好的成绩。

直到中本聪提出比特币,拜占庭将军问题的解决终于有了一种新的思路。我们这里不讨论技术算法和结构,简单来说,中本聪的思路就是,如果要做叛徒,攻击整个网络,需要付出相应的成本,而这个成本在比特币的PoW(Proof of Work)工作量共识机制下,就是要掌握整个网络50%以上的算力——换句话说,有50%以上的叛徒才行,这是比PBFT高得多的容错率,而且大家可以想象一下这是多高的成本。接下来,绝妙的是,如果真的掌握那么大的算力的话,用这些算力维护网络(诚实地挖矿)获得的收益其实会高于破坏网络。

这也就是所谓的:作恶有成本,且成本高到还不如为善。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180731A0NSJR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券