从疫情防治讲解中心化、分布式、去中心化和《三体》中存在的状态机

对于刚刚接触区块链的朋友甚至接触区块链很久的业内人士,也常常对区块链中的很多概念搞不清楚。今天从最近的疫情防治为例深入浅出的讲解下中心化、去中心化和分布式这三个概念。
疫情出来之后,国家调配医疗资源、修改假期时间、疫情严重的湖北等省份采取重要措施,这是中心化的方式。
可以看到中心化的调控方式的优点,就是效率非常高,国内外网上疯传的七天建设好一个可以容纳1000人床位的医院,也是这个中心化系统的效率体现之一。美国脱口秀还出来段子“七天,我家里的网坏了,现在一周过去了还没有修好”
同时,上层建筑的意志表达后,在中心网络中的各个省市高效率的运转也是中心化协同工作的一种体现。
分布式的协作在疫情期间也有很好的体现,比如不同地区的各个居民小区自发半自发的宣传隔离防护知识,将疫情严重性和防护措施传递给一个一个的居民,家中居民社区自发组织捐赠物资转移到病毒肆虐最严重的地方,就算是分布式的网络协同。当然,现在各位读者很多还自我隔离在房间之中,通过互联网协同办公,被称为“分布式办公”。这也是分布式的协同作业。
通过以上例子,大家不难理解,中心化和分布式。
下面讲回区块链。首先明白几点。
第一,去中心化系统是分布式系统的一种,分布式系统的范围更宽一些。所以有人说“去中心化是分布式,分布式不是去中心化”,这种说法当然没有错,只是不够清楚。
第二,去中心化系统中可以有中心化应用,反过来也可以,中心化系统中可以有去中心化应用;
第三,去中心化和分布式都不是区块链的创造,在区块链诞生之前早就已经有了。
关于以上三点,下面会逐步展开并做出解释。
中心化的系统有哪些问题?
不像教科书一般一一列举,举几个简单的例子。
比如一个游戏里的游戏币通货膨胀非常严重,公司决定的,用户的建议是没有用的。除非决定不玩儿这个游戏,不然这种通胀是要忍受的。如果游戏公司突然改了其他关键的好玩儿的技能参数,这个用户也没有什么发言权,没有合理的渠道进行修改——你不能投票决定,除非你把游戏公司买下来(一部分),进入董事会去投票。
比如美国的量化宽松,很多人不满意,尤其是已经退休的老人,他们的钱购买力下降,变得不值钱了,但是,他们的意见没有用。同样,即使别的国家拥有很多美元,比如外汇储备,但是依然不能影响美国的量化宽松政策。除非选择放弃美元,钱不值钱的弊病是不能逃脱的。
去中心化:
很多区块链的拥护者,不满现在中心化的治理方式,渴望新的治理方式。于是有个所谓的去中心化。
去中心化不是说全自动化让机器决定一切,不能有人为的干预,也并不是说已经制定的规则不能修改,而是规则的修改需要用去中心化的方法来完成。区块链的世界里用挖矿投票,用持币者投票决定。这种投票的机制也就是所谓的共识机制。
为什么说分布式系统未必是去中心化的
分布式不一定是去中心化的,分布式系统即使运行在几十万台服务器上,也不一定是去中心化的,比如百度、谷歌的搜索引擎服务器,这些服务全部属于这些公司。分布式系统但是属于中心化机构,不是去中心化。
给大家出个题目:比特币出现的2009年1月份,是不是去中心化的?
不是,因为那时候就中本聪一个人在挖币,也就是在维护网络。去中心化的系统一定是分布式的。只运行在一台服务器上,这不是去中心化。
现在是,因为全球有足够多的节点维护网络。有足够的多的用户和开发者支持和维护这个系统。
分布式的平台上可以运行中心化的应用,可以运行去中心化的应用。
中心化的平台上可以运行分布式的应用,可以运行中心化的应用。
以Dapp为例,所谓的去中心化应用,目前大多数是有背后的公司实体进行运营,中心化的治理。再比如微软曾经允许用户用BTC购买windows系统,这是使用了去中心化的支付系统也就是btc的支付方式。如果淘宝、亚马逊等等允许用户使用比特币进行支付,也属于中心化的平台运行去中心化的应用。联盟链当然也属于分布式的应用,因为联盟链是几个几十个公司的机构所做出来的许可链,所以也是分布式的系统,但是严格意义上来讲算不上去中心化系统。
下面涉及一些计算机理论,分布式系统的知识,各位读者也可以深入了解下。
Eth和Btc的系统都是属于交易驱动分布式的状态机系统(state machine)。
这种状态机的模式的特点是系统中所有的机器重复做同一组操作,有一定的冗余,去维护系统的一致性。在区块链系统中,这种冗余是很大的。这样高的冗余度或者容错程度在之前是不常见的。
这不是分布式系统常用的工作模式。大多数的分布式系统,是每台机器做不同的工作,这样比单机速度要快。一台机器需要运行一个月的,三十台机器一起运行,可以一天搞定。这是理论上的线性加成,实际上因为任务切分,各个任务之间的通讯情况,然后汇总结构,可能中间损耗掉30% 40%的功耗,也就是一台机器工作一个月时间干的工作,需要30台机器协同工作的时间不是一天,可能是两天时间完成。但是,依然比一台工作能力要强。传统认为这样分布式系统才更加有意义。
状态机属于分布式系统的一种,但是状态机的模式并不完全一样,状态机首要保证的并不是效率,而是状态稳定一致。
简单说明就是:一堆状态机不是为了比一台机器快,是为了容错。
状态机最早的应用是在一些关键重要的任务处理上,比如股票交易,比如交通系统控制等,这些场景是要求必须无间断对外提供服务,不允许一分钟的宕机,需要好几台计算机同时操作,这样即使有一台机器坏了,别的立即能顶上。
脑洞:比如《三体》中的面壁计划之后,出现了“执剑人”,手上拿着一个按钮,一按下去,就可以同时毁灭三体和地球两个文明,这是一种威慑。背后运行的一定是状态机系统,为了保证状态稳定一致,不然,这个第一代执剑人“罗辑”先生,一按手上的开关,发现系统卡壳了或者没按开关,系统出错了以为按了开关,这麻烦就大了。
这个场景可以脑补到现实世界的核武器运行方式。不再赘述。

状态机系统中,随着接入机器的增加,效率不但不是线性增长的,反而比一台电脑处理还慢,因为要同步状态。这也是为什么有人说,比特币的全节点并不是越多越好。(全球约一万个比特币全节点,2020年02月08日下午是10766个)

从疫情防治讲解中心化、分布式、去中心化和《三体》中存在的状态机

传统利用状态机的应用场景里,机器的数目不会太多(通常是个位数),因为数目越多同步起来越慢。比特币上万个全节点同时操作,之前是没有存在过的。所以,去中心化和效率的矛盾,才会被人一直拿出来讲。
Eth和btc这类区块链系统不是分布式系统的常态,反而是特例,大规模计算服务不能使用区块链这样的状态机处理,不如用大平台提供的云服务。比特币系统的算力指的也不是云服务的算力,而是挖矿的算力。
希望这篇文章能为搞不清楚中心化、去中心化和分布式的伙伴儿解惑。
元宵节快乐。江湖一杯酒,加密二锅头。