大家好,我是虞双齐,这篇文章是关于区块链共识算法系列课文章。上一篇文章《共识机制-Pow-算力与挖矿难度》中,讲解Pow算力概念。这篇文章是讲解去中心化概念以及PoW算力引发的中心化悲剧。
说到区块链,一个高频词是「去中心化」(decentralization),但这个词的定义却不清晰。
“去中心化”是区块链的一个特征,比特币依靠大量消耗哈希算力来维持比特币网络的去中心化。
那么,如何理解「去中心化」?并没有多少人能真正说清楚。网络上流行使用下面这三种结果来解释所谓的“去中心化”。
这张图实际展示的网络中各节点的连接关系,是一种网络拓扑图。试图用这三张图解释“去中心化”是无力的,对于深度理解“去中心化”没有本质帮助。
以太坊创始人Vitalik Buterin 写了一篇文章试图解释“去中心化”概念。他从软件角度,分三个维度进行讨论。而这个三维维度,也是判断一个东西是否是“去中心化”的三把尺子:
- 架构层: 在物理世界里,一个系统由多少台计算机组成?在这个系统运行的过程中,可以忍受多少台计算机的崩溃而系统依然不受影响?
- 政治层: 有多少个人或者组织,对组成系统的计算机拥有最终的控制权?
- 逻辑层: 从这个系统所设计的接口和数据结构来看,它更像一台完整的单一设备,还是更像一个由无数单位组成的集群?——这个维度可能比较抽象,不太好理解,我们可以用另一种比较简单的方式来做判断: 如果把这个系统分成两半,两部分里同时包含生产者和消费者,那么这两部分能继续作为独立单元完整地运行下去吗?
对标比特币,比特币之所以被称之为去中心化是因为:
第一,架构层,交易清算是分散在比特币网络中的若干节点上,而不是依赖于某些中心化服务器。低于51%的节点故障,仍然不会影响比特币系统运行。
第二,政治层,关于比特币程序的重大修改,需要节点投票,才允许生效。
第一个去中心概念好理解,分布式网络在中心化程序中早已存在,如机器集群,异地灾备等。第二个去中心化,通过民主投票决策实现自治,不再有传统公司的CEO决策,决策权转移到网络中的所有节点。但政治层的去中心化,太理想主义,被现实欺负得惨不忍睹,这要从矿工说起。
在比特币创始人中本聪设计比特币时,最开始的设想是1 CPU 1算力,每个人只要拿个电脑就可以来参与挖矿。中本聪就是用他的电脑挖出了比特币的创世区块,并获得了50个btc的奖励。但随着比特币价值被认可,从1万个比特币兑换25美元的披萨券开始,比特币的价格不断攀升。市场认为有利可图,大量新算力涌进比特币挖矿中来,挖矿竞争变得越来越激烈。
早期通过CPU挖矿,后面开始使用GPU,后续已经发展到专业为挖矿设计的ASIC芯片。随着比特币价格的上涨,更多的人参与挖矿,节点竞争非常激烈,全网算力猛涨。结果是每挖出一个区块的难度越来越大,并且还需要在很多矿工之间进行竞争,意味着即便挖出一个区块,也不一定成为主链上的一个区块。长时间的碰撞能够撞出一个有效区块,那就是撞大运了。1万个矿工,竞争一个区块,最终只有一个幸运矿工能独享区块比特币奖励,其他矿工则颗粒无收。全网算力过高时,矿工的收益全凭靠天吃饭。 糟糕的是,即使你的矿机算力非常高,但别人有比你有更强悍的矿机,算力更高。可能的结果是你一个月都没能获得区块奖励,无收入。
怎么保持稳定收益,降低喝西北风风险了呢?英国人为了降低出海风险,催生了保险公司。在全网算力提升到单个节点或者少数节点无法在比特币网络中获得区块奖励时,促使一些极客,开发出一种可以将少量算力合并联合运作挖矿的方法,使用这种方式连接起来的节点,便组成了一个矿池,抱团取暖。
下图是2018年比特币矿池算法份额,比特币算力完全在矿池手中。
矿池的出现,使得比特币在政治层的去中心化被打破。
ghash.io成立于2013年7月份,在其鼎盛时期(2014年7月份),该矿池的算力一度超过了全网51%的临界值,当时其也引发了社区对51%攻击的担忧,在社区的强烈呼吁下,部分矿工撤离了ghash.io矿池,才使其回落到全网42%算力的水平。51%的算力攻击,使得比特币自治能力被集中到一个或几个算力集团手中,趋向中心化。
另外一个最具代表的例子是比特币扩容之争,为何预设的民主决策自治未能让扩容方案成功实施。
从软件角度上,是由比特币程序的升级投票逻辑所制衡,简单地将当比特币程序出现Bug或者需要添加新功能时,由比特币的核心开发组 Bicoin core,简称 Core 组提出解决方案,节点通过区块头标记投票的方式进行,而有能力在区块头标记投票的也只有矿工(矿池)。从这里我们可以得出四点结论:
- 比特币程序修复Bug或修改协议由 Core 开发组决定。
- 比特币程序更新是否生效由矿池决定。
- 不是拥有比特币就有投票权。
- Core开发组和矿工可以联合修改程序。
从这里不难看出,比特币协议是可以修改的。如果有一天,没有区块奖励,只有交易手续费时,Core 开发组同矿工们协商:以后得交易必须支付手续费2.5‰给矿工,1‰给Core开发者。如果双方同意,这是可以成为现实的。所以只有 Core开发组和矿工不联合作恶,比特币才能保持稳定性。
再回到比特币扩容之争,矿池和Core开发组斗智斗勇,一系列的扩容方案均未被成功实施。这里最大的原因是矿池和Core开发组这两个中心化间的协作无法达成共识,各自为各自的利益考虑。但遭殃的是用户,用户没有参与权,只有使用权。大量交易堵塞,交易迟迟未能被确认,交易费上升。
讲到这里,你也许有了自己的结论。没错,比特币程序决策权被少数人(矿池和Core开发者)把持,未能实现完全去中心化的。悲剧的始作俑者是PoW算力,成也PoW败也PoW。