区块链达成了什么共识? | 区块链共识04

|笑狮子 2018-04-17 08:55:09 1080 来源:荣格财经
摘要:让多于一个节点的系统能够协同工作,需要满足两个条件,一是一致性,大家的力气往一处使,二是唯一性,每个节点都在干自己的活儿。唯一性的算法是一致性哈希表,这里我们不讨论。

一致性不可能与99.9可靠性


分布式的的基本瓶颈是什么?为什么分布式系统这么困难,人们还要孜孜不倦不倦地设计他们?搞一个巨大的中心化系统可能吗?FLP,CAP说的是些什么?


让多于一个节点的系统能够协同工作,需要满足两个条件,一是一致性,大家的力气往一处使,二是唯一性,每个节点都在干自己的活儿。唯一性的算法是一致性哈希表,这里我们不讨论。


分布式系统不可或缺,原因是可靠性和规模。集中的单一系统,无论其可靠性和处理能力多高,都是有限值。就可靠性而言,一个最简单的器件,其失效率大约在一个FIT(10的9次方分子一)。而简单路由器的失效率就已经达到了几百个FIT的量级。进一步提高可靠性的方法是系统备份,也就是用两个或者多个系统来承担任务,其中一个坏了不影响整体系统的可用性,而这两个或者三个互相备份的系统,他们之间给出的结果不一样怎么办?这就回到了一致性这个基本的命题。


我们从来没有见到任何系统保证100/100的可靠性,都是99.9,或者99.999,为什么呢?这和FLP有关。FLP是三个人姓的字母缩写,它论证了在异步的网络上,任何分布式一致性算法,面对仅仅一个节点时效时,都有算法不能结束的风险(一直达不成一致)。


这初听起来很让人绝望,但在工程精度范围内,有很多解决方案。例如,部署有同步时钟的网络(相对论告诉我们对不同观察者没有同步的时钟,但我们生活的低速世界,这至少暂时还不是问题),电信系统以前就是有同步时钟的,中国有国家授时系统。我们可以看见,这个时钟系统是中心化的,但是中心化和去中心化都是工具,如果中心化的时钟系统效果最好,为什么要拘泥于去中心化呢?


也可以或然地承诺系统的可靠性,比如5个9,9个9,甚至11个9。到这个精度,系统可靠时间已经远远超过了维修换代时间和人的自然寿命,可以安全使用了。


CAP的意思是说,分布系统不能同时满足 Consistency(一致性),Availability(可用性),Partition Tolerant(网络隔离容忍)。网络隔离会导致两个不一致的,互相不能通讯的中心,又叫脑裂。CAP的不可能性和FLP的不可能性一样,都在工程精度范围内可以解决。


以上FLP,CAP都给我们一点启发,就是网络与通讯是分布式系统的基本瓶颈。这也和直觉一致,分布式系统,就是用网络连接起来的很多个小的单一系统。


我们的社会也是一个很多人组成的分布式系统,需要一致性,唯一性和可靠性,需要中心化的节点,和分布式的系统。互相协同,才能达到系统效果最优,而沟通与通讯也是基本瓶颈。



1.png



附录 技术部分


Paxos是最为人知的分布式一致性协议,它就是一个不靠谱的议会(a part time parliment)。毫不意外,它无法处理拜占庭错误。如果有1/3的成员组织起来,就能够让一致性被影响。秘密社团只需要在1/3的议员里面,通过影响公众不注意的法案细节,就可以给他们自己谋巨大的利益,现在你相信有秘密社团了吗?


区块链达成了什么共识


一个分布式系统里各个节点取得了共识,这到底是什么意思?区块链技术的代表,比特币系统的各个节点,又达成的是什么具体的共识?共识为什么如此重要?本文试图来回答这些问题。因为这个问题圈内被弄得很玄乎,所以我从能说明白的地方开始,免得招些无谓的板砖。


首先我们来看一个分布式系统的共识。他的定义清晰而又明确,一致就是分布式系统中所有正常工作的(未崩溃)节点,都将某个变量设定为相同的值(或者0,或者1)。而所谓的不一致,则是对同一个变量,一些节点的值设定为一,而另外一些节点的值设定为零。这些节点都是正常节点,既不是故意的捣乱,也不是系统崩溃。


我用状态机拷贝来把这个问题转换为一个通讯问题。每个节点都有一个相同的状态机,从同样的状态出发,如果他们收到的消息(数据)相同,而且以相同的顺序提交,那么他们就会停留在一个相同的状态。这个状态设定的变量值,就是相同的。这时候,我们说系统达成了一致(共识)。


把同样的数据,按同样的顺序发送给每个节点的过程,就是 atomic broadcast,或者叫 reliable multicast,或者叫 total ordering multicast。为什么有这么多名字,他们之间的微妙区别,大多数人不敢说自己都懂。而据我所知,在可靠的广播基础上,一定可以实现atomic multicast。而total order multicast,据说就是 atomic multicast的另外一个名字。


状态机相同加上数据拷贝相同,系统就能达成一致。而状态机也可以作为数据来拷贝,所以整个一致性问题就等效于数据拷贝问题(Data Replication)。推论:如果状态机够快,整个分布式系统的瓶颈,就是通讯拷贝或者说数据拷贝的性能(Data Replication)。现在的CPU/GPU等确实很快,而广域分布系统的通讯确实是核心性能瓶颈。


具体到比特币系统,他们取得一致性的是那些变量呢? 代码清晰明确,比特币系统,对每个地址的交易(Transaction 打包了叫区块Block),和地址的余额(Unspent Transaction Output, UTXO, 好比银行账号的人民币余额), 达成了一致。其中,把UTXO在各个地址(匿名账号) 之间转来转去的记录叫交易。


再往上一层,一次交易就是交易的双方,就某个价值转移达成了一致意见,比如十块钱从A到B转账交换一个红薯。一次交易是两次转账,A 转账10块钱给B,B转帐一个红薯给A。


继续往上走,在社会协同的层面,社会意义层面,有很多共识本质是什么的讨论。这很有趣也很重要,但不是本篇能够涵盖的内容了,那是生产力和生产关系的讨论。


附录 技术部分


State Machine Replication 是Lamport 经典论文提出的解决分布式计算容错与并行的方法论,其中的关键环节是一致性。


一致性的 Data Replication 解释,朋友表示简洁明了。那是美国院士 Ken的原创,不敢掠人之美。如果有不准确的地方,那则是我的水平问题。



2.png



笑狮子,康奈尔硕士,北电高级工程师,曾任职加拿大BTI公司,中国首席业务代表。在加拿大创业,获得过国家开发行优秀企业家提名,城市电视优秀企业家奖,加拿大国家研究院资助等荣誉。


审核人:

标签: 区块链 分布式系统

觉得不错,给小编个打赏吧

评论
0
1

登录后才可以评论

查看全部(2)

134****6303

有效的共识

04-17 19:50:53 回复

134****6303

赞同

04-17 21:23:18

相关阅读

荣格观点

全球全时区全形态区块链媒体,以新知,普惠为使命,为人们推开新世界大门。

评论(1

荣格财经名家专栏

展示荣格财经专栏名家个人发布的最新、最热区块链资讯文章。

推荐名家 更多>

最新快评更多>

推荐阅读 更多>

关注微博

关注荣格财经微信公众号

荣格财经读者11群

加入荣格财经技术交流群