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

比特币和区块链:分布式系统的一致性问题和比特币共识问题

我们下面要讲的是比特币和区块链里面非常重要的问题:共识问题。但是为了比较全面理解共识问题,我们需要先讲一些比较重要的分布式系统理论基础。在此基础上我们给出比特币的共识问题一个从分布式系统角度比较准确的定义。

P2P系统是分布式系统的一种,比特币是P2P系统的一种,所以比特币里面的共识问题,和分布式系统的一致性问题是一脉相承的。图灵奖获得者Lamport说过:分布式系统的核心问题是一致性问题。事实上比特币的共识问题就是分布式系统的一致性问题的一个特殊版本。

那么什么是分布式系统的一致性问题呢?

我们先看一个例子。

办公室里有一堆人商量着要去吃午饭,简单一点我们假设是三个人吧。这三个人各执一词。显然最后就没办法定下来要去哪里吃午饭。如果定不下来吃午饭的地点,那么这些人要么各吃各的,要么只能饿肚子。假设我们把一起吃午饭作为这个集体的一个目标,也就是说他们三个人无论如何要达成一致。那么问题来了,各执一词是不行的。

怎么办?

这就需要有一套严格的协议,这套协议机制可以确保这个集体达成一致。

我们可能觉得这群人是傻逼,吃个午饭都那么麻烦。但是如果把人换成节点,把整个系统换成集体的话,没有一套可靠而严格的协议,这些节点之间真的会出现三个傻逼吃午饭,各执一词的状态。整个系统也会因此进入到不一致的状态里。所以分布式系统的一致性问题,最简单的理解就是一个分布式系统里面的节点,可以经由某一套协议,协商出一个一致的结果。

这种协议最简单的做法就是选个领袖,通常来说叫leader。选好leader之后,leader说去哪里去哪里,这问题不就解决了吗?当然实际上没有那么简单。因为选leader的过程本身和选个地方吃饭是同一个问题。所以我们还是没有解决选leader的问题。这就意味着我们需要一个协议来规定选leader。

有人说这个简单,最先喊出来的那个人就是leader。可是分布式系统的世界里,并没有那么单纯的事情。比如说A和B几乎同时说自己是leader,因为网络延时等问题,C眼里看到的是A先到,D眼里看到的是B先到。那么按照规矩C和D认可的leader完全是不一样的。这就涉及到分布式系统里面关于时间的问题了,由此展开又是一大堆的话题,各大研究人员为了在分布式系统里面解决时间的问题,提出了各种解法,从早年的Lamport时间到最新的谷歌在Spanner里面用了GPS+原子钟。总而言之,时间问题是分布式系统一致性问题解法上很关键的一点。我们如果深入研究这些分布式系统的协议,它们的应用场景里都对时间有假设。

这还没完,有可能有的机器不知道什么原因坏了联系不上了。也许联系不上了的机器过一段时间又活过来可以联系了。那么这些机器怎么办。它们联系不上的那段时候里,系统能不能做决定,如果能做决定,它们上线以后,又怎么同步到系统的最新决定去。我们可以想象,如果系统里面下线失联的节点很多,超过一半的话,这个系统肯定是瘫痪了。但是到底这个系统可以允许多少台机器失联,其他的节点还能达成一致性呢?这也是分布式系统一致性问题上很关键的一个方面。

这还没完。我们目前为止都假设了这些机器都是规规矩矩的干活的。如果说这些机器里面有一部分不管是因为被黑客黑了,还是本来就心存不良,不按规矩来。一个系统里面有按照规矩办事的好人,也有不按规矩办事的坏人的时候,这个系统还能不能达成一致。叛徒和失联是不是有区别,如果没有区别的话,应该怎么办,如果有区别的话,一个系统里多了多少叛徒,其他节点就无法达成一致了。这又是分布式系统一致性里面的另外一个方面。

所以分布式系统的一致性问题,简单而言是说一个系统在因为网络等原因,每个节点看待时间可能不一样,在节点可能失联,系统里面可能混进了敌人等一系列的状态下,如何就某个事情能够达成一致,并且如何确保系统里面每个节点,包括后续加入的节点都能同步到这个一致性的状态的问题。

而在讨论分布式系统一致性的问题,我们通常还有一个时间的维度,简单来说分布式系统达到一致需要多少时间。最常用的两种模式是:强一致性和最终一致性。强一致性简单而言是系统在有限的时间里可以完全达成一致。而最终一致性只是说系统最终会达成一致,但是达成一致的时间可能会很久很久。

对应到比特币的共识问题上来说,其实比特币的共识问题就是比特币系统的各个节点就账本是什么达成一致。它是一个最终一致性问题。

极客社区:区块链极客社区起源于北美顶尖的工程师社群,核心成员来自于各大科技公司、顶尖学府。社区以打造世界级区块链生态为宗旨,以促进区块链技术的普及为己任,希望站在区块链时代的风口上将最优质的区块链资源分享给用户!在这里,你将获得最权威的区块链教程、最新鲜的区块链资讯,以及对接最顶级区块链生态圈的机会。

加入我们,与硅谷大牛、藤校学霸一起,把酒言欢,链上论道;

加入我们,拥抱区块链去中心化的朝阳,破旧立新,让思维碰撞,让智慧共享;

加入我们,肩负起区块链时代赋予我们的独特使命,不忘初心, 砥砺前行!

不割韭菜,只谈技术,专属于工程师的社区!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券