区块链本质论

区块链被大家关注件好事情,但非常不希望看到各种区块链项目盲目上马,造成各种社会资源的浪费。区块链技术本身尚在发展阶段,还有很多核心技术问题有待突破,对区块链技术本质还充斥着各种不同的理解。后面几天我们将就区块链的计算本质,技术难点,业务调整,社会影响等方面和大家分享。

(3) 性能 : 吞吐量、确认延迟和状态容量

咱买个电脑,大家都知道要看处理器 (CPU) 的速度,每秒能处理多少指令;也会要看内存容量,这基本上决定了我们能同时开多少个应用,打开多大的文件并且不卡。区块链系统,也是类似,吞吐量类似于一台电脑的 CPU 处理速度,决定了每秒可以处理多少个交易;而状态容量类似于一台电脑的内存容量,决定了整个系统可以承载多少个用户 (地址) 在各个应用里面的状态。

有个额外的指标是确认延迟,这个源自一个很奇特的现象。区块链系统可以接受一个交易,但是没处理或者没处理完,就开始接受下一个交易了。这个时候你就会发现,例如每秒 100 个交易的处理吞吐量,并不是你发一个交易,1/100 秒之后这个交易就处理完,并且被确认了。通常每个交易会需要历经更多的时间,才最终得以确认。

比特币性能很弱鸡,大家都知道,大约平均每秒处理 7 个交易。每个交易仅包含几个大整数的加减法,如果单纯是计算这些交易,随便拿个笔记本每秒都能算上百万的交易。那为啥比特币这么慢呢?先说个结论,这个事情不能赖在共识算法头上,这不是 PoW 的问题。共识算法的事儿可以先看上一篇 :

王嘉平:简版 区块链本质论 (2): 共识本质 zhuanlan.zhihu.com简版 区块链本质论 (3): 性能本质之吞吐量

比特币慢,有人说是 PoW 的难度很高,要十分钟才算一个块,也有人说比特币需要大量的算力才行。这些其实都是误解,把因果搞反了。十分钟才出一个块,是因为协议就是这么定的,不让出太快。如果大家算力多了,出块出得快了。比特币网络的算力调整算法会自动加大 PoW 难度,使得出块速度始终保持在十分钟一块的样子。需要大量的算力,是因为大家都要抢着去参与比特币的这个共识过程,因为每抢到一次机会,奖励 25 个比特币呀,看了一下,今天 9000 多美元一个。

所以,就这样参与比特币共识的算力越来越多,PoW 的难度也越来越高,就是我们今天看到的状况。但是这个的 PoW 算力,只是在争抢出块机会,这个算力再大,也不会使得比特币处理交易的速度有丝毫的提升。比特币系统,吞吐量低的原因是因为,其最初上线的时候,顺应当时的底层互联网的通讯能力,设定了每十分钟出一个块,每个块大小为 1M 字节。然后每个交易差不到需要 200 到 300 个字节,然后综合起来就是这个大概 7 几个交易每秒的吞吐量了。

为什么比特币系统要这样设计呢?不能出块间隔小一点,或者每个块大一点吗?到底是什么被什么东西限制住了呢?答案是,

网络带宽从根本上限制了区块链的吞吐量

这就是为什么,我去年还看项目的时候,对于那些吹几十万几百万 TPS 的项目。我一般就问一个问题,你的系统跑起来需要多少带宽?要那么高的带宽,你就只能把所有节点放在一个机房里面,用局域网连起来,这不是区块链,这叫做云服务 .....

王嘉平:简版 区块链本质论 (1): 计算本质 zhuanlan.zhihu.com简版 区块链本质论 (3): 性能本质之吞吐量

咱开头第一篇就讲到,区块链是在一个松散分布的节点之间,接力执行计算的过程。那么,计算的过程要能被接力,那就意味着每个节点都需要获得这个计算的最新的上下文,最新的数据和状态。在区块链里面,具体的做法是,有节点出了一个块之后,必须要有足够的时间,让大部分其他参与者都同步到这个新的块,然后再出下一个块。就是因为这个原因,吞吐量会受到网络带宽的限制,不能太高,否则区块链网络就会无法达成共识的一致性。

然后,毕竟我们现在的互联网已经比起 10 年前要快不少了。所以,现在把比特币网络加快几十倍其实根本不需要什么算法的改进,改大块大小,改小出块间隔就可以轻松实现至少几十倍的吞吐量提升。但是如果要进一步提高,并且还要保证其去中心的程度,这就有很大的理论挑战了。

这里需要强调一下,去中心的程度和性能是有矛盾的。去中心的程度要求,尽量多的人可以参与到网络里面来,可以自己运行一个节点。那么,带宽要求就不能太高,要匹配互联网接入的平均带宽水平。为什么 DPOS(例如 EOS) 这么高吞吐量?因为它去中心的程度基本没有,无异于云服务,那么他就可以利用非常高的带宽,是普通互联网接入带宽的几千倍,那么吞吐量当然就轻松提升了。

随着吞吐量的提升,除了带宽,对每个节点的 CPU 处理能力,磁盘的读写能力也都会有更高要求。这里强调带宽,不仅仅是因为带宽是首要瓶颈,更是因为高带宽对去中心的程度有极大的伤害,因为高带宽的接入受到地理位置的限制,基本上只能在数据中心。而 CPU, 磁盘的升级,完全不受地理位置的约束。

后面几篇,我们继续聊性能的其他两个方面。这一篇的扩展阅读 :

王嘉平:区块链公链如何才能快起来 (一)zhuanlan.zhihu.com简版 区块链本质论 (3): 性能本质之吞吐量

作者简介
国际计算机网络系统顶会 NSDI 2019,发表了王嘉平博士团队关于高性能并行分片区块链系统的论文,这是中国人自主研发成果在区块链核心算法领域首次得到国际专家和同行的认可。

王嘉平博士原为微软研究院主管研究员,专注分布式系统,计算机图形学和视觉以及用于机器学习的 GPU 集群等领域的研究,有数十项研究成果发表于 ACM SIGGRAPH/ToG 顶级国际期刊,已授权的美国专利十余项。他师从沈向洋博士 (现微软全球执行副总裁),在中科院计算所获得博士学位。他的博士论文获得 2009 年度全国百篇优秀博士论文奖,是该年唯一一名计算机科学专业的获奖者。

来源链接:mp.weixin.qq.com