
Chapter Five
第5章 公链面临的技术挑战
5.1 区块链技术的不可能三角
5.1.1 CAP定理
计算机科学家埃里克·布鲁尔提出了关于分布式计算系统的一致性(Consistency)、可用性(Availability)、分区容错性(Partition-tolerant)的CAP定理。CAP定理证明,当网络存在分区时,一致性、可用性和分区容错性之间只能三取二。
先来解释三个名词:
1)一致性:统一的记录。
2)可用性:正常节点响应。
3)分区容错性:指的是网络中允许丢失从一个节点发送到另一个节点的任意数量的消息。
在网络分区发生时,两个分布式节点之间无法进行通信,那么我们对一个节点进行的修改操作将无法同步到另外一个节点,所以数据的“一致性”将无法满足,因为两个分布式节点的数据不再保持一致。除非我们牺牲“可用性”,也就是暂停分布式节点服务,在网络分区发生时,不再提供修改数据的功能,直到网络状况完全恢复正常再继续对外提供服务。或者为了保证可用性而牺牲数据一致性。
所谓区块链技术的不可能三角,是指在区块链公链中,很难同时做到既有很好的“去中心化”,又有良好的系统“安全性”,同时还能有很高的“交易处理性能”。其中“交易处理性能”也就是经常说的TPS(Transactions Per Second)——每秒处理交易的笔数(见图5-1)。

图5-1 区块链技术的“不可能三角”
接下来用CAP定理,来解释区块链不可能三角为什么不可突破。
1.一致性是安全性的必要条件
当系统中出现不一致时(两个节点记录的数据不一致),我们认定这样的区块链系统是不安全的。在这样的定义下,一致性是区块链系统安全的基本前提,区块链的安全性是比分布式系统的一致性更加严格的需求。
2.可用性是可扩展性的必要条件
可扩展性指的是每秒可以处理的交易量,高可扩展性即是实现每秒高频次的可读可写操作。在逻辑上,可用性是比可扩展性更基础的网络要求,不能实现可用性的区块链系统,是不能实现可扩展性的,即可用性是可扩展性的前提。
3.分区容错性是去中心化的必要条件
在真实分布式环境中,分布式系统必然存在分区,不可能保证系统中的每个节点都不会出现任何故障。也就是说,去中心化必定导致发生分区的可能,也就意味着分区容错性是实现去中心化的前提。
5.1.2 公链技术现状
目前最著名的三大公链是比特币、以太坊和EOS[1](详见本书第8章“热门公链对比解析”)。其他公链要么是模仿三大公链,要么是从三大公链分叉出来,在各方面都和三大公链很类似。因此我们主要观察三大公链就可以看到公链技术的现状。
1.比特币
比特币采用的是基于工作量证明的共识机制。在比特币发展初期,一台普通电脑就可以参与挖矿。但后来,随着币价的猛涨,挖矿变得有利可图,于是显卡挖矿出现,再后来,算力更强的ASIC矿机出现,并最终成为主要挖矿手段。普通电脑和显卡挖矿彻底成为历史。现在ASIC矿机的制造和生产几乎被比特大陆所垄断,而比特币全网的算力也几乎被几大矿池所垄断。因此比特币的“去中心化”在很多人看来已经名不符实。
在“交易处理性能”方面,比特币的TPS大概只有每秒七笔,已经完全不适合作为日常高频小额转账使用。正是如此低下的交易性能,导致比特币社区对比特币未来的发展产生了分歧。而这个分歧并没有得到妥善的解决,最终导致2017年比特币硬分叉出了比特币现金。
在安全性方面,比特币目前来说无疑是最好的。其全网算力一方面随着ASIC矿机自身的更新换代在不断提高,另一方面新矿机源源不断地加入也在持续增强全网算力。据测算,目前攻击比特币所需的代价是所有POW公链中最高的。
2.以太坊
以太坊也是基于工作量证明的共识机制。但它仍然可以采用显卡挖矿,因此算力垄断的情况没有比特币那么严重,所以在“去中心化”方面比比特币要好一些。以太坊未来将彻底转向POS共识,以解决算力垄断的问题。
以太坊的TPS比比特币稍微高一点,每秒大概7~15笔。但由于以太坊是智能合约平台,它的应用场景更复杂,相对比特币更容易发生拥堵。因此以太坊爆出的性能问题所受的关注度更高。也正因为如此,才有了后来备受期望和关注的EOS诞生。
以太坊在安全性方面仅次于比特币。据测算,目前攻击以太坊所需的代价仅次于比特币。
3.EOS
EOS一出现时,最大的卖点就是TPS高、交易性能强。现在EOS的真实性能虽然没有达到官方曾经宣扬的百万级,但在三大公链中是最高的,达到了3000~4000TPS。这个性能远远抛开了比特币和以太坊。
但EOS为了达到这样的TPS,在“去中心化”方面做出了巨大的牺牲。相对于比特币和以太坊全网上万个节点,它全网只有21个节点。因此在“去中心化”方面是三大公链中最受质疑的。
在安全性方面,由于EOS全网只有21个节点,因此比起攻击比特币或以太坊的几千个节点,攻击21个节点对黑客来说相对容易很多。所以在安全性方面EOS也是三者中最差的。
表5-1对三大公链的“不可能三角”进行了总结对比。
表5-1 三大公链技术的对比总结
