0. 缘起
在一个夏日的下午,我们两人坐在咖啡馆里海阔天空地讨论区块链技术。我们发现讨论的焦点就在于区块链的效率。这种对于效率的考量,主要是与现有基于中心化云计算模式构建的标准互联网架构进行对比。进一步深入下去,我们觉得这是一种去伪存真的过程,会影响到未来区块链和数字资产技术应用落地的发展。
与区块链行业火热不同的是,作为一个普通的用户,似乎除了比特币、以太坊钱包之外,依然用不到什么真正基于区块链的产品。为此,区块链为普通用户到底能带来什么?这是值得我们所有人去深刻反思的。也许,我们未必需要用传统互联网产品的标准去要求这些分布式新技术。然而,面向未来可能出现的各种技术融合的可能,与传统方法和技术的对比,有利于我们梳理清楚这些新兴技术的性能特点与发展趋势,进而实现“区块链的可信与效率”二者兼顾。
1. 问题与挑战
1.1 区块链技术真的有效率吗?
区块链是一种区别于传统集中化分布式计算构架的技术。该技术反其道而行之,采用了点对点的网络通讯模式,通过冗余的区块链数据存储模式和共识计算过程,去除了物理上的中心化。这种技术确实带来了焕然一新的网络结构模式,
但是,另一方面,区块链的架构模式,让人们对其实际应用中的效率产生了疑问: 区块链的存储和计算,会有多个节点来做重复的存储和计算,会不会效率较低并且费用昂贵?特别是与中心化分布式计算技术比较,可以看到,去中心化的方案千好万好,最不好的一点就是:不经济和低效。目前,在以太坊及之后的一些区块链里,秒级成交已经成为了宣传点之一。为此我们就具体的情况从网络,账本存储,共识算法,智能合约等效率维度进行对比,提出挑战,引发思考,从而与业界同仁一起去追寻更好的答案。
为了便于进行实际的横向对比,我们取2018年8月15日的主流区块链运行数据做一个比较。在下文中,我们选取了目前区块链中最主流的比特币(BTC)和以太坊(ETH),有较长历史的莱特币(LTC),以及新近得到普遍关注的加密币种达世币(DASH)等4个区块链公链项目,进行了专门的比较。
1.1.1 典型区块链的计算效率
2018年8月15日这一天,这四种公链基本的算力相关数据如下表所示。
该表中,“H/s”表示每秒钟hash函数的计算次数,前缀“T”表示10的9次方(即10亿),“P”表示10的12次方(即1万亿),”E“表示10的15次方(即1千万亿)。所以,基本看到为了维持整个公链的共识计算效果,各个公链的计算都是非常惊人。
接下来,我们将以以太坊为例,仔细分析一下以上算力是否经济,效率如何:
(1)以太坊的共识计算,每年耗电48亿元
由于各种公链往往采用各自不同的共识计算方法,进而会采用不同的hash计算方法,表面上难以直接横向比较各个公链的计算效率。所以,有一个变通的方法是估算在同一类硬件中的执行效率,从而有直观的对比。例如,以ETH为例,我们可以假设全网采用了较为优化的AMD 580系列显卡。以此为基准,我们可以进行一个大概的估算。由各个数据来源报告所知,该显卡的实际计算能力为30 MH/s,即每秒钟计算“Ethash”的hash函数约3千万次,实际消耗功率为 0.135 KW/h(即用电单位"度")。为此,简单可以估算出ETH全网约需要8,100,000张显卡。而主流的ETH矿机为8块显卡的配置,所以估计需要约 1,000,000台的以太坊显卡矿机。进一步估计出,ETH公链的小时耗电数为,1,093,500 KW/h,而每天(即24小时)需要耗电 26,244,000 KW/h,来维持全网的运行。大致按照每度电0.5元的费用核算,每天需要的电费成本估算为13,122,000元,即每天千万元级别以上的成本。而一整年更将耗资47.9亿元之巨。从中可以看出,要维持区块链的公链系统———这种去中心化公共设施的计算,能源消耗惊人。
(2)以太坊的硬件设备投入与维护,每年硬件设备成本131亿元
从公链系统所需投入的设备成本考虑,目前以太坊主流显卡矿机,包含8块显卡,其成本大约为2.5万元。那么,据此估算总共的网络需要250亿元的设备投入。按照三年折旧来换算,估计为83亿元的每年费用。如果不考虑网络带宽成本,加上维护费用则进一步可以推算,一年的以太坊公链系统设备成本在131亿元。因此可知,目前公链的设备投入与维护成本非常高。
(3)交易成本:以太坊VS中心化方案=52:0.000013
交易费用上,以太坊的交易成本也远远高于中心化解决方案。据 https://etherscan.io/ 数据统计,从2017年9月1日至2018年9月1日,总共发生了约2.5亿笔交易。所以根据上述年度成本折算,则平均每笔交易的成本在52元。与目前银行转账的费用相比,没有任何优势。就国内银行的普遍情况看,各行的柜台转账,普遍按照汇款金额的0.5%至1%收取手续费,50元封顶。而网银和手机转账是免费的。因而,除非是高于5000元以上的大额度转账,用区块链进行小额度转账有点的得不偿失。当然,在某些特殊情况下,例如跨境跨行的数字货币转账,由于不需要跨各国银行系统进行复杂的兑换和结算,区块链方案的成本和转账时间会优于传统方案。
另一方面,以全年2.5亿笔的交易量推算,以太坊网络平均每秒钟约执行8笔左右的交易,即8TPS。在基于工作量证明的去中心化方案中,近百万台矿机仅是在为了获得记账权,就消耗了大量的电力,并没有对记账本身带来多大帮助。而上万台全帐节点也是在任一时刻,只有一个节点在记账。对比传统的中心化解决方案,要达到10TPS左右的交易量,用一台中等性能的服务器即可做到,其成本约为每年1万元。最后换算成交易成本,仅为0.000013元,这是值得深思的数字。
(4)转账费用:以太坊VS中心化方案=0.6:免费
与此相关的是,矿工费太贵。如果你要让一笔以太坊交易成立,是需要花费一定的矿工费的。所谓矿工费,对于以太坊公链来说,就是指交易发起者需要燃烧一定的燃料Gas,但是Gas的费用是用以太坊结算,用于奖励那些主动传播这笔交易的人。而如果你想要在以太坊上实现“秒级信息传递”,高额的矿工费自然是少不了的。例如,据最近区块链浏览器应用 https://etherscan.io/txs 中的数据,每笔普通速率的以太坊公链交易矿工费大约在0.0005ETH左右。按照目前1个ETH兑换约1200元(2018年9月初的价格)换算,即0.6元左右。所以与目前银行转账的费率相比,并没有太大的优势。因为大多数小额的银行转账是免费的。如果想做到高速转账,每笔会上涨到0.003ETH左右,即3.6元左右,甚至更高。
幸运的是,目前以太坊等数字货币价格在历史的低位,所以转账费率相对便宜。但在牛市行情下,交易火爆时,以太坊的交易费率也会水涨船高。例如,2018年初以太坊曾上涨到1个ETH兑换约10000元左右。那么在那时,以人民币作为结算单位,交易费率是现在费率的10倍,远远高于目前中心化的解决方案。
(5)全网有效记账计算能力仅相当于单机全帐节点
以太坊全网庞大的硬件设备(每年131亿元)支持的巨大算力(244TH/s)和巨大的电力消耗(每年48亿元)仅仅是为了达成POW共识,获取记账权,全网有效计算能力(其有效记账算力)仅相当于单机全帐节点(一台普通的服务器)。
1.1.2 网络传输的效率
(1)区块链的秒级成交:“能做到”和“做到要多少成本”不是一个概念
目前,在以太坊及之后的一些区块链里,秒级成交已经成为了宣传点之一。但“能做到”和“做到要多少成本”不是一个概念。
(2)区块链的网络延迟:微博、微信等高吞吐dapp时间线错乱
网络延时也是一个大问题,因为P2P网络不存在一个稳定的中转服务器,因此每次发送信息都是通过多个作为用户的节点中转送达,在信息传递上很难满足即时传输。假如,我们试图传播专题文章类型的文字内容,则所需的同步速度可以很慢。用户可能发布之后几个小时后,才会被人看到。然而,假如我们是要实现微博、微信这种需要高频信息发布和接收的dApp时,就会出现一些严重问题。一个首要问题是:时间线错乱,或者说数据异步,一条微博下面的评论经常出现前后时间线错乱。举个例子,张艺谋新电影《影》首映礼,邓超在9.29发了条区块链微博吆喝:“明天《影》首映,欢迎来我们的首映礼,让你看见不同的邓超!”邓超粉丝有个叫凉凉的看到微博,屁颠屁颠第二天赶去大剧院发现首映礼两天前就结束了,于是凉凉。这就是因为评论者发布的时间虽然早,但同步的时间慢,同步需求强的高频信息应用采用网络延迟的区块链则是杀鸡焉用牛刀的试验。
若用以太坊的公链作为观察对象,全网大约有10000台左右的全量节点机器。如果以每次每台机器向10个节点同步数据,估计在4次跳转后可完成全网同步。以太坊现在的平均区块大小在网络传输 22KB左右。按照每次同步时间500ms计算,估计的同步时间在2秒以内完成。据此,整个网络的同步通讯工作,干得并不坏。但是,对于实际所需大吞吐量的交易场景来说,还是显得过于低效。由前可知,实际上以太坊的公链是在处理每秒10笔左右的交易,本来中心化方案大可以简化为数台中等性能的机器,即能完成同样的业务。
在例如比特币的公链网络实际运转过程中,可以测算出,1KB长度的消息,在1秒内完成95%的传播。而1MB长度的消息,则需要1.5分钟,才能完成95%的传播。所以,从实际交易能力来看,当采用较大尺寸的区块时,网络传输效率下降非常快。